有没有办法告诉python检查它是否是一个变量

时间:2015-03-02 05:38:27

标签: python

说:

def sumer(num1,num2)
    if num1 or num2 is a non-defined variable
       print("variable isnt defined")

我怎么能以实际有效的方式写出来?

编辑:我应该澄清一下,如果定义了动作,我希望python继续执行。

3 个答案:

答案 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页面可能是一个很好的起始参考地点:

https://docs.python.org/2/tutorial/controlflow.html

答案 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是一个包含要查找的名称的字符串变量。