#定义函数
def functionname(参数,,):
'''comments'''
functionbody
functionname 参数名
comments (可选参数为函数指定注释,注释内容通常是函数的功能)
函数体和 注释 要相对def保持一定的缩进
定义一个什么也不做的空函数用pass语句作为占位符
函数的返回值leix类型与return 语句返回表达式的类型一致。无论return语句出现在什么位置,一旦执行,将结束函数运行。
如果函数没有return语句,或者执行了不含有任何值的return语句Python认为该函数以return None。
参数之间用逗号分隔。
在函数内部对形参的修改并不会影响实参。
当传递的参数是Python的可变序列,并在函数内部使用下标或序列自身支持的方式为可变序列增加元素,删除元素或修改元素值时,修改的结果是可以反映到函数之外的,即实参也得到了相应的修改。
def m(v):
v[0]+=1
a=[2]
>>> m(a)
>>> a
[3]
>>> def m(v,i):
v.append(i)
>>> a=[1]
>>> m(a,'哈')
>>> a
[1, '哈']
>>>
默认值参数:在定义函数时为形参设置默认值。在调用有默认参数函数函数时,可以不用为设置了默认值的参数进行传值。
也可以显式的赋值。
def funcname('''',形参名=默认值):
函数体
def say(message,time=1): print((message+'')*time) a= say.__defaults__ print(a)
(1,)
def say(message,time=1):
print((message+'')*time)
a= say.__defaults__
print(a)
say("你好")
say("mmp", 3 )
(1,)
你好
mmpmmpmmp
在定义有默认值参数的函数时,默认值参数必须出现在函数形参列表的最右端,任何默认值参数的右边都不能再出现非默认值参数。
def demo(newitem,old_list=[]):
old_list.append(newitem)
return old_list
print( demo('5',[1 , 2 , 3 , 4]))
print(demo('aaa',['a','b']))
print(demo('a'))
print(demo('b'))
#由于可记忆性连续调用该函数却不给该参数赋值,再次调用将保留上一次调用的结果,可能导致错误。
def demo1(newitem,old_list=None):
if old_list is None:
old_list=[]
old_list.append(newitem)
return old_list
[1, 2, 3, 4, '5']
['a', 'b', 'aaa']
['a']
['a', 'b']
关键参数:调用函数时的参数传递方式,与函数定义无关。这样可以按参数名字传递,实参顺序和形参顺序可以不一致,但是不影响参数的传递。
def demo(*p):
print(p)
#接受任意多的实参,并将其放到元组中
def demo(**p):
print(p)
#接受任意多的实参显式赋值,放入字典中。
def demo(a,b,c=5):
print(a,b,c)
demo(3,7)
demo(a= 7,b=3, c=6)
demo(c= 8,a= 9,b=0)
结果:
3 7 5
7 3 6
9 0 8
def demo(*p):
print(p)
demo(1,2,3)
def demo1(**p):
for item in p.items():
print(item)
demo1(x=1,y=2,z=3)
(1, 2, 3)
('x', 1)
('y', 2)
('z', 3)
def demo(*p):
print(p)
demo(1,2,3)
def demo1(**p):
print(p)
demo1(x=1,y=2,z=3)
(1, 2, 3)
{'x': 1, 'y': 2, 'z': 3}
传递参数时序列解包:
>>> seq=[1,2,3]
>>> demo(*seq)
6
>>> tup=(1,2,3)
>>> demo(*tup)
6
>>> dic={7:'a',8:'b',9:'KKK'}
>>> demo(*dic)
24
>>> def demo(a,b,c):
print(a+b+c)
>>> Set={1,5,9}
>>> demo(* Set)
15
>>>
字典作为实参时默认使用字典的键,如果要将字典的 键:值 元素作为参数则需要使用items()方法明确说明
如果要将 字典中 值 作为参数则要调用字典的 values () 方法进行说明
实参中 元素的个数与形参的个数必须相等。