Python参数传递

参数传递

今天在看Python代码的时候发现的python参数传递的一个问题
在Python中参数传递分为两种情况,一种是传递可变的对象,比如列表,另一种是不可变的对象比如字符串时,这两种情况是不一样的,通过查阅相关资料有了如下了解
当传入的是可变对象列表的时候,就类似于C语言中的指针传递

def add_list(a):
    a.append(10)
a = [1]
add_list(a)
print(a)
[1, 10]

当传入的是不可变的对象的时候,类似于C语言中的值传递

def add(a):
    a = a + 2
a = 5
add(a)
print(a)
5

更详细的解释可以参考,参考文献中的链接。
参考文献:
[1] https://www.zhihu.com/question/20591688
[2] http://winterttr.me/2015/10/24/python-passing-arguments-as-value-or-reference/

型有哪些?如何进行参数传递Python传参的类型有四种:位置参数,关键字参数,默认参数和可变参数。 位置参数:按照函数定义中形参的位置进行传递,与形参的名称无关。 关键字参数:按照形参的名称进行传递,与形参的位置无关。 默认参数:在函数定义指定参数的默认值,如果调用传递了参数,则使用传递的值,否则使用默认值。 可变参数:有两种,分别是可变位置参数和可变关键字参数。可变位置参数在函数定义以*args形式声明,接收任意数量的位置参数;而可变关键字参数在函数定义以**kwargs形式声明,接收任意数量的关键字参数。 参数的传递方式:位置参数和关键字参数可以混合使用,但是位置参数必须在关键字参数之前传递。例如: ``` def add(x, y=1, z=2): result = x + y + z return result add(1, z=3) # 返回 5 ``` 这里函数add()有三个参数,其中y和z指定了默认值。我们可以像这样传递参数:add(1, z=3),这里指定了x为1,z为3,y使用默认值1. 可变参数可以使用*和**运算符来实现参数的解包,例如: ``` def add(*args): result = 0 for arg in args: result += arg return result numbers = [1, 2, 3] add(*numbers) # 返回 6 def print_info(**info): for key, value in info.items(): print("{}: {}".format(key, value)) user_info = {"name": "Alice", "age": 18} print_info(**user_info) # 输出 name: Alice, age: 18 ``` 这里函数add()接收任意数量的位置参数,函数print_info()接收任意数量的关键字参数。我们可以使用*运算符将列表或元组解包作为位置参数传递给函数,使用**运算符将字典解包作为关键字参数传递给函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值