Python编码风格

San*_*u C 0 python

我有两个代码片段,基本上做同样的事情.以下是两个样本:

retval = count or num_element > 0
Run Code Online (Sandbox Code Playgroud)

if count or num_element > 0 :
    retval = True
else:
    retval = False
Run Code Online (Sandbox Code Playgroud)

第一种选择是否优先于第二种选择?我知道人们有自己的选择.但我很想知道是否有任何表现或其他影响.我觉得第二种方式更具可读性.

Mar*_*ers 10

他们是不是基本上是相同的.如果count是真值(非零,或者不是空容器等),count则以第一种形式分配.第二种形式总是指定一个布尔值.

除非该语句是紧密高迭代计数循环的一部分,否则性能不应成为问题.即使它循环的一部分,差异也会很小.

剩下的是一种风格选择,但你的第二种形式通常是多余的.

每当我看到if test: value = True,else: value = False声明,它通常是一个标志,有人不理解的是,测试本身已经返回一个布尔值或可做成一个.

如果您需要一个真正的布尔值,请使用:

retval = bool(count) or num_element > 0
Run Code Online (Sandbox Code Playgroud)

否则只需坚持第一个选项.