Python 的函数是怎么传递参数的?

 我来答
就烦条0o
2018-08-04 · 知道合伙人软件行家
就烦条0o
知道合伙人软件行家
采纳数:33315 获赞数:46492
从事多年系统运维,喜欢编写各种小程序和脚本。

向TA提问 私信TA
展开全部
首先你要明白,Python的函数传递方式是赋值,而赋值是通过建立变量与对象的关联实现的。
对于你的代码:
执行 d = 2时,你在__main__里创建了d,并让它指向2这个整型对象。
执行函数add(d)过程中:
d被传递给add()函数后,在函数内部,num也指向了__main__中的2
但执行num = num + 10之后,新建了对象12,并让num指向了这个新对象——12。
如果你明白函数中的局部变量与__main__中变量的区别,那么很显然,在__main__中,d仍在指着2这个对象,它没有改变。因此,你打印d时得到了2。
如果你想让输出为12,最简洁的办法是:
在函数add()里增加return num
调用函数时使用d = add(d)
代码如下:
def add(num):
num += 10
return num
d = 2
d = add(d)
print d
龙氏风采
2017-09-04 · 知道合伙人互联网行家
龙氏风采
知道合伙人互联网行家
采纳数:5849 获赞数:12817
从事互联网运营推广,5年以上互联网运营推广经验,丰富的实战经

向TA提问 私信TA
展开全部
Python中函数的参数传递
1.普通的参数传递

>>> def add(a,b):
return a+b

>>> print add(1,2)
3
>>> print add('abc','123')
abc123

2.参数个数可选,参数有默认值的传递

>>> def myjoin(string,sep='_'):
return sep.join(string)

>>> myjoin('Test')
'T_e_s_t'
>>> myjoin('Test',';')
'T;e;s;t'

>>> def myrange(start=0,stop,step=1):
print stop,start,step

SyntaxError: non-default argument follows default argument

参数sep的缺省值是'_' 如果这个参数不给定值就会使用缺省值 如果给定 则使用给定的值
需要注意 如果一个参数是可选参数 那么它后面所有的参数都应该是可选的,另外 可选参数的顺序颠倒依然可以正确的给对应的参数赋值 但必须清楚的指明变量名和值
3.个数可变参数

>>> def printf(fmt,*arg):
print fmt%arg

>>> printf ('%d is larger than %d',2,1)
2 is larger than 1

函数中的*arg必须是最后一个参数,*表示任意多个参数,*arg会把除了前面以外所有的参数放到一个tuple里面传递给函数,可以在函数中通过arg来访问
arg是一个tuple,可以通过访问tuple的方法在函数中访问arg
另一种方式传递任意个数参数是通过dictionary的方式来传递 同样也可以接受多个参数 但是每个参数需要指明名称对应关系比如a=1,b=2,c=3

>>> def printf(format,**keyword):
for k in keyword.keys():
print "keyword[%s] %s %s"%(k,format,keyword[k])

>>> printf('is',one=1,tow=2,three=3)
keyword[three] is 3
keyword[tow] is 2
keyword[one] is 1

这些方法可以混在一起用 但是一定要注意顺序,函数会先接受固定参数,然后可选参数,然后任意参数(tuple),然后字典任意参数(dict)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
谎言阴谋论者
2017-08-07 · 超过26用户采纳过TA的回答
知道答主
回答量:77
采纳率:66%
帮助的人:29.9万
展开全部
#这是python函数的格式
def function_name(arg1,arg2[,...]):
     statement
 [return value]  
 
#以下是示例,定义TEST函数
>>> a=2
>>> b=2
>>> def test(b):
 ...     test=a*b
 ...     return test
>>> print test(10)
 20
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
踏乃子k
2017-08-09 · TA获得超过354个赞
知道小有建树答主
回答量:1018
采纳率:38%
帮助的人:335万
展开全部
return是吗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式