gpt4 book ai didi

函数中的Python全局变量为空

转载 作者:行者123 更新时间:2023-11-28 22:40:16 28 4
gpt4 key购买 nike

所以我有几个全局变量:directory_namefile_list

它们在顶部定义,然后我在 main 中给它们赋值。我需要在名为 checkDirectory(blocknum) 的函数中使用它们的值。如果我在调用函数之前打印它们的值,它们是正确的,但在函数中它们是空的。这是一些代码:

file_list = []
directory_name = ""

def checkDirectory(blocknum):
global directory_name
global file_list
directory = tokenize(open(directory_name + '/' + file_list[blocknum], 'r').read())

main():
try:
directory_name = sys.argv[1]
if not os.path.exists(directory_name):
print("This is not a working directory.")
return
except:
directory_name = os.getcwd()

files = os.listdir(directory_name)
file_list = sorted(files, key=lambda x: int((x.split("."))[1].strip()))
....
checkDirectory(26)

这是一个基本的 100 行脚本,我可以传入变量,但我必须为三个或四个递归函数执行此操作,所以我不想每次都这样做。

最佳答案

您在 main 函数中隐藏了 directory_namefile_list。由于这些变量在该范围内是未知的,因此它们是在本地创建的。为了对全局变量进行操作,您还需要在 main() 中将它们声明为全局变量:

file_list = []
directory_name = ""

def checkDirectory(blocknum):
global directory_name
global file_list
directory = tokenize(open(directory_name + '/' + file_list[blocknum], 'r').read())

main():
global directory_name
global file_list
...

请记住,如评论中所述,使用全局变量不是好的做法,从长远来看可能会导致代码错误(就不可读/不可维护/错误而言)。

关于函数中的Python全局变量为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33838493/

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