1.r=compile(s,"<string>","exec")
compile()将字符串编译成python代码
2.exec(r) 执行python代码
3.eval("8*6") eval("")里面只能执行表达式,执行eval()会有返回值,exec执行完无返回值.
4.filter和map
filter(函数,可迭代对象),返回一个符合条件的元素集合.对可迭代对象进行筛选.
map(函数,可迭代对象)相当于for循环,对每个元素进行处理并返回新的处理结果.
5.with open('config','r') as f:
for line in f: 这样是一行一行加载操作比f.readlines()一下把所有文件全部加载到内存效率高
6.值为false的数据
0 ,None, " ", [], {}, ()
7.all() 和 any()
这两个函数接收一个可以被迭代的对象,all()要求对象中所有的数据为true才返回true,any()要求
对象中至少有一个返回true的数据才返回true
8.bin() 接收10进制转换成二进制
oct() 十进制》八进制
hex() 十进制》十六进制
9.utf-8编码一个汉字是3个字节,GBK编码一个汉字是2个字节.一个字节是8位
n = bytes("汉字",encoding="utf-8")
把汉字转换成字节类型,n的结果跟encoding设置的不同而不同
str1 = str(n,encoding="utf-8")
10.chr() 把ASCII码表中的数字转成对应字符
ord() 把字符转换成对应数字
11.file.open()的时候获取里面的内容都是字符串类型
12.python p1.py 执行流程
1.file.open读取文件内容为string加载到内存
2.python编译器把字符串编译成特殊代码
3.执行代码
13.s="print(123)"
r = compile(s,"<string>","exec") python编译字符串成python代码
exec(r) exec()也可以接收执行字符串,无返回值 python执行编译后的代码字符串
s="8*7"
ret=eval(s) python运算表达式并且返回结果赋值给ret
14.eval的局限性和exec的局限性
str ="a,b=10,20\nprint(random.randrange(a,b))"
r = compile(str,"<string>","exec")
eval(str) 或者 exec(str) or exec(r)
如果在eval中执行多条python语句,这样会出现异常.因为eval只能执行一个python表达式并且
会返回这个表达式的值,所以多条语句的情况下不适合用eval。
exec(str)或者exec(r)都可以一次正确的执行多条python语句,但是exec无返回值.