gpt4 book ai didi

python - `pass` 标记缩进代码块结束的关键字

转载 作者:太空狗 更新时间:2023-10-30 02:20:28 25 4
gpt4 key购买 nike

我最近注意到有些人用pass关键字来标记缩进代码块的结尾,例如:

def f():
for i in range(10):
do_something(i)
pass
pass

我不明白为什么。有什么优势吗?

我知道 pass 关键字什么都不做,它等同于其他语言中的 { }。我的问题与公约更相关。例如,也许人们喜欢用一些东西来标记长代码块的结尾。

最佳答案

你认为Python的缩进敏感语法有害吗?

如果您的回答是“否”,然后使用 pass 来标记结束只会使 cleanness 变得困惑由 Python 的缩进敏感语法引入。

如果您的回答是"is",然后使用 pass 标记结束是 歧义 的解决方法由 Python 的缩进敏感语法引入。

在 Python 中,没有 {}end,只有语义空白。

例如,考虑以下 Ruby 代码:

def f    for i in 0...10        i = i * 2        print(i)    endend

以及等效的 Python 代码:

def f():    for i in range(10):        i = i * 2        print(i)

一次错误的击键(TAB):

def f():    for i in range(10):        i = i * 2    print(i)

上面的代码也是有效的。

为了避免这种错误,我们可以在Python中使用pass作为end:

def f():    for i in range(10):        i = i * 2        print(i)        pass    pass

一次错误的击键(TAB):

def f():    for i in range(10):        i = i * 2    print(i)        pass    pass

Python 将拒绝工作:

IndentationError: unexpected indent

但是,即使使用 pass,python 也不会总是捕捉到意外的缩进。

假设我们打算写:

def g():    for i in range(10):        i = i * 2        pass    print(i)    pass

一次错误的击键(TAB):

def g():    for i in range(10):        i = i * 2        pass        print(i)    pass

Python 不会拒绝工作。

但是使用pass还是有两个好处:

  • 它仍然提供视觉提示。

    如果您认为 pass 是缩进 block 的最后一个子句,print(i) 在上面的代码中看起来很奇怪。

  • 如果您输入 pass,一个好的编辑器/IDE 会正确缩进。

对于第二个通过,如果 f() 是顶级函数,并且您的代码符合 PEP8:

Surround top-level function and class definitions with two blank lines.

你可以省略第二个pass

但是PEP8还说:

Extra blank lines may be used (sparingly) to separate groups of related functions.

因此我更喜欢pass

关于python - `pass` 标记缩进代码块结束的关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22895340/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com