首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
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
Coding
V2EX  ›  Python

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

  •  
  •   datou · 192 天前 · 4892 次点击
    这是一个创建于 192 天前的主题,其中的信息可能已经有所发展或是发生改变。
    前阵子将某个 sdk 的 py2.7 版本修改成 py3 的

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

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

    所以一般没必要加。复杂的话酌情加。
        8
    linvaux   192 天前 via Android
    条件少的话不会,多的话就要加上了
        9
    jjx   192 天前   ♥ 2
    显然, 楼主不用

    pycharm/idea
        10
    dugive   192 天前 via Android
    条件多的话也不会啊,套两层括号反而不舒服
        11
    sannian   192 天前
    不加
        12
    cashew   192 天前 via Android
    我就是为了少用括号,才用 Python 的啊。(逃。。。
        13
    Marmot   192 天前
    多个条件的情况下,会加上,代码先是给人看的
        14
    wodexiaogou   192 天前
    肯定不加,python 本就是强缩进,语句很清楚,还加括号干嘛,多此一举
        15
    fank99   192 天前
    不会
        16
    darksword21   192 天前 via iPhone
    不加
        17
    okwork   192 天前
    和运算符优先级差不多,a * b + 3 为了直观写成 (a * b) + 3 逻辑更显眼。
        18
    shawndev   192 天前
    never
        19
    Takamine   192 天前 via Android
    看情况,复杂判断条件我会加。
    忽略运算符自身的优先级顺序,以括号增加可靠性。(。ò ∀ ó。)
        20
    xliao   192 天前 via iPhone
    酌情吧,比如 a or b and c 和 a or (b and c)
        21
    shm7   192 天前 via iPhone
    您放屁会脱裤子吗?
        22
    xiaojie668329   192 天前
    不会,Pycharm 告诉我这是多余的,我就删掉了。
        23
    NSAgold   192 天前 via Android
    不会。复杂的话为了阅读方便会再写注释。
        24
    keepeye   192 天前
    有时候搞不清楚运算符优先级,就局部括号
        25
    omph   191 天前
    啥时候能淘汰掉方括号,输入真难受
        26
    pmispig   191 天前
    会,单条件也会加,看着舒服有安全感
        27
    weyou   191 天前 via Android
    不会整体加括号,多条件也只是单个条件加
        28
    abcdabcd987   191 天前   ♥ 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
        29
    aaronhua   191 天前
    一些运算的优先级不是很明显的时候会加上,没事不会加。
        30
    kiwier   191 天前   ♥ 1
    不用 py,缩进太坑
        31
    freakxx   191 天前
    PEP8 不支持这种做法吧?

    如果 if 判断太长的话,拆成多个再 if 拼接
        32
    abcdabcd987   191 天前
    @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
        33
    freakxx   191 天前
        34
    exceloo   191 天前   ♥ 1
    会的,工作用 js,习惯改不了,还要经常在 python 里面写 var
        35
    popbayun   191 天前
    你是从哪个语言转过来的
        36
    firejoke   191 天前
    比如:
    ```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()
    ```
        37
    firejoke   191 天前
    @firejoke 为了不用 \
        38
    xsiong   191 天前
    为什么要加?我 java 转过来的都不想加
        39
    Macolor21   191 天前 via iPhone
        40
    Macolor21   191 天前 via iPhone
    @xsiong 不小心发出去了,java 转 python 后具体负责什么呢🤔
        41
    palmers   191 天前
    我其实特别想加上花括号
        42
    ysc3839   191 天前 via Android
    不会
        43
    vkhsyj   191 天前
    不会,这种风格违反怕 python 习惯,正确做法是用括号进行分组,让逻辑更加清晰
        44
    loading   191 天前 via Android
    一个不会加条件不加,多了不加就傻了。
        45
    Hopetree   191 天前
    少于 3 个条件的不需要,超过的可能需要,或者把条件分离一下,哪有都用的
        46
    zgl263885   191 天前 via iPhone
    加,能加都加
        47
    mseasons   191 天前
    你写 Python 像 C++
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2351 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 32ms · UTC 05:19 · PVG 13:19 · LAX 21:19 · JFK 00:19
    ♥ Do have faith in what you're doing.