函数
一.函数可以有多个返回值
def divid(a,b): shang=a//b yushu=a%b return shang,yushu sh,yu=divid(5,2) print(sh,yu)#输出2.1
本质上时利用了元组
二.缺省参数
调用函数时,缺省参数的值如果没有传入,则被认为是默认值。
注意:带有默认值的参数一定要位于参数列表的最后面。
三.不定长参数
有时可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,声明时不会命名。
基本语法:
def functionname([formal_args,] *args, **kwargs): "函数_文档字符串" function_suite return [expression]
加了星号(*)的变量args会存放所有未命名的变量参数,args为元组;而加**的变量kwargs会存放命名参数,即形如key=value的参数, kwargs为字典。
def fun(a,b,*args,**kwargs): print("a=",a) print("b=",b) print("args=",args) print("kwargs:") for key,value in kwargs.items(): print(key,"=",value) fun(1,2,3,4,5,c=6,d=7,e=8)
四..引用传参
Python中函数参数是引用传递(注意不是值传递)。对于不可变类型,因变量不能修改,所以运算不会影响到变量自身;而对于可变类型来说,函数体中的运算有可能会更改传入的参数变量。
a+=a与a=a+a的区别:
当a为不可变类型时,两者结果相同
当a为可变类型时,a+=a相当于在全局变量a的内存地址上进行修改;而a=a+a是定义一个局部变量a,将a+a的值赋予它,所以全局变量a的值不变