python - 函数调用中的双括号是什么意思?例如函数(foo)(酒吧)

标签 python function-call

我一直使用这个习语在 Python 2 中以 utf-8 标准输出一堆内容:

sys.stdout = codecs.getwriter('utf-8')(sys.stdout)

但老实说,我不知道 (sys.stdout) 在做什么。它让我想起了 Javascript 闭包之类的东西。但我不知道如何在 Python 文档中查找这个成语。

各位好心人能解释一下这里发生了什么吗?谢谢!

最佳答案

.getwriter 返回一个 function 可调用对象;您只是在同一行中调用它。

例子:

def returnFunction():
    def myFunction():
        print('hello!')
    return myFunction

演示:

>>> returnFunction()()
hello!

您也可以这样做:

>>> result = returnFunction()
>>> result()
hello!

可视化:

evaluation step 0: returnSomeFunction()()
evaluation step 1: |<-somefunction>-->|()
evaluation step 2: |<----result-------->|

关于python - 函数调用中的双括号是什么意思?例如函数(foo)(酒吧),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6476825/

相关文章:

python - 在Python中使用正则表达式解析具有重复模式的字符串?

python - 如何使用 pandas/numpy 标准化/规范化日期?

go - 调用在 golang 中作为接口(interface)变量接收的函数

c - 函数参数中的数组名称的处理方式是否与本地声明的数组不同(自动)

python - 在 Pandas 中获取值(value)作为列表

python - 如何将FastAPI请求转发到另一台服务器?

python - 使两个类对象具有相同的名称是否安全?

c - 使用函数返回值而不先存储它 - 为什么这种情况很少见?

java - 函数调用时出现空指针异常

python - 从枚举中获取所有值,当值在 Python 3.7 中是可调用的