Python中函数的定义方法:
1 def test(x): 2 "the function definition" 3 x += 1 4 return x 5 6 #def 定义函数的关键字 7 #test函数名 8 #():内可定义形参 9 #"":文档描述(非必要,但是强烈建议为你的函数添加描述) 10 # x += 1 :泛指代码块或程序处理逻辑 11 #return :定义返回值
调用运行:可以带参数也可以不带
函数名()
实例:
1 def test(x): 2 ''' 3 y = 2*x+ 1 4 :param x:整形数字 5 :return:返回计算果 6 ''' 7 y = 2 * x +1 8 return y 9 print(test) 10 a = test(3) 11 print(a) 12 #结果: 13 #<function test at 0x0000000002537048> 14 #7
函数:
过程:没有返回值的函数
函数的返回值
没有返回None
一个返回原型
一个以上返回元组
函数参数:
1、形参变量只有在被调用时才分配内存单元,在调用结束时,即可释放所分配的内存单元。因此形参只在函数内部有效,函数调用结束返回主调用函数后不能再使用该形参变量
2、实参可以常量,变量,表达式,函数等。无论实参是何种类型的量,在进行函数调用,他们都必须是确定的值,一遍将这些值传给形参。因此应预先用赋值、输入等方法使得参数获得确定值
1 def calc(x,y): 2 res = x **y 3 return res 4 5 a = 3 6 b = 5 7 c =calc(a,b) 8 print(c) 9 #结果:243
Return在函数中只有第一起效,并退出函数
传参的形式:
传入参数的方法
1、位置参数 必须一一对应,缺一不行
def test(x,y,z):#x=1 y=2 z=3 print(x) print(y) print(z) test(1,2,3)
2、关键字传参 无须一一对应,不可多不可少
关键字传参
位置参数和关键词参数混合使用必须在关键字参数左边
3、默认参数的使用
def handle(x,type="mysql"): print(x) print(type) handle('hello') #结果: #hello #mysql
默认值的再定义
handle('hello',type = 'sqlite')#默认值的在定义 handle('hello','sqlitw') #结果: #hello #sqlite #hello #sqlite
参数组:
** 传入的参数为字典
*传入的参数为列表
1 #参数组:**字典 *列表 2 #也可称为非固定长度的函数 3 def test(x,*args): 4 print(x) 5 print(args) 6 test(1,2,3,4,5,6) 7 结果: 8 #1 9 #(2, 3, 4, 5, 6)
传入的数据是列表的话
test(1,*(2,3,4)) #结果:(2, 3, 4)
1 def test(x,**kwargs): 2 print(x) 3 print(kwargs) 4 test(1,y=2,z=3) 5 #结果: 6 #1 7 #{'y': 2, 'z': 3}
在同一调用中,相同参数不能传两次
参数中同时传入普通形参,列表形参,字典形参
def test(x,*args,**kwargs):#固定方式定义参数顺序,防止调用出错 print(x) print(args) print(kwargs) # test(1,2,2,1,1,11,1,x=1,y=2,z=3)#报错 test(1,2,2,1,1,11,1,y=2,z=3)#报错 #结果: #1 #(2, 2, 1, 1, 11, 1) #{'y': 2, 'z': 3}
直接传入列表或字典
1 #直接以列表或字典的形式传入参数 2 test(1,*(1,2,45),**{'a':22}) 3 #结果: 4 #1 5 #(1, 2, 45) 6 #{'a': 22}
在传参时,假如有多余的位置参数传入args,多余的关键词参数传入kwargs
2、关键字传参 无须一一对应,不可多不可少