在开发QGIS处理插件的教程中,我发现了以下python3代码:
# Compute the number of steps to display within the progress bar and
# get features from source
total = 100.0 / source.featureCount() if source.featureCount() else 0
features = source.getFeatures()
我的问题是:这个单个是什么样的语言结构?线:
total = 100.0 / source.featureCount() if source.featureCount() else 0
这看起来很奇怪:首先是一个赋值,后面跟着一个if-else结构在同一行?? ?
这些被称为"条件表达式"。来自Python 3参考:
表达式
x if C else y
首先求条件,C
而不是x
。如果C
为真,则计算x
并返回其值;否则,计算y
并返回其值。
你可以读作"returnx
ifC
否则返回y
.">
在对变量赋值时使用条件表达式,该变量取该条件表达式返回的值。
这个概念通常被称为"三元"。在许多其他语言中