前言:
把上课的笔记整理出一些可能常用到的函数,持续更新中。。。
如有纰漏,请告知我,多谢~!
一、Globals()函数和locals函数()
Globals() 返回当前全局作用域内变量的字典 |
locals() 返回当前局部作用域内变量的字典 |
二、lambda表达式
Also called 匿名函数
作用 |
创建一个匿名函数对象 |
同def类似,但不提供函数名 |
|
语法 |
lambda [ 形参1, 形参2,… ] : 表达式 注:[ ]可略 |
说明 |
1.lambda只是一个表达式,它用来创建一个函数对象 |
2. 当lambda表达式调用时,先执行冒号(:)后的表达式,并返回表达式的结果的引用 |
|
3.lambda表达式创建的函数只能包含一条表达式; |
|
4. lambda比函数简单且可以随时创建和销毁,有利于减少程序的耦合度;调用一次,就创建一次。 |
|
示例 |
myadd = lambda a, b: a + b # 表达式 print("10 + 20 =", myadd(10, 20)) print("30 + 40 =", myadd(30, 40)) |
三、eval函数和exec函数
3.1 eval函数
作用 |
把一个字符串当成一个表达式来执行,返回表达式执行后的结果 |
格式 |
eval(source,globals=None,locals=None) |
示例 |
S = input(“请输入一个表达式”) V= eval(s) #解释执行字符串,得到表达式的结果 Print(V) >>>输入100+200*300 >>>得到60100,而不是字符串‘100+200*300’ |
# 此示例示意eval的用法: x = 100 y = 200 v = eval('x + y') print(v) # 300 dict_local = {'x':1, 'y': 2} v = eval('x + y', None, dict_local) print(v) # 3 dict_global = {'x':10, 'y': 20} v = eval('x + y', dict_global, {'y':2}) print(v) # 12 v = eval('x + y', None, {'y':2}) print(v) # 12 v = eval('x + y', {'x':1}) print(v) # 1 + y 出错 |
3.2 exec函数
作用 |
把一个字符串当成程序来执行 |
格式 |
exec(source,global= None,locals=None) |
# exec.py # 此示例示意exec函数的使用 x = 100 y = 200 s = '''z=x+y print('z=', z) print("hello world!") ''' exec(s) # 执行 s这个字符串 print(z) dict_local = {'x': 1} exec(s, None, dict_local) print(dict_local)
四、高阶函数
4.1什么是高阶函数
High order function
需满足其中一个条件 |
1.函数接收一个或多个函数作为参数传入 |
2.函数返回一个函数 |
|
内建的高阶函数 |
map、filter、sorted |
4.2 有哪些高阶函数
4.2.1 Map函数
作用 |
用函数和可迭代对象中的每一个元素作为参数返回新的可迭代对象; |
语法 |
Map(func,*iterables) |
要求 |
Func函数接收的参数个数必须与可迭代对象的个数相同;当最短的一个可迭代对象不再提供数据时迭代结束 |
示例 |
Def power2(x): Return x ** 2 #生成一个iterable,使其可以生成1~9的平方 For x in map(power2,range(1,10)): Print(x) |
L1 = [1, 2, 3, 4] L2 = [5, 6, 7, 8] #生成数据为:1**5, 2**6, def power_x_y(x,y): return x ** y for x in map(power_x_y, L1, L2): print(x) |
4.2.2 Filter函数
格式 |
filter(function,iterable) |
作用 |
筛选可迭代对象中的数据,返回一个可迭代对象,此可迭代对象将对可迭代对象提供的数据进行筛选 |
说明 |
函数function将对iterable中的每个元素进行求布尔值,返回True则保留,返回False则丢弃。 |
示例 |
Def isodd(x): Return x % 2 == 1 For x in filter(isodd, range(41,53)): Print(x) |
4.2.3 Sorted 函数
作用 |
将原可迭代对象提供的数据进行排序,生成排序后的列表 |
格式 |
Sorted(iterable, key=None, reverse=False) |
说明 |
1.Key函数是用来提供一个排序参考值的函数,这个函数的返回值将作为排序的依据 |
2.Reverse标志用来设置是否降序排序 |
|
示例 |
L = [5, -2, -4, 0, 3, 1] L2 = sorted(L) #要得到这样的结果该怎么办? [0, 1, -2, 3, -4, 5] L3 = sorted(L, key=abs) Ps:不要加括号,这是让sorted函数去调用key所对应的函数;而不是自己调用abs() |
Names = [‘Tom’,‘Jerry’,‘Spike’,‘Tyke’] #结果[‘Tom’,‘Tyke’,‘Jerry’,‘Spike’] L = sorted(names, key=len) |