Python中函数传参详解
在Python中,函数是非常重要的,而理解函数传参的方式和机制是学好Python的一个重要部分。因此,在这篇文章中,我们将会详细讲解Python的函数传参方式。
传递不可变对象
在Python中,不可变对象包括整数,浮点数,字符串,元组等。在函数调用时,如果传递的是不可变对象,则实参在函数中被修改不会影响到原来的实参。这是因为实参和形参在函数执行时分别指向的是两个不同的对象。
下面是一个例子:
def change_number(num):
num += 1
print("函数内修改后的num值为:", num)
num = 10
change_number(num)
print("函数调用之后num值仍为:", num)
输出为:
函数内修改后的num值为: 11
函数调用之后num值仍为: 10
从上面的输出可以看出,尽管函数内部对传入的参数num
进行了修改,但在函数调用之后,变量num
的值并没有被修改。
传递可变对象
如果传递的是可变对象,如列表(list)或字典(dict),因为它们是可变对象,所以在函数中修改它们会直接影响到原来的实参,因为实参和形参在函数执行时指向的是同一个对象。
下面是一个例子:
def change_list(alist):
alist.append(4)
print("函数内添加后的alist列表为:", alist)
alist = [1, 2, 3]
change_list(alist)
print("函数调用之后alist列表变为:", alist)
输出为:
函数内添加后的alist列表为: [1, 2, 3, 4]
函数调用之后alist列表变为: [1, 2, 3, 4]
从上面的输出可以看出,函数内部对传入的参数alist
进行了添加元素的操作,但在函数调用之后,变量alist
的值也随之被修改。
传递关键字参数
在Python中,函数支持关键字参数。关键字参数是通过指定参数名称来传递参数的,这些参数的顺序并不重要。
下面是一个例子:
def print_student_info(name, age, gender):
print("姓名:", name)
print("年龄:", age)
print("性别:", gender)
print_student_info('小明', 18, '男')
print_student_info(gender='女', name='小芳', age=20)
输出为:
姓名: 小明
年龄: 18
性别: 男
姓名: 小芳
年龄: 20
性别: 女
从上面的输出可以看出,第一次函数调用时传递了非关键字参数,第二次函数调用时则通过指定参数名来传递参数,不过两次调用结果是一样的。
传递不定长参数
在Python中,函数还支持传递不定长参数的方式,包括可变数量的位置参数和可变数量的关键字参数。
可变数量的位置参数
可变数量的位置参数是通过在形参前加上一个星号(*)来指定的,它允许函数接收任意数量的位置参数,并以元组的形式进行处理。
下面是一个例子:
def print_args(*args):
for arg in args:
print(arg, end=' ')
print()
print_args(1, 2, 3)
print_args('a', 'b', 'c', 'd')
输出为:
1 2 3
a b c d
从上面的输出可以看出,通过在函数定义时使用可变数量的位置参数,可以使函数接收任意数量的位置参数,并且将这些参数以元组的形式进行处理。
可变数量的关键字参数
可变数量的关键字参数是通过在形参前加上两个星号(**)来指定的,它允许函数接收任意数量的关键字参数,并以字典的形式进行处理。
下面是一个例子:
def print_kwargs(**kwargs):
for key, value in kwargs.items():
print("{0} = {1}".format(key, value))
print_kwargs(name='小明', age=18)
print_kwargs(city='北京', school='清华大学', major='计算机科学')
输出为:
name = 小明
age = 18
city = 北京
school = 清华大学
major = 计算机科学
从上面的输出可以看出,通过在函数定义时使用可变数量的关键字参数,可以使函数接收任意数量的关键字参数,并且将这些参数以字典的形式进行处理。
小结
在本篇文章中,我们详细讲解了Python中函数传递参数的方式,包括传递不可变对象、传递可变对象、传递关键字参数、传递不定长参数等几种方式,并给出了多个示例。希望这篇文章可以帮助大家更好地理解Python中的函数传参方式。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python中函数传参详解 - Python技术站