Python“;常数;在每次定期运行中重新申报
如果在周期脚本中我有一个“常量”变量,并且每次运行时都重新声明它,是否有任何问题Python“;常数;在每次定期运行中重新申报,python,Python,如果在周期脚本中我有一个“常量”变量,并且每次运行时都重新声明它,是否有任何问题 #!/usr/bin/env python PATH_PATTERN = '/home/%s/config.xml' PATH = None def periodic_execution(function): PATH = PATH_PATTERN % get_user() interval_in_sec = 1000 threading.Timer(interval_in_sec,pe
#!/usr/bin/env python
PATH_PATTERN = '/home/%s/config.xml'
PATH = None
def periodic_execution(function):
PATH = PATH_PATTERN % get_user()
interval_in_sec = 1000
threading.Timer(interval_in_sec,periodic_execution,[function]).start()
function()
# in function i use the PATH variable
def main():
periodic_execution(tasks)
if __name__ == '__main__':
main()
我知道常量不会是常量…您是否也查看了Python中的关键字global?看这个。这是必需的,因为您更改了函数中的变量。您是否也查看了Python中的关键字global?看这个。这是必需的,因为您更改了函数中的变量。当心!在显示的代码中,
PATH
变量是一个全局变量,但在periodic_execution
中,您在使用PATH
之前将其赋值给PATH
,而不将其声明为global
=>Python实际上在函数中创建了一个局部路径变量,并保持全局不变,这当然不是您所期望的
你应该写:
def periodic_execution(function):
global PATH
PATH = PATH_PATTERN % get_user()
更改全局变量
但这绝不是一个常数。当然,即使可以构建只读属性,也不能在Python中声明真正的常量。当心!在显示的代码中,
PATH
变量是一个全局变量,但在periodic_execution
中,您在使用PATH
之前将其赋值给PATH
,而不将其声明为global
=>Python实际上在函数中创建了一个局部路径变量,并保持全局不变,这当然不是您所期望的
你应该写:
def periodic_execution(function):
global PATH
PATH = PATH_PATTERN % get_user()
更改全局变量
但这绝不是一个常数。好吧,你不能在Python中声明真正的常量,即使你可以构建只读属性。那么它就不再是常量了……请给出一个小的代码示例来说明你的意思。您好@tmsblgh,这种问题在这里可能是离题的,因为您的代码是有效的,而且问题本身主要是基于观点的。试试@PauloScardine:code不起作用,因为他忘了声明变量
global
。我不认为codereview的研究员主要喜欢基于意见的问题…全局可变变量是不好的juju,为什么不把路径
作为参数传递给函数
?那么它就不再是常数了…请给出一个小的代码示例来说明你的意思。Hi@tmsblgh,这类问题在这里可能是离题的,因为您的代码是有效的,而且问题本身主要是基于观点的。试试@PauloScardine:code不起作用,因为他忘了声明变量global
。我不认为codereview的研究员主要喜欢基于意见的问题……全局可变变量是不好的jujuju,为什么不把路径
作为参数传递给函数
?这作为一个答案很糟糕-如果你把它作为一个注释发布就可以了。这作为一个答案很糟糕-如果你把它作为一个注释发布就可以了。