4.1 函数的定义
函数的定义:
def 函数名(参数): pass return 表达式
函数名命名规则: 字母、数字和下划线组成,和变量命名规则一致 pass在这里表示什么都没有,不执行任何操作 return 后面可以返回任意表达式,但不能是赋值语句
函数调用:
函数名(参数)
return 和 print 的区别:
return没有写返回值的话,默认None
return是函数的返回值,返回值可以赋值给变量,而print只是打印出来
4.2 函数参数
必备参数:
def func(x): print(x)
func(1)
默认参数:
def func(x, y=None): print(x) print(y)
func(1) func(1, 2)
注意:默认参数要位于必备参数列表的后面
不定长参数:
def func(*args, **kwargs): print(args) print(kwargs)
args: 参数包装成一个元组 kwargs: 参数包装成字典
调用1:func(1, 2, 3, a=4, b=5, c=6)
调用2:func(*(1, 2, 3), **{‘a‘: 4, ‘b‘: 5, ‘c‘: 6})
print (func()): 函数返回值
print (func) : 函数本身
? def func(a,b,c): print(a) print(b) print(c) my_list=[1,5,2] func(*my_list) #一个 * 解包列表等 两个解字典 ? ?
4.3 Python中简单内置函数
内置对象查看:
dir( builtins )
常见函数:
len 求长度 min 求最小值 max 求最大值 sorted 排序 reversed 反向 sum 求和
进制转换函数:
bin 转换为二进制 oct 转换为八进制 hex 转换为十六进制 ord 字符转ASCII码 chr ASCII码转字符
4.4 Python中高级内置函数
返回一个可以枚举的对象
enumerate
取出字符串中的内容
将字符串str当成有效的表达式来求指并返回计算结果
eval
执行字符串编译过的字符串 不返回结果
exec
过滤器
filter
对于参数中的每个元素都应用函数中,并将结果作为列表返回
map()
将对象逐一与()中的方法配对
zip
my_list=[1,2,5,6,9,8,7,4,5,66,55,54,444,] def sorted_func(data,my_order): if my_order is True: result=sorted(data,reverse=False) return result elif my_order is False: result = sorted(data, reverse=True) return result else: print(‘youwenti‘) print(sorted_func(my_list,True)) ? ######### zip ? my_dict={‘a‘:100,‘b‘:200,‘c‘:300} my_tuple=(400,500,‘haha‘) def exchange_list (my_dict,my_tuple): new_dict= dict(zip(my_dict.keys(),my_tuple)) new_tuple= tuple(my_dict.values()) return new_dict,new_tuple new_dict,new_tuple = exchange_list (my_dict,my_tuple) print(new_tuple) print(new_dict) ? ############# map ? a=[1,2,3,4] def func (args): return args*100 result=list(map(func,a)) print(result) ? ############ enumerate ? a=[22,66,77,99,656] for i in enumerate(a): print(i) ? ################ filter a=[1,2,3,4] def func(args): if args>2: return True else: return False result=list(filter(func,a)) print(result) ?
4.5 匿名函数
4.6 函数作用域
外部不能访问函数内部变量: 数内部能够访问函数外部变量 函数里面不能修改函数外部变量
global(全局变量): 最外层
x = 123 def fun1(): global x x += 1 return x
nonlocal(局部变量): 上一层变量
def fun2(): x = 123 def fun3(): nonlocal x x += 1 return x return fun3()
4.7嵌套函数 闭包
嵌套函数
def func_out(): def func_int(): print(‘nei ‘) return func_int result=func_out() result()
闭包:
闭包是函数里面嵌套函数,外层函数返回里层函数,这种情况称之为闭包。
闭包是概念,不是某种函数类型,和递归的概念类似,就是种特殊的函数调用,闭包可以得到外层函数的局部变量,是函数内部和函数外部沟通的桥梁
def fx(x): x += 1 def fy(y): return x*y return fy
? def func_out(times): def func_int(num): return times*num return func_int time_5=func_out(5) print(time_5(100)) time_8=func_out(8) print(time_8(100)) ?
4.8递归和回调函数 (要有递归的终止条件)
1.递归:函数自身调用自身,但是使用时类似于条件循环一样,要有递归的终止条件 ? def factorial(num): if num ==1: return num return factorial(num-1)*num ? print(factorial(6))2.回调函数:
自身是一个函数,只是被传入到另一个函数当中,供其调用 ? 回调函数不一定会被调用,是否调用由被传入函数的内部逻辑决定
? def add (x,y): return x+y def multipy(x,y): return x*y def use(func,num1,num2): return func(num1,num2) a=10 b=20 print(use(add,a,b)) ?
4.9 肥波数列
def feib(num): a=0 b=1 while b <num: print(b) a,b=b,a+b ? feib(10)
def feib(num): if num==1 or num==2: return 1 return feib(num-1)+feib(num-2) ? print(feib(5))