基本上我有一些我不想预先初始化的变量:
originalTime = None
recentTime = None
postTime = None
def DoSomething ( ) :
if originalTime == None or (postTime - recentTime).seconds > 5 :
...
Run Code Online (Sandbox Code Playgroud)
我在if上遇到编译错误:
UnboundLocalError: local variable 'originalTime' referenced before assignment
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,所有变量都有不同的关系,要么必须设置正确(时间,时间+ 5等),要么根本不设置,但我不想将它们设置为预先计算的值,只需将它们声明为None即更轻松.
有任何想法吗?
AFo*_*lia 15
我需要纠正Jarret Hardie,因为我没有足够的代表发表评论.
全球范围不是问题.Python将自动在封闭范围内查找变量名称.唯一的问题是您想要更改值.如果您只是重新定义变量,Python将创建一个新的局部变量,除非您使用global关键字.所以
originalTime = None
def doSomething():
if originalTime:
print "originalTime is not None and does not evaluate to False"
else:
print "originalTime is None or evaluates to False"
def doSomethingElse():
originalTime = True
def doSomethingCompletelyDifferent()
global originalTime
originalTime = True
doSomething()
doSomethingElse()
doSomething()
doSomethingCompletelyDifferent()
doSomething()
Run Code Online (Sandbox Code Playgroud)
应输出:
originalTime is None or evaluates to False
originalTime is None or evaluates to False
originalTime is not None and does not evaluate to False
Run Code Online (Sandbox Code Playgroud)
我再次警告说这是糟糕的设计.
你的代码应该有效,我猜它是在一个函数内部,但originalTime是在其他地方定义的.此外,它是一个好一点的说originalTime is None,如果这是你真正想要的,甚至更好,not originalTime.
| 归档时间: |
|
| 查看次数: |
59295 次 |
| 最近记录: |