函数
1,定义和使用
1
2
3
4
5
6
|
def 函数名(参数): ... 函数体 ... 返回值 |
函数的定义主要有如下要点:
- def:表示函数的关键字
- 函数名:函数的名称,日后根据函数名调用函数
- 函数体:函数中进行一系列的逻辑计算,如:发送邮件、计算出 [11,22,38,888,2]中的最大数等...
- 参数:为函数体提供数据
- 返回值:当函数执行完毕后,可以给调用者返回数据。
调用运行:可以带参数也可以不带参数
函数命名规则:
-函数名必须以下划线或者字母开头,可以包含任意字母数字下划线的组合,不能使用任何的标点符号
-函数名是区分大小写的
-函数名不能是python 内部保留字
-带参数
def test(x):
'''
y = 2 * x + 1
:param x: 整数数字
:return: 返回计算结果
'''
y = 2 * x + 1
return y
print(test(4))======>结果是:9
-不带参数
def test():
'''
y = 2 * x + 1
:param x: 整数数字
:return: 返回计算结果
'''
x = 4
y = 2 * x + 1
return y
print(test())========结果是:9
2,使用函数的好处:
- 减少代码量
- 保持一致性,易维护
- 可扩展性
3, 过程
过程是没有返回值的函数
1)函数没有返回值(返回值数=0),返回None
2) 返回值数=1(有一个返回值),返回object
3) 返回值数>1(有多个返回值),返回tuple(元祖)
例如:
def test01():
msg = "hi"
print(msg)==========>没有返回值,所以print(t1)值是None
def test02():
msg = "what is your name"
print(msg)
return msg=========>返回值是msg,所以print(msg)值是 what is your name
def test03():
msg = "what is your name"
print(msg)
return 1, 2, {1:2, 33: 44}, [23, 34]=====>多个返回值,所以返回值是元祖
(1, 2, {1:2, 33: 44}, [23, 34])
t1 = test01()
t2 = test02()
t3 = test03()
print(t1)
print(t2)
print(t3)
4,函数参数
1)位置参数 (注意,传参数时需对应。如:test(x, y, z) 参数应该对应输入3个
def test(x, y, z):
'''
a = x + y + z
:param x: 整数数字
:param y: 整数数字
:param z: 整数数字
:return: 返回计算结果
'''
a = x + y + z
return a
print(test(1, 2, 3))=====>结果是:6
2)关键字参数
def test(x, y, z):
'''
a = x + y + z
:param x: 整数数字
:param y: 整数数字
:param z: 整数数字
:return: 返回计算结果
'''
a = x + y + z
return a
test(x = 1, y = 2, z = 3)
print(test(x = 1, y = 2, z = 3))======>结果是: 6
3)位置参数与关键字参数混用时,位置参数必须在关键字参数左边。例如print(test(1,2,z=3)
一个形参只能一次传一个值,不能传多个值
4)默认参数
def test(x, y, z,type = 3): =====>type是默认参数。写参数时可以不写type
'''
a = x + y + z
:param x: 整数数字
:param y: 整数数字
:param z: 整数数字
:return: 返回计算结果
'''
a = x + y + z + type
return a
test(1, 2, 3)
print(test(1, 2, 3))=======>结果是: 9
5)参数组
-*args
接收多个参数,并把它放成列表的形式
*args除了不能传入关键字参数(例如:x=2)和**字典外,其他的都可以传
- **kwargs
接收多个参数,并把它放成字典的形式
**kwargs 只能接收关键字参数,如果接收字典的话,需要在字典前加上**
def test(**kwargs):
print(kwargs)#{'name': 34}
a = test(**{'name':34})
print(a)#None 函数没有返回值,所以默认None
**kwargs :一般放键值对 (例如: a=3,b=3)
*args 一般放(例如:1,2,3等具体参数)
*args 必须放在**kwargs前边。