我有一个带有多个参数的函数,其中一些参数应该是可选的。我希望参数能够使用numpy数组。如果给出参数,则在调用函数时,我想执行操作。 我正在尝试使用与此类似的东西(实际操作更复杂):
def func(a, b = None, c = None):
a*2
if b != None:
b*2
if c != None:
c*2
这很有效,只要我不将数组传递给这些可选参数。当我为b或c传递数组时,如果没有if b != None
或any()
,则all()
无效。如果我更改它,它在使用所有可选参数时都有效,但如果不使用它们则不再有效。
有没有办法使用某些东西代替None
,这样我就可以使用if语句作为默认值/对象以及传入函数的数组。
它应该与此类似(与None
不同):
def func(a, b = None, c = None):
a*2
if b.all() != None:
b*2
if c.all() != None:
c*2
我还要感谢任何更好的方法来简单地询问是否为函数提供了可选参数。
答案 0 :(得分:4)
此处不要使用!=
;您正在测试数组的所有值是否不等于None
。相反,使用is
身份测试:
if b is not None:
# ...
is
和is not
不会在数组中广播。
在测试is
时,总是使用is not
和None
,因为它保证是单身。