我知道我必须使用 global 关键字来访问变量,但我的问题是 为什么它不能在函数内部使用?
source = "C:/ALL IN ONE/Test File"
temp = "C:/ALL IN ONE/Temp Folder"
num_files = 0
def sort():
if not os.path.exists(temp):
os.makedirs(temp)
for folder_path, folder, files in os.walk(source):
for file in files:
num_files += 1 # I can't seem to access the variable "num_files" outside the function
if file.endswith("txt"):
pass
答案 0 :(得分:1)
您在函数中定义变量 num_files = 0
def sort():
global num_files
# rest of your code
,如下所示:
num_files += 1
在不将其声明为全局的情况下,要执行基本上是 num_files = num_files + 1
的 num_files
,该函数会搜索已初始化的局部变量 UnboundLocalError: local variable referenced before assignment
的声明以访问其右侧的值您的作业的一部分,但没有,因此它引发了 Weight:
异常。
答案 1 :(得分:1)
这是scope的问题。您的变量 num_files
实际上在 global
范围内,但是一旦您打开一个函数,您就会离开全局范围。在这种情况下,函数内部的变量是函数 sort
的局部变量。一定要从 globabl 范围接收您的变量,正如您已经提到的那样,您需要关键字 global
。