gpt4 book ai didi

python - 当我在程序末尾定义全局变量时,我可以在代码开头使用它吗?

转载 作者:太空宇宙 更新时间:2023-11-03 15:53:38 27 4
gpt4 key购买 nike

我正在使用的代码如下所示:

import os.path

def def1():
global filename
if os.path.isfile(filename+ ".txt") == True:
print ("Filename exists")
if os.path.isfile(filename+ ".txt") == False:
print("Filename dosent exist")

def def2():
global filename
filename = input("Please input the name if the file you want to see exists")

def Main():
def1()
def2()

Main()

该代码的作用是检查文件是否存在,用户可以输入他/她想要检查的文件的名称。该代码将在更大的代码文件中使用。我无法理解为什么运行代码时会出现此错误:

Traceback (most recent call last):
File "/Users/Sid/Desktop/existfiletest.py", line 18, in <module>
Main()
File "/Users/Sid/Desktop/existfiletest.py", line 15, in Main
def1()
File "/Users/Sid/Desktop/existfiletest.py", line 5, in def1
if os.path.isfile(filename+ ".txt") == True:
NameError: name 'filename' is not defined

我已在 def2() 中将变量“文件名”定义为全局变量,但我通过调用 def1() 来启动程序。变量“filename”是全局变量,所以我不明白为什么它不能在 def1() 中使用。而且,如果有人说先调用 def2(),是的,这是可行的。不过,我想知道在定义变量之前是否可以使用它,因为我的较大代码中就是这种情况。

提前致谢。

最佳答案

对答案进行排序:

替换:

    def Main():
def1()
def2()

    def Main():
def2()
def1()

您的错误不是因为您在文件的前面定义了全局变量。但是,通过首先调用 def1,您已使该变量处于未定义状态。所以你必须先调用def2来初始化并给它一个值。

其次,您不需要执行两次 if 测试:

 def def1(filename):
if os.path.isfile(filename+ ".txt") == True:
print ("Filename exists")
else:
print("Filename does not exist")

关于python - 当我在程序末尾定义全局变量时,我可以在代码开头使用它吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41006702/

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