【发布时间】:2013-03-24 16:47:36
【问题描述】:
我经常看到一些带有
的代码def main(A,B)
some steps
被描述为“主函数的重载”,在阅读了有关 Python 的更具体的内容后,我知道这不是真的,因为:
- Python 是一种无损类型语言
- Python 中的函数/方法甚至不知道给定参数的类型,python 也不关心
我也不确定实例和“静态方法”或“类方法”之间是否有真正的区别,可能它们是相同的,唯一的区别是使用装饰器,但这可能是与我在 C/C++ 上花了这么多时间后第一次接触函数式语言有关。
更重要的是,在 Python 中,第一个缩进级别用作入口点(就像 C/C++ 中的 main() 一样),所以我不明白为什么你应该在不同于以下的缩进级别定义 main真正的第一个。
我对 Python 关键字的一般想法是,关键字具有特殊的语义值而不是真正定义的语法(可能是因为 C++ 不太“惯用”,我真的不知道如何解释),它们被用作某些东西的占位符,它们为应用它们的部分赋予了特殊的含义。还有像 __name__ 这样的特殊变量,它们只是用来存储特殊信息而已。
在我的大脑中存储了所有这些小信息之后,我仍然不明白第一个代码示例的真正含义:
- main() 函数有什么特别之处?
- 如果它不是真正的“main”,那么定义类似“main”函数的意义何在
- 如果没有输入,Python 如何决定调用哪个函数?
- 解释器读取
__init__.py文件和其他文件的方式有区别吗?
【问题讨论】:
-
您在这里有几个不同的问题,最好将它们分成单独的问题。另外,您在哪里看到过这种称为“重载 main 函数”的情况?
-
@BrenBarn 我经常在各种关于脚本和在提供 Python API 的应用程序中创建小程序的资源中找到它。如果你想要一个具体的例子,我需要挖掘它,因为我倾向于丢弃这些东西,但看到这种情况真的很常见。
-
@BrenBarn 如果从不同的角度基本相同,我怎么能把这个问题变成 4?
标签: python functional-programming overloading