Python导入自己的模块-名称未定义
我想更新我的基本游戏。我已经做过脚本从文本文件中获取单词的操作,现在我想将它们分成模块,因为我有不同的文本文件和不同的单词。
我有我的主要脚本jumble_game.py:
import randomimport amazement
#Welcome the player
print("""
Welcome to Word Jumble.
Unscramble the letters to make a word.
""")
def wordlist(file):
with open(file) as afile:
global the_list
the_list = [word.strip(",") for line in afile for word in line.split()]
print(the_list)
def main():
score = 0
for i in range(4):
word = random.choice(the_list)
theWord = word
jumble = ""
while(len(word)>0):
position = random.randrange(len(word))
jumble+=word[position]
word=word[:position]+word[position+1:]
print("The jumble word is: {}".format(jumble))
#Getting player's guess
guess = input("Enter your guess: ").lower()
#congratulate the player
if(guess==theWord):
print("Congratulations! You guessed it")
score +=1
else:
print ("Sorry, wrong guess.")
print("You got {} out of 10".format(score))
#filename = "words/amazement_words.txt"
wordlist(filename)
main()
我希望将文件amazement.py导入jumble_game.py,因为我希望用户选择从中选择单词的组。
amazement.py:
filename = "amazement_words.txt"
我收到此错误:
File "jumble_game.py", line 49, in <module> wordlist(filename)
NameError: name 'filename' is not defined
如果我以另一种方式执行此操作,则将主脚本导入amazement.py并运行后者,则代码可以正常运行。
任何线索我想念什么?还是Python初学者,所以请多多包涵。:)
感谢您的帮助/建议!
回答:
您所说的问题是标准的名称空间/范围问题。您已经在amazement.py范围内创建了一个变量,但没有在jumble_game.py命名空间中创建了一个变量。结果,如果不告诉程序从何处获取该变量,就无法访问amazement.py中的顶级变量。
您可以做几件事。我将列出两个:
1。
from amazement import filename
如前所述,这将允许您使用术语“文件名”。
或2。
更换任何参考filename
用amazement.filename
。
您可以在此处阅读有关范围和名称空间的更多信息:http
:
//sebastianraschka.com/Articles/2014_python_scope_and_namespaces.html
以上是 Python导入自己的模块-名称未定义 的全部内容, 来源链接: utcz.com/qa/400211.html