生成器对象
也有__iter__方法和__next__方法
def index ():
print ('hello' )
yield 123
print ('jason' )
yield
'''
当函数体代码中含有yield关键字的时候,第一次调用并不会执行函数体代码,而是将函数变成生成器
'''
print (index)
print (index())
res = index()
next (res)
next (res)
next (res)
'''当函数体代码中含有多个yield关键字的时候 执行一次__next__()yield上面的代码就会被执行,并停留在yield
再次执行__next__()就会基于上此停止的位置继续往后执行到下一个yield,如果下面没有yield就会报错'''
自定义range方法
通过生成器模拟range 方法
def my_range (start,end=False ,step=1 ):
if not end:
end = start
start = 0
while start < end:
yield start
start += step
for i in my_range(5 ):
print (i)
yield关键字的作用
def eat (name ):
print ('hello' )
while True :
name = yield
print (name)
res = eat('jason' )
next (res)
next (res)
res.send('drink' )
生成器表达式
后期进行代码的优化的时候可以考虑使用
res = (i for in 'jason' )
'''生成器内部的代码只有在调用__next__迭代取值的时候才会执行'''
def add (n, i ):
return n + 1
def test ():
for i in range (4 ):
yield i
g = test()
for n in [1 , 10 ]
g = (add(n, i) for i in g)
res = list (g)
print (res)
res = [20 ,21 ,22 ,23 ]
模块
'''
很多大佬写了很多很厉害的模块 供python工程师直接使用,因此当我们遇到一个非常复杂的功能需要实现的时候,第一时间相对应该是取网上能不能找到想应的模块
'''
模块就是一系列功能的结合体,可以直接使用
极大的提升开发的效率
1. 内置的模块
无需下载 解释器自带 直接导入即可
2. 自定义模块
自己写的代码封装成模块自己使用或者发布到网上供别人使用
3. 第三方模块
别人写的发布到网上的 可以下载使用的模块
1. 使用python代码编写py文件
2. 多个py文件组成的文件夹
3. 已被编译为共享库或DLL的C或C++扩展
4. 使用c编写并链接到python解释器的内置模块
模块的两种导入方式
比如导入time模块
import time
'''
一定要分清谁是执行文件,谁是导入文件(模块)
导入模块内部发生了什么
1.执行当前文件 产生一个当前文件的名称空间
2.执行import句式 导入模块文件(即执行模块文件代码模块文件的名称空间)
3.在当前文件的名称空间中生成一个模块的名字,指向模块的名称空间
4.通过在执行文件中生成的名字可以使用模块名称空间中的所有数据
'''
1. 相同模块重复导入只会被执行一次
2. 可以通过import 后面的模块点名的方式,使用模块中所有的名字
3. 模块当中的名字不会和执行文件中的名字冲突
from time import time,tzset
'''
1.执行当前文件产生一个名称空间
2.执行导入语句 运行模块文件产生名称空间,存放运行中产生的所有名字
3.将import后面的名字直接拿到执行问价中
'''
1. 重复导入只会执行一次
2. 使用模块名称空间中的名字不需要加模块名前缀,直接使用即可
3. 导入的名称会与执行文件中的名称产生冲突。因为他是直接将模块中的方法存放到执行文件的名称空间
4. 使用from ...import ...的句式,只能使用import 中出现的名字
导入补充
import time as t
就是将time模块的名称替换成t 调用方法的时候直接t.就行
import time, sys, md
from md import name, read1, read2
"""
连续导入多个模块 这多个模块最好有相似的功能部分 如果没有建议分开导入
如果是同一个模块下的多个变量名无所谓!!!
"""
from md import *
*表示md里面所有的名字
但是 如果模块中使用了__all__限制可以使用的名字 那么*就会失效 依据的是__all__后面列举的名字
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人