函数参数如何在python中工作?

时间:2016-07-16 18:46:23

标签: python function arguments

我开始编码2天了,只是为了练习,我决定制作一个计算器。它一直给我错误,说明num1没有定义。

#data collection
def a1(num1, op, num2) :
 num1 = int[input("enter the first number: ")]
 op = input("enter the operation: ") 
 num2 = int[input("enter the second number: ")]


#running the operations
def a2() :
 if (op == "+"):
  num3 = num1 + num2
  print (num3)
 elif (op == "-"):
  num4 = num1 - num2
  print (num4)
 elif (op == "*"):
  num5 = num1 * num2
  print (num5)
 elif (op == "/"):
  num6 = num1 / num2
  print (num6)
 else:
  a1(num1, op, num2)
  a2()
a1(num1, op, num2)
a2()

3 个答案:

答案 0 :(得分:1)

函数参数是位置变量。您需要调用该函数并将变量传递给它以使其起作用。

传递给函数的变量是本地的,只能在函数中使用。您想要更改全局变量或从该函数返回。

您的代码正在做的是将未分配的变量名称num1,op,num2传递给函数。

在此处阅读更多内容:http://www.tutorialspoint.com/python/python_functions.htm

答案 1 :(得分:0)

以下是修复现有代码的方法:

#data collection
def a1():
    num1 = int(input("enter the first number: "))
    op = input("enter the operation: ") 
    num2 = int(input("enter the second number: "))
    return num1, op, num2

#running the operations
def a2(num1, op, num2):
    if (op == "+"):
        num3 = num1 + num2
        print(num3)
    elif (op == "-"):
        num4 = num1 - num2
        print(num4)
    elif (op == "*"):
        num5 = num1 * num2
        print (num5)
    elif (op == "/"):
        num6 = num1 / num2
        print(num6)
    else:
        num1, op, num2 = a1()
        a2(num1, op, num2)

num1, op, num2 = a1()
a2(num1, op, num2)

我所做的改变:

  1. a1不接受任何参数,而是返回三个值。
  2. a1的调用者将返回的值捕获到局部变量中。
  3. a2接受三个参数。
  4. int[...]更改为int(...)
  5. 修复一些缩进和空格以符合典型的Python样式。

答案 2 :(得分:0)

最后两行:

a1(num1, op, num2)
a2()

是"主要"你的程序的主体。在此之前是两个函数定义。当您调用a1时,num1的值是多少?的确,它的类型是什么?答:它是一个与之无关的名称。这就是Python解释器抱怨的原因。