Python 我能';t在函数中导入模块
输出:Python 我能';t在函数中导入模块,python,Python,输出: def imp(): import random def choi(a): random.choice(a) if __name__ == '__main__': imp() choi(['a', 'b']) 回溯(最近一次呼叫最后一次): 文件“”,第4行,在 NameError:未定义名称“random” 您已经在函数中导入了包,因此它仅在函数范围内本地导入。因此,当函数退出时,导入的包将不再可用 通常情况下,在文件顶部导入包: Traceback
def imp():
import random
def choi(a):
random.choice(a)
if __name__ == '__main__':
imp()
choi(['a', 'b'])
回溯(最近一次呼叫最后一次):
文件“”,第4行,在
NameError:未定义名称“random”
您已经在函数中导入了包,因此它仅在函数范围内本地导入。因此,当函数退出时,导入的包将不再可用
通常情况下,在文件顶部导入包:
Traceback (most recent call last):
File "<stdin>", line 4, in <module>
NameError: name 'random' is not defined
我认为,因为当您调用imp()时,可以导入随机库,但在关闭imp()后,主函数可以“记住”导入此库,因此会出现错误。在脚本开头使用
import
,或者在choi
函数中使用choi是否有任何理由尝试在函数中导入模块?是,您可以在函数中导入模块,但它不会影响全局名称空间,只影响函数的本地名称空间。谢谢,我是新来的。我知道,但我要拿到学生证。所以,我应该用至少10分来回答这个问题。你能帮我把这个问题的投票权提高吗?另外,请确保打印/返回值,否则它没有多大用处。不要担心投票权的提高。据我所知,提问没有标准,如果你提出了好的问题,人们会自己投票。
import random
def choi(a):
choice = random.choice(a)
print(choice) # use print to see the output
return choice # use return to return the output
if __name__ == '__main__':
out = choi(['a', 'b']) # capture the return value in out