use*_*851 2 python expression coding-style
我发现python很容易用"lisp"风格编码.
正常方式:
if a:
do_something()
Run Code Online (Sandbox Code Playgroud)
'功能'方式:
(a and do_something())
Run Code Online (Sandbox Code Playgroud)
正常方式:
if not a:
do_somthing()
elif b:
do_otherthing()
Run Code Online (Sandbox Code Playgroud)
'功能'的方式
((not a and do_something()) or (b and do_otherthing()))
Run Code Online (Sandbox Code Playgroud)
正常方式:
a = bla.get_a()
if a is None:
a = A()
Run Code Online (Sandbox Code Playgroud)
'功能'方式:
a = (bla.get_a() or A())
Run Code Online (Sandbox Code Playgroud)
这个功能非常迷人,我可以在一行编码,必须以正常方式写入几行.
但我不知道它是'pythonic'还是比平常更糟糕.
谷歌编码stype也没有定义哪个更符合规则.
无疑
if a:
do_something()
Run Code Online (Sandbox Code Playgroud)
第二个(a and do_somthing()))是可怕的和hacky.正如@limelights所说,Python的Zen表示Explicit比隐含和可读性更好.如果你还没有,你应该阅读PEP-8.