假设我有一个名为script.py的脚本:
def num():
...
return num1, num2
def quiz()
...
...
num1, num2 = num()
name = input('name: ')
class_num = input('class: ')
if __name__ = '__main__':
quiz()
在另一个脚本中,我想使用这个脚本和script.py定义的变量:
import script
script.quiz()
def path(class_num):
...
# do stuff
这一直在返回
'NameError:名称'class_num'未定义'
如何在第二个脚本中使用script.py中定义的所有变量?
答案 0 :(得分:4)
您在脚本中定义了一个不返回任何内容的函数,需要返回用户输入定义的所有变量
def quiz():
stuff
name = input('...')
class_num = input('...')
return [stuff, name, class_num]
需要使用
更改其他脚本results = script.quiz()
然后你解析results
他们将包含测验答案
答案 1 :(得分:1)
您正在尝试将局部变量作为全局变量。{{if member.hasPaidThisYear 'V'}}
在函数class_num
中有一个范围,但不在其外部。
在Python中,仅在函数内引用的变量是隐式全局变量。如果在函数体内的任何位置为变量赋值,则除非明确声明为全局,否则将其视为局部值。
错误
' NameError:name' class_num'未定义'
确切地告诉你,这个变量并不存在于它所调用的范围内。
要解决问题,只需更改
即可quiz
并在您的其他脚本中捕获返回变量
def quiz()
...
...
num1, num2 = num()
name = input('name: ')
class_num = input('class: ')
return class_num
答案 2 :(得分:1)
你可以使用这样的东西 在你的script.py中 返回class_num变量
def num():
...
return num1, num2
def quiz()
...
...
num1, num2 = num()
name = input('name: ')
class_num = input('class: ')
return class_num
if __name__ = '__main__':
quiz()
并像这样使用
import script
class_num = script.quiz()
def path(class_var = class_num):
...
# do stuff
在你的代码中,你试图通过导入不正确的script.py来使用局部变量。
希望它可能有所帮助!答案 3 :(得分:0)
Python不知道变量class_num
是什么,因为它被困在quiz
方法中。
import script
script.quiz()
...
class_num = input('class: ')
# quiz function exits, making class_num go out of scope
# since class_num doesn't exist, this NameError
def path(class_num):
...
如果您希望类名在函数外部可用,请将其返回
def quiz()
...
...
num1, num2 = num()
name = input('name: ')
class_num = input('class: ')
return class_num # <=======
在另一个剧本中
class_num = script.quiz() # <=======
def path(class_num):
...
如果您希望quiz
中的其他变量可用,您有以下几种选择:
num
方法答案 4 :(得分:0)
我修改了脚本以显示:a)其他人提到的返回值,b)缺少路径执行,返回值作为参数值。 这里我们有script.py
def num():
num1 = 1
num2 = 2
return num1, num2
def quiz():
num1, num2 = num()
name = "Andreas"
class_num = 9
return class_num
if __name__ == '__main__':
quiz()
这里是something.py
import script
def path(class_num):
pass
# do stuff
class_n = script.quiz()
path(class_n)
我希望这可以说明它是如何运作的。您可能稍后在函数路径之外的某处使用变量class_num。这会给你一个NameError。