一、多函数程序执行流程
(一)共用全局变量
# 定义全局变量 num = 0 def test1(): global num # 修改全局变量 num = 100 def test2(): # 调用test1函数中修改后的全局变量 print(num) test1() test2() ---------------------------------- 100
(二)返回值作为参数传递
- 示例一
def test1(): return 50 def test2(num): print(num) # 1.保存函数test1的返回值 result = test1() # 2.将函数返回值所在变量作为参数传递到test2函数 test2(result) ------------------------------------ 50
- 示例二
def demo1(): li = [] for i in range(1,10): li.append(i) return li a = demo1() def demo2(): print(a) demo2() ---------------------------- [1, 2, 3, 4, 5, 6, 7, 8, 9]
二、拆包和交换变量值
(一)拆包
-
示例一
t1 = ("兰博基尼",300) car_name,car_price = t1 print(car_name) print(car_price) ---------------------- 兰博基尼 300
- 示例二
def demo(): return 100,200 a = demo() num1,num2 = a print(num1) print(num2) ----------------------- 100 200
(二)交换变量值
- 示例一
a = 10 b = 20 a,b = b,a print(a) print(b) ----------------- 20 10
- 示例二
c = 0 a = 10 b = 20 c = a a = b b = c print(a) print(b) ------------- 20 10
三、递归
- 函数内部自己调自己
- 必须有出口
(一)计算1,2,3数字的累加和
def num_numbers(num): if num == 1: return 1 result = num + num_numbers(num-1) return result print(num_numbers(3)) ---------------------------------- 6
- 解析图
(二) 递归三原则:
- 递归必须有停止条件
- 递归必须改变其状态并向停止条件靠近
- 递归必须递归地调用自己
四、lambda表达式
(一)概述
-
如果有一个函数有一个返回值,并且只有一句代码,可以使用lambda简化。
1、语法
lambda 参数列表:表达式
2、注意
- lambda表达式的参数可有可无,函数的参数在lambda表达式中完全适用。
- lambda函数能接收任何数量的参数但只能返回一个表达式的值。
(二)实例
1、方式一
def demo1(): return 200 print(demo1()) print((lambda :100)()) # print((lambda 参数:200)(传参)) -------------------------------- 200 100
2、方式二
def demo2(a): return a print(demo2("我是demo2")) print((lambda a:a)("我是lambda2")) -------------------------------- 我是demo2 我是lambda2
3、方式三
def demo3(a,b): return a+b print((lambda a,b:a+b)(10,20)) ------------------------- 30
五、lambda的参数形式
(一)默认参数的lambda表达式
def demo4(b,c,a=10): return a+b+c print((lambda b,c,a=10:a+b+c)(10,20)) ------------------------------------- 40
(二)不定长参数的lambda表达式
def demo5(*args,**kwargs): return args,kwargs print((lambda *args,**kwargs:(args,kwargs))(1,2,3,4,5,a=30,b=40)) # 1 print((lambda *args:args)(1,5,6,9,6)) # 2 print((lambda **kwargs:kwargs)(name="张三",age=60)) --------------------------------------------- ((1, 2, 3, 4, 5), {'a': 30, 'b': 40}) (1, 5, 6, 9, 6) {'name': '张三', 'age': 60}
(三)待判断的lambda
fn = (lambda a,b: a if a > b else b)(1000,5000) print(fn) ----------------------------------------- 5000
(四)列表数据按字典key的值排序
students = [ {'name':'张三','age':20}, {'name':'李四','age':19}, {'name':'王五','age':22} ] # 按age值降序排列 students.sort(key=lambda x: x['age'],reverse=True) print(students) ------------------------------------ [{'name': '王五', 'age': 22}, {'name': '张三', 'age': 20}, {'name': '李四', 'age': 19}]
六、高阶函数
(一)abs()
-
abs()函数可以完成对数字求绝对值计算。
def add_num(a,b): return abs(a) + abs(b) result = add_num(-1,2) print(result) --------------------------- 3
(二)map(function,iterable)
-
将传入的函数变量function作用到iterable变量的每个元素中,并将结果组成新的列表
- function--函数
- iterable--序列
list1 = [1,2,3,4,5] def func(x): return x ** 2 result = map(func,list1) print(result) print(list(result)) ----------------------------- <map object at 0x000002766C2BBE80> [1, 4, 9, 16, 25]
(三)filter()
- filter(func,list)函数用于过滤掉不符合条件的元素,返回一个filter对象。
list1 = [1,2,3,4,5,6,7,8,9,10] def func(x): return x % 2 == 0 result = filter(func,list1) print(result) print(list(result)) -------------------------- <filter object at 0x000002766C2BBE20> [2, 4, 6, 8, 10]标签:return,进阶,函数,num,result,print,def,lambda From: https://www.cnblogs.com/LoLong/p/16748720.html