我试图在两个脚本之间来回传递信息。一种是获取用户输入,另一种是对用户输入进行一些修改,然后返回到第一种,打印出修改
#del2
def fun():
return int(user_input)+1
#script to run
user_input=input('some number')
from del2 import fun
print(fun())
因此,当我们运行脚本时,用户会给出一些输入,下一行会运行另一个脚本,它会在用户输入的值上添加一个值1,然后我们打印出修改后的值。但是,您似乎无法在一个脚本中定义变量,并将已定义的变量转移到另一个脚本。因此,当我尝试上面的方法时,我得到了这个错误:NameError: name 'user_input' is not defined
。我试过看其他关于这方面的帖子,但它们都使用tkinter,而且都有点太复杂/让我难以理解。所以我做了一个非常简单的例子,试图了解这一切是如何运作的
编辑: 我不想再发帖子了,因为它是关于同一个问题的。如果我必须定义每个函数使用的每个输入,那么如果您有多个输入,那么它将变得非常拥挤。即
#del2
def fun(user_input):
return int(user_input)+1
def fun2(user_input2):
return int(user_input2)+1
def fun3(user_input3):
return int(user_input3)+1
def fun4(user_input4):
return int(user_input4)+1
def fun5(user_input,user_input2,user_input3,user_input4):
return fun(user_input)+fun2(user_input2)+fun3(user_input3)+fun4(user_input4)
#script to run
user_input=input('some number')
user_input2=input('some number')
user_input3=input('some number')
user_input4=input('some number')
from del2 import fun5
print(fun5(user_input,user_input2,user_input3,user_input4))
有没有更好的方法来做到这一点,所以fun5不会变得非常长,如果你有多个输入
您可以使用
global
关键字和由不同函数访问的导入模块中的全局变量来执行此操作。举一个简单的例子,只需对全局存储的总数进行相加或相减:然而,global variables are bad。我们通常不考虑在模块之间来回传递数据。导入模块在导入时全部执行,因此数据只能传递给导入模块内的函数或其他对象
相反,模块通常包括classes,可用于生成可存储状态的对象。数据可以传递到这些对象并存储在其中。然后,对象可以对数据进行操作,并通过调用对象的不同方法返回不同的结果。这应该是这样写的:
另外,如果您希望在调用
user_input
函数后更改fun()
的值,则需要执行以下操作:#del2
#要运行的脚本
编辑:
fun()
函数不仅仅用于user_input
。因此,您可以对其他变量使用相同的fun()
函数#del2
#要运行的脚本
您可以将输入变量添加到数组中,并执行如下操作
#del2
#要运行的脚本
相关问题 更多 >
编程相关推荐