在Python中使用来自其他函数的变量[duplicate]

wz8daaqr  于 2022-12-25  发布在  Python
关注(0)|答案(4)|浏览(135)
    • 此问题在此处已有答案**:

How do I get a result (output) from a function? How can I use the result later?(4个答案)
Alternatives for returning multiple values from a Python function [closed](14个答案)
去年关闭了。
我正在学习python,目前正在写一个简单的程序,这个程序必须被分成函数,我的问题是我有一个函数应该返回四个不同变量的字符串,然后应该被另一个函数使用。
例如

def function1():
   var1 = input("Write something: ")
   var2 = input("Write something: ")
   var3 = input("Write something: ")

def function2():
   print(var1)
   print(var2)
   print(var3)

function1()
function2()

这会给出一个错误消息,因为var1没有在function2的框架中定义。该如何解决这个问题?为了清晰起见,这个图示非常简化,但如果需要的话,我可以发布一些更具体的内容。

jk9hmnmh

jk9hmnmh1#

返回function1中的变量:

def function1():
    var1 = input("Write something: ")
    var2 = input("Write something: ")
    var3 = input("Write something: ")
    return var1, var2, var3

并将它们作为function2中的参数:

def function2(var1, var2, var3):
    print(var1)
    print(var2)
    print(var3)

这样称呼他们:

var1, var2, var3 = function1()
function2(var1, var2, var3)
mefy6pfw

mefy6pfw2#

这不是函数的作用。
有一种东西叫做“作用域”,它的基本意思是,在函数中声明的变量是该函数的“本地”变量,不能被其他任何变量访问,如果需要向函数传递值,请使用参数。
这些内容应该都在您正在阅读的Python介绍中介绍过了--只需阅读一两页即可:)

7d7tgy0s

7d7tgy0s3#

正确的方法是从函数返回值并通过输入参数传递它们:

def function1():
    var1 = input("Write something: ")
    var2 = input("Write something: ")
    var3 = input("Write something: ")
    return var1, var2, var3

def function2(a, b, c):
    print(a)
    print(b)
    print(c)

v1, v2, v3 = function1()
function2(v1, v2, v3)

我重命名了一些参数以强调在任何地方都没有名称关系。所有的值都显式返回和显式传递。

ibrsph3r

ibrsph3r4#

对于您当前的示例,更好的方法是重复使用相同的函数三次:

def function1():
    return input("Write something: ")

def function2(var):
   print(var)

for i in range(0, 3):
    var = function1()
    function2(var)

但最好返回function1中的变量,然后将其传递给function2

def function1():
   var1 = input("Write something: ")
   var2 = input("Write something: ")
   var3 = input("Write something: ")
   return var1, var2, var3

def function2(var1, var2, var3):
   print(var1)
   print(var2)
   print(var3)

var1, var2, var3 = function1()
function2(var1, var2, var3)

这取决于您的具体问题。

相关问题