python - 表达或声明? :'if a : do_something()' 和 '(a and do_somthing())' 哪个更好?

标签 python coding-style expression

我发现 python 可以轻松地以“lisp”风格编码。

表达式:

正常方式:

if a:
    do_something()

'函数'方式:

(a and do_something())

正常方式:

if not a:
    do_somthing()
elif b:
    do_otherthing()

'功能'方式

((not a and do_something()) or (b and do_otherthing()))

正常方式:

a = bla.get_a()
if a is None:
    a = A()

'函数'方式:

a = (bla.get_a() or A())

这个功能是如此迷人,以至于我可以在一行中编写代码,而在正常情况下必须编写多行代码。

但我不知道它是“pythonic”还是比平常更糟糕。

google coding stype 也没有定义哪个更符合规则。

最佳答案

当然

if a: 
    do_something()

第二个(a 和 do_somthing()))是可怕的和 hacky。正如@limelights 所说,Python 之禅说显式优于隐式可读性重要。您可能应该阅读 PEP-8如果你还没有。

关于python - 表达或声明? :'if a : do_something()' 和 '(a and do_somthing())' 哪个更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15759297/

相关文章:

python - 为什么当作为参数传递给 `input_shape` 层时, `Dense` 不包括批处理维度?

c# - 在 C# 中实现文件访问的最佳方式

c# - 如何获取Expression<Func<object>>目标对象来设置值?

c# - 在函数内设置 Expression<Func<T>> 的值

c# - 从现有表达式创建新表达式

python - 如何检查 Item() 中的值是否为空?

python - 如何使用python在不登录服务器的情况下在服务器中执行迭代命令

java - 从 HTML 页面提取嵌套部分时出现问题

c++ - 在几个地方处理整个异常层次结构的好方法

c# - Juval Lowy 的 C# 编码标准问题