1. 函数的基本定义:
def printMax(a,b):
if a>b:
print(a,'较大值')
else:
print(b,'较大值')
printMax(20,30)
2.文档字符串(函数的注释):
解释:函数体开头部分注明函数的作用
用三个双引号或者单引号来实现。
用help(函数名.__doc__)函数打印出文档字符串来。这是前后两个下划线。
例如:
def printMax(a,b):
'''用于比较两个数的大小,返回最大值'''
if a>b:
print(a,'较大值')
else:
print(b,'较大值')
printMax(20,30)
help(printMax.__doc__)
运行结果:
30 较大值
No Python documentation found for '用于比较两个数的大小,返回最大值'.
Use help() to get the interactive help utility.
Use help(str) for help on the str class.
3.函数的返回值
return : 两个作用: i:返回值 ii:退出
例如:
def printMax(a,b):
'''用于比较两个数的大小,返回最大值'''
if a>b:
return a
else:
return b
c = printMax(20,30)
print(c)
4 全局变量 和 局部变量:
i:函数体中如果要修改全局变量必须用global修饰一下。
ii:局部变量和全局变量同名,则在局部,全局变量隐藏。
例题:
a = 3 #全局变量
def test01():
b = 4 #局部变量
print(b*10)
global a #修改全局变量需要增加global声明
a = 300
print(locals()) #打印输出全部的局部变量
print(globals()) #打印输出全部的全局变量
test01()
print(a)
运行结果:
{'b': 4}
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x019BC230>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'C:/Users/Lenovo/PycharmProjects/mypro01/mypython01.py', '__cached__': None, 'a': 300, 'test01': <function test01 at 0x01A4A6A8>}
300
5. 默认值参数
def test01(a,b,c=10,d=20): #默认参数值必须在普通参数值的后面
print(a,b,c,d)
test01(8,9)
test01(3,4,5)
test01(3,4,5,6)
运行结果:
8 9 10 20
3 4 5 20
3 4 5 6
6.命名参数
def test01(a,b,c,d): #默认参数值必须在普通参数值的后面
print(a,b,c,d)
test01(d=1,b=2,c=5,a=0)
运行结果:
0 2 5 1
7.可变参数
i: 一个*表示将多个参数收集到元组当中。
ii:两个**表示将多个参数收集到字典当中。
例题:
def test01(a,b,*c):
print(a,b,c)
test01(1,2,3,4,5)
def test02(a,b,**c):
print(a,b,c)
test02(1,2,name='任善文',age=21)
def test03(a,b,*c,**d):
print(a,b,c,d)
test03(1,2,3,4,5,name='小暖猫',age=21)
运行结果:
1 2 (3, 4, 5)
1 2 {'name': '任善文', 'age': 21}
1 2 (3, 4, 5) {'name': '小暖猫', 'age': 21}
8.强制命名参数:
解释:可变参数后面增加新的参数,传递的实参必须都要赋值。
代码:
def test01(*a,b,c):
print(a,b,c)
test01(1,2,4,5,b=3,c=4)
运行结果:
(1, 2, 4, 5) 3 4
9.lambda 表达式
注释:I:用来声明匿名函数,只允许包含一个表达式
II:基本语法格式:lambda 变量1,变量2,变量3:表达式
例如:
f = lambda a,b,c:a+b+c
print(f)
print(f(2,3,4))
运行结果:
<function <lambda> at 0x02E0A6A8>
9
g = [lambda a:a*2,lambda b:b*3,lambda c:c*4]
print(g[0](6),g[1](7),g[2](9))
运行结果:
12 21 36
解释:相当于给a,传递6,给b传递7,给c传递9。[]中的0,1,2代表元组下标。()代表传递进去的数。
10.eval() 函数
用于执行操作
代码:
a = 10
b = 20
c = eval("a+b")
print(c)
dict1 = dict(a=100,b=200)
d = eval("a+b",dict1)
print(d)
运行结果:
30
300