6.2 函数的参数

函数的作用就是完成一定的功能,很多的功能就是要对数据进行加工,加工的数据从哪里来呢?答案就是在调用函数的时候,将数据传递给函数,这就是函数的参数。

例如:6.3-函数的参数.py

# 定义带有参数的函数

def add_num(a, b):
    c = a + b
    print(c)

调用带有参数的函数时,要给出相应的两个数据作为参数:

add_num(10, 20)

执行结果为:

30

6.2.1 形参和实参

这是一对经常提到的概念。形参是指在函数定义的时候,例如上面的例子,这时候的参数a和b,只是为了表明这个函数会对这两个参数进行操作,而不是实际要加工的数据,只具有形式意义,所以称为形式参数,简称形参。

而在调用函数的时候,例如上面的例子中的10,20,它们是主调函数中实际要处理的数据,是具有实际意义的,所以称为实际参数,简称实参。

6.2.2 参数传递

在调用带有参数的函数时,Python将实参的引用传递给形参,于是形参里面就有了实参一样的值。

如果传递的参数类型是不可变类型,那么在被调函数中对形参的修改,不会改变主调函数中实参的值。

而传递的参数类型是可变类型的话,那么在被调函数中对形参的修改,将会改变主调函数中实参的值。

根据实际需要是否需要改变主调函数中实参的值,灵活选择使用参数的类型。

例如:6.4-参数传递.py

# 参数传递:将实参的引用传递给形参

def swap1(a, b):
    a, b = b, a


def swap2(numlist):
    numlist.reverse()


num1 = 10
num2 = 20
numlist = [10, 20]

print('num1={}, num2={}'.format(num1, num2))
swap1(num1, num2)
print('after swap1:')
print('num1={}, num2={}'.format(num1, num2))

print('')
print('numlist:', numlist)
swap2(numlist)
print('after swap2:')
print('numlist:', numlist)

执行结果为:

num1=10, num2=20
after swap1:
num1=10, num2=20

numlist: [10, 20]
after swap2:
numlist: [20, 10]