有时候判断一个条件,决定是不是执行一个方法. 今天看了一下自己写的代码里,出现了不少这种类似的判断,写的时候没多想,review 的时候比较纠结.觉得不好看
if dirty: clean()
网上看到很多人喜欢写这样的代码,不幸的是,我使用 autopep8 会自动换行,写成这样也白扯
if dirty:clean()
这样效果看起来也一样,但是这就是赋值语句拿来做流程控制好像不太合适,可读性也有一些损失.
dirty and clean() clean() if dirty else None
写完这几行字我决定不改这一部分了
![]() | 1 nfroot 2019-03-18 19:17:35 +08:00 via Android 写同一行看的时候不是很喜欢 |
![]() | 2 cxyfreedom 2019-03-18 19:21:54 +08:00 via iPhone 这个我遵循 pylint 提示换行 |
![]() | 3 Leigg 2019-03-18 19:31:53 +08:00 via iPhone 省略这一行代码换来的是可读性的缺失,并不值当。 |
![]() | 4 Leigg 2019-03-18 19:33:06 +08:00 via iPhone if else 的简洁我一般只在逻辑很简单时这样干 |
5 youngce 2019-03-18 19:36:32 +08:00 我自己基本不这么写。。。读过的一些 python 项目源码里也没有见大佬们这么写。 主要是真的不好看吧 |
6 whileFalse 2019-03-18 21:10:28 +08:00 clean() if dirty else None 我怎么觉得这句话中 clean()总是会被调用? |
![]() | 7 Leigg 2019-03-18 21:15:11 +08:00 via iPhone ![]() @whileFalse 并不会 |
![]() | 8 Leigg 2019-03-18 21:43:31 +08:00 via iPhone py3 可以写的更优雅一点,利用省略号这种文法。 func( ) if xx else ... |
![]() | 9 shn7798 2019-03-18 22:09:36 +08:00 比较喜欢第一种写法,判断条件和逻辑分支识别度很高。 第二种写法一眼看去需要花点时间去区分,看起来比较累。 第三种写法是 Perl 时代的风格,write only,当然破解之法就是写诗,哈哈。 |
![]() | 10 Kirscheis 2019-03-18 22:50:46 +08:00 dity and clean() 也太危险了。。万一有一天他们决定从右边开始短路怎么办。。 |
11 yim7 2019-03-18 23:14:48 +08:00 第一种很好,逻辑清晰,第二种是被 c 洗脑的哈皮写的,后面两个都是没事找事,代码可读性最重要 |
![]() | 12 Qzier 2019-03-19 00:15:01 +08:00 via iPad 不会,因为不符合 PEP8 |
13 jerrylogin 2019-03-19 03:46:59 +08:00 可以啊。。。。pylint 不会报错啊 。。。。不是和 list comprehension 很像吗 |
![]() | 14 binux 2019-03-19 04:20:13 +08:00 我一般只在两个场合这么写: 1. if condition: return 2. 多个 if condition_a: do_a() if condition_b: do_b() if condition_c: do_c() 但是我很多年不写 python 了。 |
15 luckyc 2019-03-19 08:39:10 +08:00 vscode->右键->格式化文档 |
![]() | 16 Ginson 2019-03-19 09:01:17 +08:00 一般只会在简单的条件赋值上这样写,比如 x = 1 if y > 0 else 2 |
![]() | 17 aaa5838769 2019-03-19 09:25:09 +08:00 一般不这么干。。自己都看不下去。 |
![]() | 18 HelloAmadeus 2019-03-19 09:30:49 +08:00 via iPhone 标准库里有很多这样一行的代码 |
![]() | 19 Vegetable OP |
![]() | 20 Vegetable OP |
21 xpresslink 2019-03-19 10:13:47 +08:00 哪有空儿想这个,写代码时候能少按一下就少按一下。 在 Pycharm 里面,都是提交代码前,习惯性的 Ctrl+A 然后再 Ctrl+Alt+L 一下,所以楼主说的这事儿根本不存在的。 |
![]() | 22 sazima 2019-03-19 10:21:05 +08:00 不符合 PEP8 |
23 karllynn 2019-03-19 10:23:57 +08:00 有啥不好看的,你要写 go,到处都是 ``` if err != nil { } ``` 不好看你也得忍着,不然根本编译不过 |
![]() | 25 qf0129 2019-03-19 13:56:02 +08:00 自从知道有领导把代码行数作为绩效后,我再也不这样写了 |
![]() | 26 Loner233 2019-03-20 13:49:07 +08:00 via Android 一行。写 Scala 常用,反正也就写着玩,不用别人读。反正隔天自己也看不懂 |