自定义函数无参数、无返回值
def 函数名()
语句
无参数、有返回值def 函数名()语句return 需要返回的数值
注意
在一个函数中定义的变量,只能在本函数中使用(局部变量)在函数外定义的变量,可以在所有函数中使用(全局变量)函数返回值扩展在python中我们可以不可以返回多个值?
def test(a,b):
c = a/b
d = a%b
return c,d
e,f = test(5,2)
缺省参数(函数参数的默认值)在调用函数时,缺省参数的值如果没有传入,则被认为是默认值。
def printLine(a=5)
print('*'*a)
printLine(6)#如果传入6则等于6 如果不传入任何值,则为5
注意 重要的事情说三遍缺省参数(即带有默认值的参数)一定要位于参数列表的最后面缺省参数一定要位于参数列表的最后面缺省参数一定要位于参数列表的最后面
示例1:
def print(a,b,c=5):
pass
示例2:
def test(name,age=10):
pass
不定长参数有时可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,声明时不会命名。基本语法如下:
def functionname([formal_args,]*args,**kwargs):
'''函数_文档字符串'''
fu nction_suite
return [expression]
加了星号()的变量args会存放所有未命名的变量参数,aegs为元组;而加 **的变量kwargs会存放命名参数,即形如key=value的参数,kwargs为字典。
这种方式叫拆包
def fun(a,b,*args,**kwargs):
'''可变参数演示示例'''
print ('a=',a)
print ('b=',b)
print ('args=',args)
for k,v in kwargs.items():
print ('key=%s,value=%s'%(k,v))
#调用的时候(调用方法示例1)
fun(1,2,3,4,5,m=6,n=7,p=8)#注意传递的参数对应
#调用方法示例2:
test1 = (3,4,5)
test2 = {'m':6,'n':7,'p':8}
fun(1,2,*test1,**test2) #注意元组与字典的传递方式 这种方式叫拆包
#注意,如果不加星号,会全部变为元组,即字典为空 如下
fun(1,2,test1,test2)
#这个时候会返回的是
>>> a = 1
>>> b = 2
>> > args = ((3,4,5),{'m'=6,'n=7','p'=8})
>>> kwargs:
>>>
函数的嵌套调用