Python与变量传递

Python与变量传递,python,Python,在过去的几个小时里,我一直在网上阅读Python在线手册(目前使用的是Python v2.7),但我仍在努力理解如何将变量从一个函数传递到另一个函数 目前,我刚开始做一些简单的事情,让我的头绕过传递变量。我有3个函数(一个显示hello消息),另一个请求用户输入,第三个接受用户输入并执行计算) 在我的一生中,我不知道如何将用户输入值输入到计算函数中。我认为,一旦我在用户输入中输入了值,就可以将它们发送到calc函数。但我不能……我一直收到一条错误消息: 计算=计算(num1,num2) Name

在过去的几个小时里,我一直在网上阅读Python在线手册(目前使用的是Python v2.7),但我仍在努力理解如何将变量从一个函数传递到另一个函数

目前,我刚开始做一些简单的事情,让我的头绕过传递变量。我有3个函数(一个显示hello消息),另一个请求用户输入,第三个接受用户输入并执行计算)

在我的一生中,我不知道如何将用户输入值输入到计算函数中。我认为,一旦我在用户输入中输入了值,就可以将它们发送到calc函数。但我不能……我一直收到一条错误消息: 计算=计算(num1,num2) NameError:未定义全局名称“num1”

有人能指出我哪里出了问题吗?这简直快把我逼疯了

def main():
    message()
    input = user()
    calc = cal(num1, num2)

def message():
    print "Welcome message"

def user():
    side_a = int(raw_input("Enter a: "))
    side_b = int(raw_input("Enter b: "))
    return side_a, side_b

def cal(num1, num2):
    side_c = side_a + side_b
    return side_c

所以你可以这样想:

def main()
   message()
   input = user()
   calc = cal(input[0], input[1])
您有一个函数(def user()),它将返回两个值。您必须接收这两个值并将它们存储在某个位置。在main()中,使用变量“input”,该变量现在必须保存两个写入的值。如果你要做:

print input
你会得到(A边的值,B边的值)传递给你。如果你改写

print input[0]
它只打印A面。更简单的方法(在我看来)是让两个变量备用以接收返回值:

input1, input2 = user()
现在在def-cal(num1,num2)中,它希望接收两个参数并返回一个值。因此,您的主视图应如下所示:

def main()
   message()
   input = user()
   calc = cal(input[0], input[1])
定义函数时,使用的变量(num1,num2)是表示该函数中输入的方式。如果只传递参数num1,num2,它们没有值,因为它们没有在main中声明。名称不必匹配,只需传递正确数量(和类型)的参数即可

例如:

def sample(int1, int2, string):
    number3 = number1 + number2
    print(string1 + str(number3))
您可以传递原始数据,也可以传递变量。在本示例中,打印输出将是相同的:

def main():
    number1 = 2
    number2 = 2
    string1 = "two plus two equals: "
    sample(2,2,"two plus two equals: ")
    sample(number1,number2,string1)

改变你必须改变的

def main():
    message()
    num1, num2 = user()  # grab the numbers from user fn and store them in num1, num2
    calc = cal(num1, num2)

def message():
    print "Welcome message"

def user():
    side_a = int(raw_input("Enter a: "))
    side_b = int(raw_input("Enter b: "))
    return side_a, side_b

def cal(side_a, side_b):
    side_c = side_a + side_b
    return side_c

发送函数num1和num2时,没有定义num1和num2是什么。在调用cal(num1,num2)之前,需要先让num1=some number和num2=some number。您需要在cal()中更改变量名。您正在使用user()中声明的名称。谢谢Tom和rmunn,修复了此问题。抱歉,我刚刚复制粘贴了代码并基于此工作。