Python函数的参数及参数传递方式介绍
Python中的函数参数包括位置参数、默认参数、可变参数和关键字参数,不同参数的传递方式也有不同的特点。
1. 位置参数:
位置参数是按照顺序从左到右传递的,调用函数时需要按照定义的顺序传入参数。示例代码如下:
def add(x, y):
return x + y
result = add(3, 5)
print(result) # 输出结果为8
2. 默认参数:
默认参数在函数的定义中可以给定一个默认的值,如果在函数调用时没有传入相应的参数,则会使用默认值。示例代码如下:
def multiply(x, y=2):
return x * y
result1 = multiply(3, 4)
print(result1) # 输出结果为12
result2 = multiply(3)
print(result2) # 输出结果为6
默认参数可以有多个,当有多个默认参数时,调用函数时可以按照指定的顺序传入,也可以使用关键字参数指定传入的值。
3. 可变参数:
可变参数允许传入不定数量的参数,在函数定义时使用*或**来表示。其中,*用于接收不定数量的位置参数,**用于接收不定数量的关键字参数。示例代码如下:
def sum(*nums):
total = 0
for num in nums:
total += num
return total
result1 = sum(1, 2, 3, 4, 5)
print(result1) # 输出结果为15
result2 = sum(1, 2)
print(result2) # 输出结果为3
在调用函数时,可以传递任意数量的参数,这些参数会被打包成一个元组或字典传递给函数。
4. 关键字参数:
关键字参数允许以名称-值对的形式传递参数,在函数定义时使用**来表示。示例代码如下:
def info(name, age):
print("姓名:", name)
print("年龄:", age)
info(name="张三", age=20)
在调用函数时,使用name=value的形式传递参数,可以不按照定义的顺序传递参数,同时还可以只传递部分关键字参数。
在Python中,参数的传递方式有值传递和引用传递两种方式。
1. 值传递:
值传递是指在调用函数时,将实参的值复制给形参,形参和实参是两个独立的变量,它们之间的修改互不影响。示例代码如下:
def change_num(num):
num = 10
number = 5
change_num(number)
print(number) # 输出结果为5
在函数change_num中,num被赋值为10,但是并不会影响到外部的number变量。
2. 引用传递:
引用传递是指在调用函数时,将实参的引用(地址)复制给形参,形参和实参指向同一个内存地址,对形参的修改会影响到实参。示例代码如下:
def change_list(lst):
lst.append(4)
mylist = [1, 2, 3]
change_list(mylist)
print(mylist) # 输出结果为[1, 2, 3, 4]
在函数change_list中,对lst变量进行操作实际上是对mylist的操作。
需要注意的是,不可变类型的参数(如整数、浮点数、字符串)在函数内部修改后,并不会影响到外部的变量,因为每次对不可变类型的修改都会创建一个新的对象。而可变类型的参数(如列表、字典、集合)则可以在函数内部进行修改,因为对可变类型的修改是在原有对象的基础上进行的。
