我正在阅读《 CPython Internals》一书,在用python语言的语法给出了一点极点之后,我在arquivo koude0中找到了类似的东西(白色对应于VELSA 3.9):
while_stmt: 'while' namedexpr_test ':' suite ['else' ':' suite]
for_stmt: 'for' exprlist 'in' testlist ':' [TYPE_COMMENT] suite ['else' ':' suite]
这两行表示编写while
(while)和for
(to)的征法(语法)的方式。
命令。
仅采用第一行进行分析,可以观察以下序列:
-
while_stmt
:雨章表示此表达式是命令; -
'while'
:while,在简单的ãspas上含义一个常数(这是有道理的,因为python中的命令以while开始); -
namedexpr_test
:指出将定义一个或多个带有布尔结果测试的角色。示例:koud6或koud7; -
':'
:在表达式的结尾,应该放置“:”(类似于其他一些语言的koud9,例如Java,C和C ++); -
suite
:指向循环的主体定义的雨章,即每次进入循环时都会执行的; -
['else' ':' suite]
:这是引起我关注的部分。在括号中,常量的else
之后是另一个(:
),然后是一个suite
,该suite
将代表带有其各自的遏制的senão
表达式,并且在括号中放置在括号中,意味着此部分是可选的; >
阅读本文后,我们可以得出结论,对于Koud2和Koud1,我们都可以使用Koud18?
尽管看起来很奇怪,是的,这是真的,让我们看看一个可以使用它的实用示例。
注意,好猫的事工警告:使用这种情况会引起声音问题,并在同事的思想中偶然出现。仔细用于生产项目!
为了证明这种技术的使用,让我们想象一个问题:您有一个幸运的列表,并且根据用户通知的数字,您应该说该人是幸运还是没有£o。最后,您应该返回一条文字,说Found
,如果我找到了号码或Not Found
,则应返回。
好吧,如果我们想到一个非常简单的解决方案,我们可以达到类似的问题:
def find_lucky_value(value):
lucky_lst = [1, 3, 5, 7, 9]
# Nesta solução, usamos uma variável auxiliar
# Atribuímos False no inicio
has_value = False
for i in lucky_lst:
if value == i:
# Caso o valor esteja na lista, atribuímos True
has_value = True
break
# Fazemos a checagem aqui no return para determinar o texto de encontrou ou nao
return "Found" if has_value else "Not Found"
尽管这是一个非常简单的解决方案,并且要阅读,但有必要创建辅助方差来进行此验证。考虑到它,我们可以达到以下解决方案:
def find_lucky_value_with_else(value):
lucky_lst = [1, 3, 5, 7, 9]
# Nesta solução fazemos a iteração dos dados
# Caso o valor nao seja encontrado e o break não seja alcançado
# O Else é invocado ao final
for i in lucky_lst:
if value == i:
break
else:
return "Not Found"
return "Found"
在for
中使用else
似乎有些奇怪,但是每当break
在车道内不调用时,都会执行它,因此有必要创建一个方差辅助设备以在循环内实现条件时控制。 p>
当然,对于这个问题,考虑到更接近现实生活的事物,它可以仅在一行中解决:
print("Found" if value in [1, 3, 5, 7, 9] else "Not Found")
尽管如此,知道这项技术可能非常有趣,尤其是当有必要进行循环并进行几次检查时,解决这种方法可以促进阅读和减少变量的量。 /p>
和aã,您已经知道这种技术了吗?你在某个地方使用过吗?
与人群分享享受,如果您想下载完整的代码并在母亲中播放,这里有link。
,如果您想陪我在社交网络上,请单击aqui。
感谢您的阅读和下一篇!