2017-09-21 5 views
-1
def send_ivr_calls(sp_orders, base_url, api_key, extra_data): 
    for contact in sp_orders: 
     if len(contact) == 10: 
      contact = '0'+contact 

File "views.py", line 43, in calls if len(contact) == 10: 
TypeError: object of type 'NoneType' has no len() 

Wie kann ich überprüfen, ob die sp_orders Liste keine None s enthält?Objekt vom Typ 'NoneType' hat keine len():

Antwort

3

Try this:

def send_ivr_calls(sp_orders, base_url, api_key, extra_data): 
    for contact in sp_orders: 
     if contact and len(contact) == 10: 
       contact = '0'+contact 

Dies ist gewährleistet, Kontakt nicht None ist, bevor Sie versuchen, ihre Länge zu erhalten. Kredit an @Moses Koledoye für das Aufzeigen von Kurzschlüssen.

+2

Warum nicht eine * if * -Klausel und Kurzschluß mit 'and' verwenden. Obwohl der Parser das Problem sehr wahrscheinlich beheben wird, ist dies wahrscheinlich kein großes Problem. –

+3

'wenn Kontakt und len (Kontakt) == 10' wird nicht brechen. Wenn der Kontakt * falsy * ist, wird seine Länge niemals überprüft. –

+0

@Kyle Higginson, [guter Thread zum Kurzschließen] (https://StackOverflow.com/Questions/2580136/does-python-support-Short-circuiting) – CommonSense

1
if contact is not None and len(contact) == 10: 
    contact = '0'+contact 
Verwandte Themen