V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
datou
V2EX  ›  Python

v2 的诸位,你们写 Python 的时候会在 if 语句加上圆括号吗?

  •  
  •   datou · 2019-06-05 10:50:48 +08:00 · 11525 次点击
    这是一个创建于 2002 天前的主题,其中的信息可能已经有所发展或是发生改变。
    前阵子将某个 sdk 的 py2.7 版本修改成 py3 的

    发现 if 语句全部加了圆括号

    v2 的各位会在 if 语句加上圆括号吗?
    47 条回复    2019-06-06 08:03:47 +08:00
    kingmo888
        1
    kingmo888  
       2019-06-05 10:56:05 +08:00
    绝对不会!!!!
    boxvivi007
        2
    boxvivi007  
       2019-06-05 10:59:59 +08:00
    不会
    jdhao
        3
    jdhao  
       2019-06-05 11:00:14 +08:00 via Android   ❤️ 1
    看情况,如果 if 后面多个比较复杂的判断,加上括号会更清晰
    mrchi
        4
    mrchi  
       2019-06-05 11:04:39 +08:00
    @jdhao 同意
    collector
        5
    collector  
       2019-06-05 11:11:22 +08:00
    判断的条件比较多的时候会加
    zdnyp
        6
    zdnyp  
       2019-06-05 11:20:08 +08:00
    不会
    flyingghost
        7
    flyingghost  
       2019-06-05 11:23:00 +08:00   ❤️ 2
    为什么需要括号?
    1,定界符。这个作用发生在词法解析的时候。python 空格就可以做到。
    2,帮助阅读理解。这个作用发生在人类阅读代码的时候。复杂的表达式加几个括号理解起来比强背运算符优先级要容易多了。

    所以一般没必要加。复杂的话酌情加。
    linvaux
        8
    linvaux  
       2019-06-05 11:23:34 +08:00 via Android
    条件少的话不会,多的话就要加上了
    jjx
        9
    jjx  
       2019-06-05 11:25:38 +08:00   ❤️ 2
    显然, 楼主不用

    pycharm/idea
    dugive
        10
    dugive  
       2019-06-05 11:32:11 +08:00 via Android
    条件多的话也不会啊,套两层括号反而不舒服
    sannian
        11
    sannian  
       2019-06-05 11:34:30 +08:00
    不加
    cashew
        12
    cashew  
       2019-06-05 11:35:25 +08:00 via Android
    我就是为了少用括号,才用 Python 的啊。(逃。。。
    Marmot
        13
    Marmot  
       2019-06-05 11:44:08 +08:00
    多个条件的情况下,会加上,代码先是给人看的
    wodexiaogou
        14
    wodexiaogou  
       2019-06-05 11:45:17 +08:00
    肯定不加,python 本就是强缩进,语句很清楚,还加括号干嘛,多此一举
    fank99
        15
    fank99  
       2019-06-05 11:58:32 +08:00
    不会
    darksword21
        16
    darksword21  
       2019-06-05 12:20:07 +08:00 via iPhone
    不加
    okwork
        17
    okwork  
       2019-06-05 12:23:13 +08:00
    和运算符优先级差不多,a * b + 3 为了直观写成 (a * b) + 3 逻辑更显眼。
    shawndev
        18
    shawndev  
       2019-06-05 12:25:47 +08:00
    never
    Takamine
        19
    Takamine  
       2019-06-05 12:28:37 +08:00 via Android
    看情况,复杂判断条件我会加。
    忽略运算符自身的优先级顺序,以括号增加可靠性。(。ò ∀ ó。)
    xliao
        20
    xliao  
       2019-06-05 12:34:16 +08:00 via iPhone
    酌情吧,比如 a or b and c 和 a or (b and c)
    shm7
        21
    shm7  
       2019-06-05 12:34:31 +08:00 via iPhone
    您放屁会脱裤子吗?
    xiaojie668329
        22
    xiaojie668329  
       2019-06-05 13:06:36 +08:00
    不会,Pycharm 告诉我这是多余的,我就删掉了。
    NSAgold
        23
    NSAgold  
       2019-06-05 13:11:15 +08:00 via Android
    不会。复杂的话为了阅读方便会再写注释。
    keepeye
        24
    keepeye  
       2019-06-05 13:13:19 +08:00
    有时候搞不清楚运算符优先级,就局部括号
    omph
        25
    omph  
       2019-06-05 13:45:14 +08:00
    啥时候能淘汰掉方括号,输入真难受
    pmispig
        26
    pmispig  
       2019-06-05 14:37:25 +08:00
    会,单条件也会加,看着舒服有安全感
    weyou
        27
    weyou  
       2019-06-05 14:47:10 +08:00 via Android
    不会整体加括号,多条件也只是单个条件加
    abcdabcd987
        28
    abcdabcd987  
       2019-06-05 15:01:06 +08:00   ❤️ 1
    对于长 if 和长表达式,加括号就可以很自然地换行了,不用在最后打 \
    我觉得在这样的情况下加括号其实还蛮好的,比起\我更喜欢括号
    PEP 8 做了示范:
    https://www.python.org/dev/peps/pep-0008/#multiline-if-statements
    https://www.python.org/dev/peps/pep-0008/#should-a-line-break-before-or-after-a-binary-operator
    aaronhua
        29
    aaronhua  
       2019-06-05 15:16:54 +08:00
    一些运算的优先级不是很明显的时候会加上,没事不会加。
    kiwier
        30
    kiwier  
       2019-06-05 15:19:32 +08:00   ❤️ 1
    不用 py,缩进太坑
    freakxx
        31
    freakxx  
       2019-06-05 15:21:28 +08:00
    PEP8 不支持这种做法吧?

    如果 if 判断太长的话,拆成多个再 if 拼接
    abcdabcd987
        32
    abcdabcd987  
       2019-06-05 15:42:51 +08:00
    @freakxx #31 "The preferred way of wrapping long lines is by using Python's implied line continuation inside parentheses, brackets and braces. Long lines can be broken over multiple lines by wrapping expressions in parentheses. These should be used in preference to using a backslash for line continuation."
    https://www.python.org/dev/peps/pep-0008/#maximum-line-length
    freakxx
        33
    freakxx  
       2019-06-05 15:51:41 +08:00
    exceloo
        34
    exceloo  
       2019-06-05 15:55:11 +08:00   ❤️ 1
    会的,工作用 js,习惯改不了,还要经常在 python 里面写 var
    popbayun
        35
    popbayun  
       2019-06-05 15:59:39 +08:00
    你是从哪个语言转过来的
    firejoke
        36
    firejoke  
       2019-06-05 16:12:03 +08:00
    比如:
    ```python
    _partiton = disk.getFirstPartition()
    while _partiton:
    if (_partiton.type == parted.PARTITION_FREESPACE
    and _partiton.path == partition['path']
    and _partiton.busy == partition['busy']
    and abs(
    _partiton.getSize(unit="GB") -
    float(partition['size'])
    ) <= 0.001
    and _partiton.active == partition['active']
    and _partiton.geometry.start == partition['geometry_start']
    and _partiton.geometry.end == partition['geometry_end']):
    break
    _partiton = _partiton.nextPartition()
    ```
    firejoke
        37
    firejoke  
       2019-06-05 16:13:43 +08:00
    @firejoke 为了不用 \
    xsiong
        38
    xsiong  
       2019-06-05 16:23:18 +08:00
    为什么要加?我 java 转过来的都不想加
    Macolor21
        39
    Macolor21  
       2019-06-05 16:40:00 +08:00 via iPhone
    Macolor21
        40
    Macolor21  
       2019-06-05 16:40:43 +08:00 via iPhone
    @xsiong 不小心发出去了,java 转 python 后具体负责什么呢🤔
    palmers
        41
    palmers  
       2019-06-05 17:24:31 +08:00
    我其实特别想加上花括号
    ysc3839
        42
    ysc3839  
       2019-06-05 17:43:58 +08:00 via Android
    不会
    vkhsyj
        43
    vkhsyj  
       2019-06-05 20:04:18 +08:00
    不会,这种风格违反怕 python 习惯,正确做法是用括号进行分组,让逻辑更加清晰
    loading
        44
    loading  
       2019-06-05 20:13:53 +08:00 via Android
    一个不会加条件不加,多了不加就傻了。
    Hopetree
        45
    Hopetree  
       2019-06-05 23:23:27 +08:00
    少于 3 个条件的不需要,超过的可能需要,或者把条件分离一下,哪有都用的
    zgl263885
        46
    zgl263885  
       2019-06-06 06:52:49 +08:00 via iPhone
    加,能加都加
    mseasons
        47
    mseasons  
       2019-06-06 08:03:47 +08:00
    你写 Python 像 C++
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5075 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 09:46 · PVG 17:46 · LAX 01:46 · JFK 04:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.