Python函数传参-参数类型和传参方式详解
Python作为一种高级编程语言,在使用函数传参时有着非常丰富的语法和方法。对于初学者来说,这些语法和方法可能有些复杂。参数类型和传参方式是Python函数传参中的两个核心概念。本文将对这两个概念分别进行详解。
参数类型
Python函数的参数可以分为四种类型,分别是位置参数、默认参数、可变参数和关键字参数。
1. 位置参数
位置参数是函数定义时指定的参数,实参传递时必须按照位置顺序一一对应。例如下面代码中的add函数就是一个位置参数的例子。
def add(a,b):
return a+b
print(add(1,2))
输出结果为3。
2. 默认参数
默认参数是指在函数定义时指定了参数的默认值,如果在函数调用时没有传递参数,则使用默认值。例如下面代码中的add函数就是一个默认参数的例子。
def add(a,b=1):
return a+b
print(add(1)) # 输出结果为2
在调用add函数时,只传入一个参数1,因为b有默认值,所以b的值为1,所以输出结果为2。
3. 可变参数
可变参数指的是在调用函数时可以传递任意个数的位置参数,这些位置参数在函数内部会组成一个元组。例如下面代码中的add函数就是一个可变参数的例子。
def add(*args):
result = 0
for i in args:
result += i
return result
print(add(1,2,3,4,5)) # 输出结果为15
在调用add函数时,传递了任意个数的位置参数,这些位置参数在函数内部会组成一个元组args。
4. 关键字参数
关键字参数指的是在调用函数时使用键值对的方式传递参数,这些参数在函数内部会组成一个字典。例如下面代码中的add函数就是一个关键字参数的例子。
def add(**kwargs):
result = 0
for i in kwargs.values():
result += i
return result
print(add(a=1,b=2,c=3)) # 输出结果为6
在调用add函数时,使用键值对的方式传递参数,这些参数在函数内部会组成一个字典kwargs。
传参方式
Python函数传参有两种方式,分别是值传递和引用传递。
1. 值传递
值传递指的是在调用函数时,如果参数是不可变对象(例如数字、字符串、元组),那么在函数内部对参数进行修改,不会影响到函数外部的变量值。
例如下面代码中的add函数就是一个值传递的例子。
def add(a):
a += 1
print(a)
x = 1
add(x)
print(x)
在调用add函数时,传递了一个不可变对象x,然后在函数内部对x进行了修改,但是函数外部的x的值并没有被修改。
2. 引用传递
引用传递指的是在调用函数时,如果参数是可变对象(例如列表、字典、集合),那么在函数内部对参数进行修改,会影响到函数外部的变量值。
例如下面代码中的add函数就是一个引用传递的例子。
def add(lst):
lst.append(1)
print(lst)
x = [1,2,3]
add(x)
print(x)
在调用add函数时,传递了一个可变对象x,然后在函数内部对x进行了修改,函数外部的x的值也被修改了。
总结
Python函数传参是Python编程中的一项核心技能。理解Python函数传参的四种参数类型以及两种传参方式,能够帮助我们更好地编写Python函数程序。在实际开发过程中,我们需要根据实际情况选择不同的参数类型和传参方式,以便实现更加灵活和高效的程序。
