问题复现方法:

from time import sleep
temp = 0 for i in range(20): if i == 13:break else:temp = i, sleep(1)
运行结果:(12, None)

现象:此种写法,编辑工具以及IDLE均不会认为是语法错误,不会提示报错,运行时也不会报错,但这样会导致你后面对temp判断时一头雾水

原因分析:问题就出在

else:temp = i, sleep(1) 

Python不会认为先执行temp = i,然后再执行sleep(1) ,它会认为你是想将temp赋值成一个tuple(元组)类型,知识点,Python是按照缩进执行的

但是结果为什么会有None,通过查看time源码,sleep的源码是def sleep(secs: float) ->None:...,所以,懂了吧

 

posted on 2020-04-18 21:36  菜鸟叨叨  阅读(521)  评论(0编辑  收藏  举报