2016-08-22 15 views
6

Mam funkcję, która otrzymuje pewne argumenty, plus kilka opcjonalnych argumentów. W nim, podjęte działanie jest zależne od tego, czy opcjonalny argument c została wypełniona:FutureWarning przy porównywaniu obiektu NumPy z "Brakiem"

def func(a, b, c = None): 

    doStuff() 

    if c != None: 
     doOtherStuff() 

Jeśli c nie jest przekazywana, to działa dobrze. Jednak w moim kontekście, jeśli czostanie przekazana, zawsze będzie to tablica numpy. I porównując numpy tablic do None daje następujące ostrzeżenie:

FutureWarning: comparison to `None` will result in an elementwise object comparison in the future. 

Więc, co jest najczystszym i najbardziej ogólny sposób, by sprawdzić, czy nie c została podjęta lub nie bez porównania do None?

Odpowiedz

11

Zamiast tego użyj if c is not None. Oprócz uniknięcia ostrzeżenia, jest to generally considered best-practice.

+0

Wystarczy zauważyć, że w oryginalnym kontekście "jeśli c nie jest Brak:" jest właściwe. –

+0

Dzięki Tim - zaktualizowany. – jakevdp

Powiązane problemy