gpt4 book ai didi

python |脚本执行后如何使局部变量成为全局变量

转载 作者:太空宇宙 更新时间:2023-11-04 11:05:23 27 4
gpt4 key购买 nike

这是代码。我需要做的是找到一种使 i 全局化的方法,以便在重复执行时 i 的值将递增 1,而不是每次都重置为 0。 main 中的代码来 self 嵌入“main”中的另一个脚本,以便跟踪功能起作用。这一切都是通过 Java 完成的。

from __future__ import nested_scopes
import sys
import time

startTime = time.time()
timeLimit = 5000
def traceit(frame, event, arg):
if event == "line":
elapsedTime = ((time.time() - startTime)*1000)
if elapsedTime > timeLimit:
raise Exception, "The execution time has exceeded the time limit of " + str(timeLimit) + " milliseconds. Script will now terminate"
return traceit

sys.settrace(traceit)
def main______():
try:
i+=1
except NameError:
i=1
main______()

最佳答案

不幸的是,您对问题进行了大量编辑,以至于人们对它的回答显得荒谬。

有多种方法可以创建函数范围内的变量,其值在调用之间保持不变。它们都利用了函数是一流对象这一事实,这意味着它们可以具有属性。例如:

def f(x):
if not hasattr(f, "i"):
setattr(f, "i", 0)
f.i += x
return f.i

还有一种技巧是使用列表作为参数的默认值,然后在调用函数时从不为参数提供值:

def f(x, my_list=[0]):
my_list[0] = my_list[0] + x
return my_list[0]

...但我不建议您使用它,除非您了解它为何有效,甚至可能不了解。

关于 python |脚本执行后如何使局部变量成为全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1579996/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com