Python 函数传参机制
Python 的函数传参机制主要有以下几点:
-
传递可变类型和不可变类型时,传递的是对象的引用(内存地址),在函数内部对可变类型进行修改可能会影响到外部变量的值,而对不可变类型进行修改将会创建一个新的对象,不会影响外部的变量。
-
参数可以设置默认值,当实参不传递时将使用默认值。
-
位置参数和关键字参数混合使用时,位置参数必须在关键字参数之前。
-
可以使用 args 和 *kwargs 传递任意数量的位置参数和关键字参数。
Python 函数使用方法
定义函数需要使用 def
关键字,后面跟上函数名、参数列表和冒号:
def add(a, b):
return a + b
可以使用 return
语句返回函数的执行结果,也可以不使用返回值,此时函数默认返回 None
。
在调用函数时,将实际的参数值传递给函数。传递参数时,可以使用位置参数和关键字参数:
# 使用位置参数传递参数
x = add(1, 2)
# 使用关键字参数传递参数
y = add(a=3, b=4)
默认参数可以设置为任意类型的值,但是默认值只会在函数定义时被计算一次,如果默认值为可变类型(比如列表或字典),可能会导致每次函数调用时都使用同一个对象,导致不期望的行为。
def func(a=[], b={}):
print(a, b)
a.append(len(a))
b[len(a)] = len(a)
func() # 输出: [], {}
func() # 输出: [0], {1: 1}
func() # 输出: [0, 1], {1: 1, 2: 2}
使用 args 和 *kwargs 可以接收任意数量的位置参数和关键字参数:
def func(*args, **kwargs):
print(args, kwargs)
func(1, 2, 3, a=4, b=5) # 输出: (1, 2, 3) {'a': 4, 'b': 5}
示例1: 使用位置参数传参
def add(a, b):
return a + b
result = add(3, 5)
print(result) # 输出:8
示例2: 使用关键字参数传参:
def add(a, b):
return a + b
result = add(b=5, a=3)
print(result) # 输出:8
通过以上示例,我们可以看到Python函数传参机制和使用方法。