12类 Python 内置函数帮你打好基础( 五 )

4. 和迭代器/生成器相关

  • range() 生成数据
  • next() 迭代器向下执行一次, 内部实际使?用了__ next__()?方法返回迭代器的下一个项目
  • iter() 获取迭代器, 内部实际使用的是__ iter__()?方法来获取迭代器
ss="dp-xml">ss="alt">for i in range(15,-1,-5): ss="">    print(i) ss="alt"># 15 ss=""># 10 ss="alt"># 5 ss=""># 0 ss="alt">ss="attribute">lst = [1,2,3,4,5] ss="">ss="attribute">it = ss="attribute-value">iter(lst)  #  __iter__()获得迭代器 ss="alt">print(it.__next__())  #1 ss="">print(next(it)) #2  __next__()   ss="alt">print(next(it))  #3 ss="">print(next(it))  #4 5. 字符串类型代码的执行
  • eval() 执行字符串类型的代码. 并返回最终结果
  • exec() 执行字符串类型的代码
  • compile() 将字符串类型的代码编码. 代码对象能够通过exec语句来执行或者eval()进行求值
ss="dp-xml">ss="alt">ss="attribute">s1 = ss="attribute-value">input("请输入a+b:")  #输入:8+9 ss="">print(eval(s1))  # 17 可以动态的执行代码. 代码必须有返回值 ss="alt">ss="attribute">s2 = ss="attribute-value">"for i in range(5): print(i)" ss="">ss="attribute">a = ss="attribute-value">exec(s2) # exec 执行代码不返回任何内容 ss="alt"> ss=""># 0 ss="alt"># 1 ss=""># 2 ss="alt"># 3 ss=""># 4 ss="alt">print(a)  #None ss=""> ss="alt"># 动态执行代码 ss="">exec(""" ss="alt">def func(): ss="">    print(" 我是周杰伦") ss="alt">""" ) ss="">func()  #我是周杰伦 ss="dp-xml">ss="alt">ss="attribute">code1 = ss="attribute-value">"for i in range(3): print(i)" ss="">ss="attribute">com = ss="attribute-value">compile(code1, "", ss="attribute">mode=ss="attribute-value">"exec")   # compile并不会执行你的代码.只是编译 ss="alt">exec(com)   # 执行编译的结果 ss=""># 0 ss="alt"># 1 ss=""># 2 ss="alt"> ss="">ss="attribute">code2 = ss="attribute-value">"5+6+7" ss="alt">ss="attribute">com2 = ss="attribute-value">compile(code2, "", ss="attribute">mode=ss="attribute-value">"eval") ss="">print(eval(com2))  # 18 ss="alt"> ss="">ss="attribute">code3 = ss="attribute-value">"name = input('请输入你的名字:')"  #输入:hello ss="alt">ss="attribute">com3 = ss="attribute-value">compile(code3, "", ss="attribute">mode=ss="attribute-value">"single") ss="">exec(com3) ss="alt">print(name)  #hello 6. 输入输出
  • print() : 打印输出
  • input() : 获取用户输出的内容
ss="dp-xml">ss="alt">print("hello", "world", ss="attribute">sep=ss="attribute-value">"*", ss="attribute">end=ss="attribute-value">"@") # sep:打印出的内容用什么连接,end:以什么为结尾 ss="">#hello*world@ 7. 内存相关
hash() : 获取到对象的哈希值(int, str, bool, tuple). hash算法:(1) 目的是唯一性 (2) dict 查找效率非常高, hash表.用空间换的时间 比较耗费内存
ss="dp-xml">ss="alt">ss="attribute">s = ss="attribute-value">'alex' ss="">print(hash(s))  #-168324845050430382 ss="alt"> ss=""> ss="alt">ss="attribute">lst = [1, 2, 3, 4, 5] ss="">print(hash(lst))  #报错,列表是不可哈希的 ss="alt">id() :  获取到对象的内存地址 ss=""> ss="alt"> ss="">ss="attribute">s = ss="attribute-value">'alex' ss="alt">print(id(s))  #2278345368944 


推荐阅读