说:
def sumer(num1,num2)
if num1 or num2 is a non-defined variable
print("variable isnt defined")
我怎么能以实际有效的方式写出来?
编辑:我应该澄清一下,如果定义了动作,我希望python继续执行。
答案 0 :(得分:2)
在你给出的例子中
def foo( var1 = None, var2 = None ):
if var1 is not None: ...
if var2 is not None: ...
请注意,它们将始终按定义,因为它们位于函数签名中。您要检查的是它们是否提供,这就是上面的代码所做的。
在上面的示例中,我使用了“is”而不是“==”。这是一个首选项(String comparison in Python: is vs. ==),但我喜欢它,因为“==”可能会抛出一个异常,比如一个numpy数组
如果使用了变量名,则检查副作用是非常奇怪的做法,但可以使用locals()和globals()来完成,如其他答案所示。更多的pythonic将是鸭子类型并覆盖你的轨道例外。如果您不想明确检查参数是否已通过,这通常是可行的方法。
另一种方法是使用** kwargs或可变长度关键字参数。考虑:
def foo( **kwargs ):
if 'my_variable_name' in kwargs.keys(): ...
也会完成任务。
在控制流上阅读python页面可能是一个很好的起始参考地点:
答案 1 :(得分:1)
在你的函数内部尝试检查它是否存在
try:
num1
except NameError:
print "num1 does not exists"
else:
print "num1 exists"
try:
num2
except NameError:
print "num2 does not exists"
else:
print "num2 exists"
答案 2 :(得分:1)
另一种不依赖例外的方式:
if num1 in locals() or num1 in globals():
print('Exists')
假设num1是一个包含要查找的名称的字符串变量。