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循环中使用该数组