Python处理未声明的变量

alp*_*ric 0 python variables declaration

在Python中,可以避免变量(预)声明以避免NameError:名称'c'未定义:

a=5
if a==7:
    c=10
if c: print c
Run Code Online (Sandbox Code Playgroud)

在最后一行,如果c:只是验证变量' c '是否不是None.什么可用于检查'c'变量是否存在(或预先声明)?

Mar*_*ers 7

当然,None首先分配给它:

a = 5
c = None
if a == 7:
    c = 10
if c:
    print c
Run Code Online (Sandbox Code Playgroud)

NoneFalse在布尔上下文中进行测试,因此if c:仍然可以像编写的那样工作.

您还可以捕获NameError异常:

try:
    print c
except NameError:
    pass
Run Code Online (Sandbox Code Playgroud)

或使用globals()locals()功能:

if 'c' in locals():
    # in a function

if 'c' in globals():
    # outside a function
Run Code Online (Sandbox Code Playgroud)

但这只是简单的丑陋和不必要的.


Jay*_*hik 6

你可以捕获异常.

a = 5
if a == 7:
    c = 10
try:
    print c
except NameError:
    pass
Run Code Online (Sandbox Code Playgroud)