在Python中使用“not”的推荐方法是什么?

3pvhb19x  于 2023-10-21  发布在  Python
关注(0)|答案(3)|浏览(154)

我观察到以下两种表达方式都有效,我想知道推荐使用哪种表达方式,为什么?

>>> not(True)
False
>>> not True
False

由于我有函数式编程的背景(我有R语言的经验),我更倾向于使用第一种方法。这是被接受的,还是有什么缺点?

qltillow

qltillow1#

那么,为什么要使用not(True)或更一般的not(x)呢?
语法a(b)通常会被读取为对函数a的函数调用,参数为b
但是not不是一个函数,not(x)也不是一个函数调用。在Python中,not是一个内置的 * 运算符 *,它不能被重载。括号是多余的。
所以,不管你使用这种语法的意图是什么,not(x)只会误导那些对Python有正常理解的人。这不是Pythonic。

h4cxqtbf

h4cxqtbf2#

更“pythonic”的方式是第二种没有括号的选择。

zsohkypk

zsohkypk3#

根据[Python.]:内置类型-布尔运算- and,or,not(强调是我的):

not x-如果x为假,则True,否则False

所以,首选的形式是不带括号。
原因可能是:

  • 括号表示函数调用
  • 可读性/简单性(个人猜测)

[Python.PEPs]: PEP 8 - Style Guide for Python Code也包含一些示例。

  • P.S.*:好像是[ReadTheory.Black]:Black code风格对这两种形式都很满意:
(py_pc064_03.08_test0_lancer) [cfati@cfati-5510-0:/mnt/e/Work/Dev/StackExchange/StackOverflow/q077252899]> . ~/sopr.sh 
### Set shorter prompt to better fit when pasted in StackOverflow (or other) pages ###

[064bit prompt]> python -m black -c "not True"
not True
[064bit prompt]> python -m black -c "not (True)"
not (True)
[064bit prompt]> python -m black -c "~ 1"
~1

相关问题