我经常看到包含def execute(self)
和def run()
python是否会像C ++中的int main()一样自动选择它?
答案 0 :(得分:2)
Python是一种解释型语言,默认情况下它会逐行读取,直到文件末尾。可以定义和调用函数等,但没有像C中那样的入口点。
然而,通常在python代码中,人们会包含以下内容:
if __name__ == "__main__":
doSomeFunCodeIHave()
这样做的目的是仅在执行源文件时执行,而不是导入。这也是包含测试模块代码的有用方法,当您稍后在项目中使用它时可以将其排除。
答案 1 :(得分:1)
没有。除非你的脚本在一些包装代码中加载,否则它会执行你的文件的运行或执行功能。
答案 2 :(得分:1)
不,这些方法不是自动"跑。关于它们没有什么特别之处,可能execute
和run
是方法的常用名称,并且您巧合地多次见过它们。
但是,有一种方法可以执行" main"您运行脚本后立即执行此方法。您可以通过以下方式执行此操作:
# script.py
def foo():
print "Hello World!"
if __name__== "__main__":
foo()
如果您运行python script.py
,则Hello World
将打印到控制台。
答案 3 :(得分:0)
我是python newb,所以带一点盐, 但是run()方法有一个“惯例” https://docs.python.org/3/library/threading.html 我无法提供更深入的解释,因为我仍然还在将2 + 2放在一起,但是我想其他人可能会有所启发。
Thread类表示一个活动,该活动在单独的位置运行 控制线程。有两种方法可以指定活动: 将可调用对象传递给构造函数,或通过重写 子类中的 run()方法。没有其他方法(除了 构造函数)应在子类中重写。换句话说,只有 覆盖此类的 init ()和 run()方法。
创建线程对象后,其活动必须由以下对象启动 调用线程的start()方法。这会调用 run()方法 单独的控制线程。
答案 4 :(得分:0)
这可能会在您创建自定义操作员的气流中发生。名称execute是一个专有名称:
Execute-运行程序调用操作员时执行的代码。该方法包含气流上下文作为参数,可用于读取配置值。
https://airflow.readthedocs.io/en/stable/howto/custom-operator.html