1.foo()()()
name="alex"
def foo():
name='1hf'
def bar():
name="wpq"
print(name)
def tt():
print(name)
return tt
return bar
foo()()()
foo()()运行foo函数的返回值bar()
foo()()()运行bar()的返回值
2.匿名函数
lambda x:x+1
关键字 形参 表达式
3.函数式编程
特征
(1)不可变数据
(2)第一类对象:函数即变量,可以当成变量用,函数当成参数传入其他函数
def foo(n):
print(n)
def bar(name):
print('my name is %s'%name)
foo(bar)#将bar直接作为foo的变量使用
foo(bar('alex'))#将bar的返回值作为foo的变量使用
高阶函数,函数是变量
(3)尾调用优化
在函数的最后一步调用另一个函数(注意不是最后一句,是最后一步)
这样不用保存到堆栈
由递归转为尾调用
4.map函数
第一个参数:处理方法 lambda x :x+1
第二个参数:可遍历的变量
for循环,逐个读取可遍历变量中的数据,用第一个参数的处理方法处理
5.filter函数
print(list(filter(lambda n:not n.endswith('sb'),movie_people)))
将布尔值为true的保留
6.reduce函数
将整体数据压缩合并
map所有数据处理一遍,filter滤波,reduce压缩
map处理序列中的每个元素,得到的结果是一个“列表”,该列表的个数及位置和原先一样
filter遍历序列中的每个元素,判断每个元素得到的布尔值,如果是True则留下来
reduce
7.内置函数
abs绝对值
all将序列中所有元素做布尔运算,0,None为False,其他全为True, 全部是True返回True
any只要有一个为真,就返回true
bin 十进制转二级制
bool转布尔值
bytes将字符串转字节
print(bytes("你好",encoding='utf-8'))
结果:b'\xe4\xbd\xa0\xe5\xa5\xbd'
应用:将数据转为字节后网络传输
将字节解码print(bytes("你好",encoding='utf-8').decode('utf-8'))
chr 转为ascii
dict
dir列举对象下都有哪些方法
divmod去商和余数 print(divmod(10,3)) 结果:(3,1) 搜索结果分页用
eval提取字符串中的数据结构,把字符串中的数学运算计算出来
hash哈希运算,可哈希的数据类型即不可变数据类型
应用:将软件进行哈希运算,下载的软件比较哈希,看是否传输过程中加入了木马
help
hex转十六进制
oct转八进制
id
isinstance类型判断
print(isinstance(1,int))
print(isinstance('sd',str))
golobals
print(golbals())打印全局变量
max取列表中最大值
min
zip 拉链
print(list(zip(('a','b','c'),(1,2,3))))结果:[('a', 1), ('b', 2), ('c', 3)]
8.chr 对应ascii码表中的字符
ord 字符对应的ascii码表中的数值
9.print(pow(2,4)) 2**4=16
print(pow(2,4,3)) 2**4%3=1 2的4次方对3取余数
10.reversed
l= [1,2,3,4]
print(list(reversed(l)))
结果:[4, 3, 2, 1]将列表反转
11.round 四舍五入
12.set
print(set("hello"))将字符串变为集合{'l', 'h', 'e', 'o'}
13.slice切片
l='hello'
print(l[3:5])#取l的第三位到第5位
s1=slice(3,5)
print(l[s1])
s2=slice(1,4,2)#可以定义步长
print(l[s2])
14.sorted
people=[
{'name':'xxx','age':18},
{'name':'rrr','age':168},
{'name':'ttt','age':1778},
]
print(sorted(people,key=lambda dic:dic['age']))
15.str转字符串
16.sum
l=[1,2,3,4]
print(sun(1))
17.vars
print(vars())没有参数,打印当前的局部变量
有参数,打印该类型的所有方法,以字典形式
18.调用其他文件中的函数
import test
test.sayhi()
__import__ ('test')可以调用字符串