所以,我有一对夫妇的全局变量:directory_name和file_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)
Run Code Online (Sandbox Code Playgroud)
这是一个基本的 100 行脚本,我可以传入变量,但我必须为三个或四个递归函数执行此操作,因此我宁愿不必每次都这样做。
你正在阴影directory_name和file_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
...
Run Code Online (Sandbox Code Playgroud)
请记住,正如评论中提到的,使用全局变量不是好的做法,从长远来看可能会导致错误的代码(在不可读/不可维护/错误方面)。
| 归档时间: |
|
| 查看次数: |
4657 次 |
| 最近记录: |