Python 脚本中未找到来自不同 .py 文件中的 function() 的全局变量?
The global variable from a function() within a different .py file isnt being found within Python script?
当我使用 func.py 文件中的以下函数时,未找到 'myName' 变量。但是,如果我直接在 wordguess.py 中使用代码(而不是使用它的函数版本),就会找到变量并且它可以工作。
def enter_name():
global myName
# Ask the a player for their username
print("What is your username:")
myName = input()[0:6]
print("\n")
while len(myName)==0:
print("Please enter your username (Max 6 characters in length):")
myName = input()
print("Hi, " + str(myName) + ", welcome to the Word Guessing Game!")
print("\n")
然后我在主脚本中调用 func.enter_name()
。我正在使用 import func
来包含 func.py 文件。但是我收到以下错误:
File "wordguess.py", line 116, in main
outputWriter.writerow({'Name' : myName, 'Date' : dtFullDate, 'Attempts' : attempts, 'Word Chosen' : wordChosen})
NameError: name 'myName' is not defined
如果我改为将 enter_name() 中的代码直接粘贴到主脚本中,它似乎可以工作(我查看了 Using global variables in a function 但无法找出问题所在)。这是引发错误的代码:
with open('scoreboard.csv', 'a', newline='') as outputFile:
outputWriter = csv.DictWriter(outputFile, ['Name', 'Date', 'Attempts', 'Word Chosen'])
outputWriter.writerow({'Name' : myName, 'Date' : dtFullDate, 'Attempts' : attempts, 'Word Chosen' : wordChosen})
outputFile.close()
不确定 csv 模块是否与问题有关。
根据评论的建议:
- 我把函数调用写成 func.enter_name()
- 在 enter_name() 函数中设置 'global myName'
- 导入变量时使用'func.myName'
当我使用 func.py 文件中的以下函数时,未找到 'myName' 变量。但是,如果我直接在 wordguess.py 中使用代码(而不是使用它的函数版本),就会找到变量并且它可以工作。
def enter_name():
global myName
# Ask the a player for their username
print("What is your username:")
myName = input()[0:6]
print("\n")
while len(myName)==0:
print("Please enter your username (Max 6 characters in length):")
myName = input()
print("Hi, " + str(myName) + ", welcome to the Word Guessing Game!")
print("\n")
然后我在主脚本中调用 func.enter_name()
。我正在使用 import func
来包含 func.py 文件。但是我收到以下错误:
File "wordguess.py", line 116, in main
outputWriter.writerow({'Name' : myName, 'Date' : dtFullDate, 'Attempts' : attempts, 'Word Chosen' : wordChosen})
NameError: name 'myName' is not defined
如果我改为将 enter_name() 中的代码直接粘贴到主脚本中,它似乎可以工作(我查看了 Using global variables in a function 但无法找出问题所在)。这是引发错误的代码:
with open('scoreboard.csv', 'a', newline='') as outputFile:
outputWriter = csv.DictWriter(outputFile, ['Name', 'Date', 'Attempts', 'Word Chosen'])
outputWriter.writerow({'Name' : myName, 'Date' : dtFullDate, 'Attempts' : attempts, 'Word Chosen' : wordChosen})
outputFile.close()
不确定 csv 模块是否与问题有关。
根据评论的建议:
- 我把函数调用写成 func.enter_name()
- 在 enter_name() 函数中设置 'global myName'
- 导入变量时使用'func.myName'