Python 如何在脚本之间来回传递信息
我试图在两个脚本之间来回传递信息。一种是获取用户输入,另一种是对用户输入进行一些修改,然后返回到第一种,打印出修改Python 如何在脚本之间来回传递信息,python,Python,我试图在两个脚本之间来回传递信息。一种是获取用户输入,另一种是对用户输入进行一些修改,然后返回到第一种,打印出修改 #del2 def fun(): return int(user_input)+1 #script to run user_input=input('some number') from del2 import fun print(fun()) 因此,当我们运行脚本时,用户会给出一些输入,下一行会运行另一个脚本,它会在用户输入的值上添加一个值1,然后我们打印出修改
#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\u input”未定义
。我试过看其他关于这方面的帖子,但它们都使用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不会变得非常长,如果你有多个输入
您需要定义fun,以便将变量作为参数:def fun(用户输入),然后将该变量传递给导入的函数 另外,如果您想在调用
fun()
函数后更改user\u input
s值,则需要执行以下操作:
# tally.py
class Tally(object):
def __init__(self):
self.total = 0
def add(self, n):
self.total += n
def subtract(self, n):
self.total -= n
# test_tally.py
from tally import Tally
tally = Tally()
tally.add(3)
tally.subtract(4)
print(tally.total)
#del2
#要运行的脚本
user_input = input('some number')
from del2 import fun
user_input = fun(user_input)
print(user_input)
user_input = input('some number')
user_input2 = input('some number')
from del2 import fun
user_input = fun(user_input)
user_input2 = fun(user_input2)
print(user_input + ", " + user_input2)
user_inputs = []
user_inputs.append(input('some number 0: ')) #you can use a for loop here too
user_inputs.append(input('some number 1: '))
user_inputs.append(input('some number 2: '))
user_inputs.append(input('some number 3: '))
from del2 import fun5
user_inputs = fun5(user_inputs)
print(user_inputs)
编辑:
fun()
函数不仅仅用于用户输入。因此,您可以对其他变量使用相同的fun()
函数
#del2
#要运行的脚本
user_input = input('some number')
from del2 import fun
user_input = fun(user_input)
print(user_input)
user_input = input('some number')
user_input2 = input('some number')
from del2 import fun
user_input = fun(user_input)
user_input2 = fun(user_input2)
print(user_input + ", " + user_input2)
user_inputs = []
user_inputs.append(input('some number 0: ')) #you can use a for loop here too
user_inputs.append(input('some number 1: '))
user_inputs.append(input('some number 2: '))
user_inputs.append(input('some number 3: '))
from del2 import fun5
user_inputs = fun5(user_inputs)
print(user_inputs)
您可以将输入变量添加到数组中,并执行如下操作
#del2
#要运行的脚本
user_input = input('some number')
from del2 import fun
user_input = fun(user_input)
print(user_input)
user_input = input('some number')
user_input2 = input('some number')
from del2 import fun
user_input = fun(user_input)
user_input2 = fun(user_input2)
print(user_input + ", " + user_input2)
user_inputs = []
user_inputs.append(input('some number 0: ')) #you can use a for loop here too
user_inputs.append(input('some number 1: '))
user_inputs.append(input('some number 2: '))
user_inputs.append(input('some number 3: '))
from del2 import fun5
user_inputs = fun5(user_inputs)
print(user_inputs)
您可以使用
global
关键字和导入模块中的全局变量来执行此操作,该模块由不同的函数访问。举一个简单的例子,只需对全局存储的总数进行相加或相减:
# tally.py
total = 0
def add(n):
global total
total += n
def subtract(n):
global total
total -= n
# test_tally.py
import tally
tally.add(5)
tally.subtract(1)
print(tally.total)
然而。我们通常不考虑在模块之间来回传递数据。导入模块在导入时全部执行,因此数据只能传递给导入模块内的函数或其他对象
相反,模块通常包括,可用于生成可存储状态的对象。数据可以传递到这些对象并存储在其中。然后,对象可以对数据进行操作,并通过调用对象的不同方法返回不同的结果。这应该是这样写的:
# tally.py
class Tally(object):
def __init__(self):
self.total = 0
def add(self, n):
self.total += n
def subtract(self, n):
self.total -= n
# test_tally.py
from tally import Tally
tally = Tally()
tally.add(3)
tally.subtract(4)
print(tally.total)
您需要定义fun,以便它将变量作为参数:
def fun(用户输入)
然后将该变量传递给导入的函数。如果有多个输入怎么办?您可以用逗号分隔它们吗?是的,您可以指定要传递的所有参数,并用逗号分隔。在开始使用模块之前,您可能需要学习python函数和变量范围的教程。什么是脚本?您是说两个进程/程序分别运行吗?或者是同一个程序,你不知道如何生成全局变量?对不起,还有一个问题:如果我有多个输入,我需要将它们全部添加到我的函数中吗?即使我在前面的函数中使用了它?也就是说,如果我添加这个def fun2():return fun(用户输入)+1
,那么它将不起作用,我必须添加def fun2(用户输入):return fun(用户输入)+1
。尽管fun2没有使用用户输入,但它使用fun的返回值(用户输入)。如果一个函数调用多个函数,每个函数使用不同的用户输入,我该怎么办。我是否必须在该函数中指出所使用的每个用户输入?这只起作用,因为对输入的修改都是相同的。我正在寻找一种更灵活的方法(例如,如果一个在添加,另一个在分割,等等)。问题不在于上面的人在做什么,问题在于fun5使用所有以前函数的输出,但我想要一种使用fun5的方法,而不必定义以前使用的函数的每个输入(例如,我不想要fun5(用户输入,用户输入2)。同样,您的解决方案之所以有效,是因为每个函数都在做相同的事情,如果我们更改每个函数正在做的事情,那么它将不再有效。我的英语不足以解释,但您可以使用其他一些东西,global
关键字我已尝试在两个脚本中定义global,但全局参数似乎不起作用要转换(即,您仍然需要将其定义为fun条目),如果函数和输入具有特定长度,则可以将不同的fun函数添加到数组中,然后在for循环中使用该数组