gpt4 book ai didi

python - 嵌套函数的真实示例

转载 作者:太空狗 更新时间:2023-10-29 17:53:49 25 4
gpt4 key购买 nike

我之前问过 nested functions 是怎么回事工作,但不幸的是我还是不太明白。为了更好地理解它,有人可以展示一些嵌套函数的实际用法示例吗?

非常感谢

最佳答案

你的问题让我很好奇,所以我查看了一些真实世界的代码:Python 标准库。我找到了 67 个嵌套函数的例子。这里有一些,并附有解释。

使用嵌套函数的一个非常简单的原因就是您定义的函数不需要是全局函数,因为只有封闭函数使用它。 Python 的 quopri.py 中的一个典型示例标准库模块:

def encode(input, output, quotetabs, header = 0):
...
def write(s, output=output, lineEnd='\n'):
# RFC 1521 requires that the line ending in a space or tab must have
# that trailing character encoded.
if s and s[-1:] in ' \t':
output.write(s[:-1] + quote(s[-1]) + lineEnd)
elif s == '.':
output.write(quote(s) + lineEnd)
else:
output.write(s + lineEnd)

... # 35 more lines of code that call write in several places

encode 函数中有一些通用代码,因此作者将其分解为write 函数。


嵌套函数的另一个常见用途是 re.sub .这是来自 json/encode.py 的一些代码标准库模块:

def encode_basestring(s):
"""Return a JSON representation of a Python string

"""
def replace(match):
return ESCAPE_DCT[match.group(0)]
return '"' + ESCAPE.sub(replace, s) + '"'

这里的ESCAPE是一个正则表达式,ESCAPE.sub(replace, s)s中找到ESCAPE的所有匹配 并用 replace(match) 替换每一个。


事实上,任何接受函数作为参数的 API,如 re.sub,都可能导致嵌套函数很方便的情况。例如,在 turtle.py 中有一些愚蠢的演示代码可以执行此操作:

    def baba(xdummy, ydummy):
clearscreen()
bye()

...
tri.write(" Click me!", font = ("Courier", 12, "bold") )
tri.onclick(baba, 1)

onclick 希望您传递一个事件处理函数,因此我们定义一个并将其传递进去。

关于python - 嵌套函数的真实示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2017101/

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