Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python“;常数;在每次定期运行中重新申报_Python - Fatal编程技术网

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,为什么不把
路径
作为参数传递给
函数
?这作为一个答案很糟糕-如果你把它作为一个注释发布就可以了。这作为一个答案很糟糕-如果你把它作为一个注释发布就可以了。