有没有一种方法,我可以告诉Python来检查它是否是一个变量
说:有没有一种方法,我可以告诉Python来检查它是否是一个变量
def sumer(num1,num2)
if num1 or num2 is a non-defined variable
print("variable isnt defined")
我怎么能写在这样一个taht实际工作?
编辑:我应该澄清,我希望python进行一项行动,如果它被定义。
你的函数的尝试里面检查它是否存在不依赖于异常
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"
'num1'和'num2'将始终存在,因为它们是函数定义的一部分。 – 2015-03-02 05:54:19
恩替代方法:假设NUM1
if num1 in locals() or num1 in globals():
print('Exists')
是一个包含字符串变量名来寻找。
'num1'和'num2'将始终存在,因为它们是函数定义的一部分。 – 2015-03-02 05:54:06
我认为num1是一个包含变量名称的字符串,用于查找。否则你是正确的。 – Marcin 2015-03-02 05:55:51
在这个例子中你给
def foo(var1 = None, var2 = None):
if var1 is not None: ...
if var2 is not None: ...
注意,他们将永远是定义,正如所写的,因为他们在函数签名。你要检查的是他们是否提供,这是上述代码的作用。
在上面的例子中,我用“is”而不是“==”。这是一个首选项(String comparison in Python: is vs. ==),但我喜欢它,因为“==”可能会抛出一个异常,例如使用一个数组numpy array
如果已经使用变量名,那么选择手动操作是非常奇怪的做法,但可以通过使用locals()和globals()完成,如其他答案中给出的。更多的pythonic将会是duck-type,并且会在例外情况下覆盖你的轨道。如果您不想明确检查参数是否已通过,那么这往往是顺其自然的方式。
另一种方法是使用** kwargs或可变长度的关键字参数。考虑:
def foo(**kwargs):
if 'my_variable_name' in kwargs.keys(): ...
也会完成任务。
读控制流蟒页面可能是一个很好的起点参考地点:
没有,NUM1和NUM2肯定会在函数体中定义的,因为它们的参数。您可以检查它们是否为None,但是... – 2015-03-02 05:41:48
将它们分配给try-block中的自己 – motoku 2015-03-02 05:42:54