1. 内置函数
作用域相关:
locals() 返回当前作用域中的名字
globals() 返回全局作用域中的名字
迭代器相关:
range() 生成数据
next() 迭代器向下执行一次, 内部实际使用了__next__()方法返回迭代器的下一个项目
iter() 获取迭代器, 内部实际使用的是__iter__()方法来获取迭代器
字符串类型代码的执行:
eval() 执行字符串类型的代码. 并返回最终结果
print(eval("2+2")) # 4 n = 8 print(eval("2+n")) # 10 def func(): print(666) eval("func()") # 666
exec() 执行字符串类型的代码
exec(""" for i in range(10): print(i) """) exec(""" def func(): print("我是周杰伦") func() """)
compile() 将字符串类型的代码变异. 代码对象能够通过exec语句来执行或者eval()进行求值
''' 参数说明: 1. resource 要执行的代码, 动态代码片段 2. 文件名, 代码存放的文件名, 当传入了第一个参数的时候, 这个参数给空就可以了 3. 模式, 取值有3个, 1. exec: 一般放一些流程语句的时候 2. eval: resource只存放一个求值表达式. 3. single: resource存放的代码有交互的时候. mode应为single ''' code1 = "for i in range(10): print(i)" c1 = compile(code1, "", mode="exec") exec(c1) code2 = "1+2+3" c2 = compile(code2, "", mode="eval") a = eval(c2)
print(a)
code3 = "name = input('请输入你的名字:')"
c3 = compile(code3, "", mode="single")
exec(c3)
print(name)
有返回值的字符串形式的代码用eval(). 没有返回值的字符串形式的代码用exec(). 一般很少用到compile()
输入和输出相关:
input() 获取用户输入的内容
print() 打印输出
内存相关:
hash() 获取到对象的哈希值(int, str, bool, tuple)
id() 获取到对象的内存地址
文件操作相关:
open() 用于打开一个文件, 创建一个文件句柄