python 传递带参数的函数_Python 函数的参数传递

Python中的函数参数传递不同于C/C++,它没有显式的值传递或引用传递类型。对于可变对象(如列表和字典),参数传递行为类似引用传递,函数内对对象的修改会影响原始对象。而对于不可变对象(如字符串和数值),参数传递表现为值传递,函数内修改不会影响原始对象。若需改变不可变对象,需通过返回新对象来实现。
摘要由CSDN通过智能技术生成

C/C++中,传递参数的类型是可以指定的。一般来说,传递参数可以分为两种:值传递和引用传递。对于值传递,参数传递的过程中进行了复制操作,也就是说,在函数中对参数的任何改动都不会影响到传入的变量;对于引用传递,函数中的对象与传入的对象其实是同一个对象,也就是说,参数仅仅是原对象的一个引用。一般来说,C/C++默认的方式都是值传递,要改变原对象,可采用显式的引用或者指针传递的方式。

那么,在Python中呢?Python语言中显然没有能指定传递类型的语法,毕竟是一门动态的解释型语言,也没有显式的类型要求。

下面验证Python函数参数传递的方式:

defchangelist(lst): #修改列表

lst[0]= '1'lst= [111, 2, 3, 4]

changelist(lst)printlstdefchangedict(dic): #修改字典

dic["lustar"] ="yes"dict1= {"lustar": "no"}

changedict(dict1)print dict1

输出结果为:

['1', 2, 3, 4]

{'lustar': 'yes'}

可见,对于列表和字典,参数传递的方式是引用传递。

defchangestring(string1): #修改字符串

string1+= "None"str1= "I am a good boy!"changestring(str1)printstr1defchangevar(a): #修改变量

a+= 111b= 1changevar(b)print b

输出结果为:

I am a good boy!1

可见,对于字符串以及一般的变量,结果类似于值传递,并不会影响到原结果。那么,如果想改变字符串的值呢?返回新的字符串即可:

defchangestring(string1):

string1+= "None"

returnstring1 #修改后的参数作为返回值

str1= "I am a good boy!"

printid(str1)

str1=changestring(str1)printstr1print id(str1)

输出结果为:

31869336I am a good boy!None31867712

可见,这时的字符串已经不是在原来的基础上修改了,实际上是返回了一个新字符串。

结论:

对于可以修改的对象,如列表和字典,函数的参数传递方式是引用传递。

对于不能修改的对象,包括字符串、一般变量和元组(元组本来就不能修改),参数传递的方式是值传递。如果确实需要修改该对象的值,可以利用函数的返回值进行修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值