有这样一个问题,如何优雅的实现一个函数,当参数limit为0时,使用无限迭代,当limit大于0时,使用有限迭代:直接显示结果:fromloguruimportloggerfromitertoolsimportcountdeffunc(limit:int=0):foriinlimitandrange(limit)o??rcount():yieldifforiinfunc():logger.debug(i)如果对limit和range(limit)或者count()的语法不理解,可以先看官方文档:布尔运算---and,or,not我们稍微分析一下这个语法:whenlimit为0,我们来看一下情况:In[8]:limit=0In[9]:limitandrange(limit)Out[9]:0可以看到当limit不成立时,结果limit和range(limit)是limitIn[12]:fromitertoolsimportcountIn[13]:0或者count()Out[13]:count(0)limit成立时,limit和range(limit)是后者在[14]:limit=10In[15]:limitandrange(limit)Out[15]:range(0,10)In[16]:range(0,10)orcount()Out[16]:range(0,10)
