函数
变量保存数据,函数保存的是功能。
-
匿名函数
匿名函数的本质还是函数,他们除了定义的语法不同,其他的东西都一样
注意:只能用来实现功能很简单的函数
语法:
lambda 形参列表: 返回值 # example sum1 = lambda num1,num2 : num1 + num2
# 练习:写一个匿名函数判断指定的数是否是偶数,如果是返回True,否则返回False even_number = lambda num1: num1%2==0 print(even_number(9)) # 练习2:写一个匿名函数判断指定的年是否是闰年,如果是返回True,否则返回False leap_year = lambda year1: (year1%4 == 0 and year1%100 != 0)or(year1%400==0) print(leap_year(1999))
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DVLyKyDd-1646136603127)(F:\截图\day121.png)]
-
变量的作用域
1) 变量定义以后可以使用的范围
2)根据变量的作用域的不同我们将变量分为全局变量和局部变量
a. 全局变量:
没有定义在函数和类里面的变量都是全局变量;
全局变量的作用域是从定义开始到程序结束。
全局变量保存在全局的栈区间,全局栈区间在程序结束后才会释放
a = 100 # a 就是全局变量
b. 局部变量:
定义到函数中的变量是局部变量,其中包括形参;
局部变量的作用域是从定义开始到函数结束。
调用函数的时候系统会自给这个函数创建一个临时栈区间用来保存在函数中产生的数据(包括局部变量),当函数调用结束这个临时栈区间会自动释放
def func1(x): d = 3 # x 和 d 都是局部变量
-
global 关键字:
global 的使用:
作用1:在函数里面去修改一个全局变量的值,修改之前先用global对变量进行说明。
作用2:在函数中定义一个全局变量
-
实参高阶函数
1)在python中定义函数其实就是定义类型是function的变量,函数名就是变量名
变量能干的事情函数都可以干
2) 高阶函数:实参高阶函数、返回值高阶函数
-
常用的实参高阶函数
max 、 min 、sorted(sort)、map、reduce
- max(序列) —— 求序列中值最大的元素
max(序列,key=函数) —— 根据函数指定的规则获取序列中最大的元素
函数的要求:有且只有一个参数(这个参数代表序列中的元素)
有一个返回值(比较对象)
-
min(序列,key=函数) —— 根据函数指定的规则获取序列中最小的元素
-
sorted
-
map —— 将序列中的元素按照函数指定的规则进行变换得到一个新的序列
要求:① 有且只有一个参数(代表序列中元素)
② 有一个返回值(新序列中的元素 - 在这儿只需要描述清楚新序列中的元素与原序列元素的关系)
map(函数,序列)
map(函数,序列1,序列2)
map(函数,序列1,序列2,序列3)
-
reduce —— 将序列中的元素按照指定的规则合并成一个数据
reduce( 函数,序列,初始值 ) —— 初始值一般是0 ,1 或者空串
函数的要求:1 有且只有两个参数(第一个参数指向初始值,第二个参数指向序列中的每个元素)
2 有一个返回值( 决定合并方式 )
注意: 使用reduce之前必须先从functools模块中导入
from functools import reduce
# 获取函数中的最大值 nums = [1,4,7,65,8,567,4574] print(max(nums)) print(max(nums,key=lambda item:item)) # 获取nums中个位数最大的元素 nums =[23,2,35,79,7970,436] print(max(nums,key = lambda item:item%10))
1) 如果函数的参数是函数提供实参的方式:
a. 用普通函数的函数名
b.使用匿名函数
2)
模块和包、异常捕获
文件操作
(nums,key = lambda item:item%10))
1) 如果函数的参数是函数提供实参的方式:
a. 用普通函数的函数名
b.使用匿名函数
2)
模块和包、异常捕获
文件操作