dsrybf,丰田俱乐部,懒人谷
目录
这一篇式相继上一篇5.1python函数(一)的进阶文章。
一个重要的思想是:我们把”函数名“当成一个变量来处理。
偏函数:在不修改原函数的原函数前提下,修改函数的默认值,新建的函数叫偏函数。
# 定义一个有默认值的函数 def test1(a, b, c, d=1): print(a+b+c+d) # 现在有一个需求,想把默认值改为c=2,d=3 # 我们需要在重新构造一个全新的函数? # 不需要,下面的定义类似类的继承,也就是偏函数的定义 def test2(a, b, c=2, d=3): test1(a, b, c, d) # 调用偏函数 test2(1, 2)
函数名也是一个变量,也可以通过赋值,传递给其他变量。
当函数的形参接收的是一个函数名的时候,则称该函数是高阶函数
# 动态的计算两个数 def caculate(num1, num2, caculatefun): result = caculatefun(num1, num2) print(result) # 求差函数 def mysum(a, b): result = a + b print("求和函数") return result # 求和和函数 def mysub(a, b): result = a - b print("求差函数") return result # 调用高级函数 caculate(4, 2, mysum) caculate(4, 2, mysub)
当函数的返回值是:一个函数名称时,我们称返回值函数
# 定义一个返回值函数 def get_fun(symbol): # 子函数求和 def my_sum(a, b): return a+b # 子函数求差 def my_sub(a, b): return a-b # 根据判断返回不同的函数名 if symbol == "+": return my_sum elif symbol == "-": return my_sub # 调用返回函数 func = get_fun("+") result = func(1, 2) print(result)
没有名字的函数,我们称匿名函数,也称lambda函数。
语法:lambda var1, var2,……:表达式
注意:只能写一个表达式,而且只能用一次。
# 定义一个匿名函数 func = lambda x, y: x + y result = func(1, 2) print("结果是:", result)
首先清楚两个概念:
外部函数:在外出定义的函数。
内部函数:嵌套在一个函数里面的和函数。
闭包函数的定义:(满足三个条件)
- 必须有函数嵌套
- 内部函数引用到外部的变量
- 返回值是内部函数名
注:内部函数需要修改外部变量,需要用nolocal 声明
# 定义一个闭包函数 def test(a): b = 2 def test2(): nonlocal b b = 5 print("a:", a) print("b:", b) return test2 # 调用闭包函数 fun = test(1) fun()
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Python爬虫:Request Payload和Form Data的简单区别说明
浅谈Python中threading join和setDaemon用法及区别说明
Python3-异步进程回调函数(callback())介绍
python继承threading.Thread实现有返回值的子类实例
Python中使用threading.Event协调线程的运行详解
网友评论