我试图在运行时影响生成器。这段代码使用一个全局函数,我要求用一种更具pythonic风格的方法来获得相同的结果。你知道吗
本例打印出时间范围内的小时和分钟。应该跳过13:15到15:45的范围(这是一个示例,在现实世界中,跳过某些值的决定不是固定的)
我可以用更好的方法将全局skiptime传递给生成器吗?你知道吗
import datetime
globalskiptime = None
def mynexttime(mystart=None):
# returns 15 30 45 59 minute for each hour
for myhour in range(0, 24):
for myminute in range(15, 61, 15):
if mystart is not None:
if datetime.time(myhour, myminute
if myminute < 60 else 59) < mystart:
continue
if globalskiptime is not None:
if datetime.time(myhour, myminute
if myminute < 60 else 59) < globalskiptime:
continue
yield myhour, myminute if myminute < 60 else 59
mystarttime = datetime.time(10, 45)
print type(mystarttime) is datetime.time
for h, m in mynexttime(mystarttime):
print(str(h) + " " + str(m))
if h == 13:
print('skip until 15:45')
globalskiptime = datetime.time(15, 45)
只需传递一个非基元类型的状态变量:
它输出:
在@VincentSavard提示之后,我重写了代码以使用
send()
将数据发送到生成器。我不得不在最后放弃for循环,但是在运行时更改for循环是很困难的。你知道吗这就是我的目的:
相关问题 更多 >
编程相关推荐