gpt4 book ai didi

python - 在 Python 中调用嵌套函数时的额外括号

转载 作者:太空狗 更新时间:2023-10-29 22:18:48 24 4
gpt4 key购买 nike

我正在学习 Mark Pilgrim 的 Dive Into Python Book 第 6 章中的模块,我对这行代码 return [getFileInfoClass(f)(f) for f in fileList] 有点困惑 确实如此。 getFileInfo 是一个嵌套函数,我想知道重复的 (f) 是什么,额外的括号是为了什么。我希望有人能帮助我。这是完整的功能:

def listDirectory(directory, fileExtList):
"get list of file info objects for files of particular extensions"
fileList = [os.path.normcase(f) for f in os.listdir(directory)]
fileList = [os.path.join(directory, f) for f in fileList \
if os.path.splitext(f)[1] in fileExtList]
def getFileInfoClass(filename, module=sys.modules[FileInfo.__module__]):
"get file info class from filename extension"
subclass = "%sFileInfo" % os.path.splitext(filename)[1].upper()[1:]
return hasattr(module, subclass) and getattr(module, subclass) or FileInfo
return [getFileInfoClass(f)(f) for f in fileList]

最佳答案

getFileInfoClass 返回一个;然后类本身是可调用的——仅通过名称调用 class 返回它的一个实例。快速连续的两对括号只是速记。它是有效的:

file_info_class = getFileInfoClass(f)
file_info_instance = file_info_class(f)

一般来说,这样的两对括号可能是一个有问题的决定,因为它的可读性不是很好,但我想在这种情况下,作者认为这是合理的,因为它允许他或她将所有内容放在一个列表理解中。

关于python - 在 Python 中调用嵌套函数时的额外括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29712760/

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