def fibwithdefaultvalue(n=5):# 不传递n时,n的值将会是5
a,b=0,1
i=0
result=[]#list
while i<n:
result.append(a)
a,b=b,a+b
i=i+1
return result
g=fibwithdefaultvalue
print(g())
tips1:默认值可以是变量,并且在函数定义的时候被解析:如下
'''
Created on Dec 3, 2013
@author: panql
'''
i = 5
def f(arg=i):
print(arg)
i = 6
f()
此段代码的执行结果为5,因为在函数定义的时候,能够解析的i的值是5
tips2:默认值只会被赋值一次,如果默认值是可变对象时,可能会出现很诡异的情况,如默认值是列表时可能出现累积等。
1.3 关键字参数以及可变参数
1.3.1 关键字参数
在如下代码中,展示了通过关键字参数。及k=v的形式来调用函数的做法
'''
Created on Dec 3, 2013
to know keywords arguments
@author: panql
'''
def keywordsargs(userid,username='none',password='none'):
'''
there are three argumens:userid,username and password .username and password have default value.
'''
print('the user id is ',userid,' username is',username,'pwd is',password)
keywordsargs('aaa')
keywordsargs(userid='aaa',password='bbb')
keywordsargs('bbb',username='hehe',password='cccc')
keywordsargs(userid='aaaa',username='hello',password='nihao')
keywordsargs(password='nihao',username='hello',userid='aaaa')
tips:1 任何参数都不能被赋值两次