Python函数的定义

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
View Code

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、关键字传参 无须一一对应,不可多不可少

猜你喜欢

转载自www.cnblogs.com/msj513/p/9194864.html
今日推荐