精华内容
下载资源
问答
  • Python定义Main函数

    万次阅读 2019-05-24 20:49:57
    这个函数通常被命名为main(),并且依据语言标准具有特定的返回类型和参数。另一方面,Python解释器从文件顶部开始执行脚本,并且没有自动执行的特殊函数。 尽管如此,为程序的执行定义一个起始点有助于理解程序是...

    许多编程语言都有一个特殊的函数,当操作系统开始运行程序时会自动执行该函数。这个函数通常被命名为main(),并且依据语言标准具有特定的返回类型和参数。另一方面,Python解释器从文件顶部开始执行脚本,并且没有自动执行的特殊函数。

    尽管如此,为程序的执行定义一个起始点有助于理解程序是如何运行的。Python程序员提出了几种方式对此进行实现。

    本文结束时,您将了解以下内容:

    什么是特殊的__name__变量以及Python中如何定义它

    为什么要在Python中使用main()函数

    在Python中定义main()函数有哪些约定

    main()函数中应该包含哪些代码的最佳实践

    Python中的基本main()函数

    一些Python脚本中,包含一个函数定义和一个条件语句,如下所示:

    此代码中,包含一个main()函数,在程序执行时打印Hello World!。此外,还包含一个条件(或if)语句,用于检查__name__的值并将其与字符串"__main__"进行比较。当if语句为True时,Python解释器将执行main()函数。更多关于Python条件语句的信息可以由此获得。

    这种代码模式在Python文件中非常常见,它将作为脚本执行并导入另一个模块。为了帮助理解这段代码的执行方式,首先需要了解Python解释器如何根据代码的执行方式设置__name__。

    Python中的执行模式

    Python解释器执行代码有两种方式:

    通过命令行方式执行Python脚本。

    将代码从一个文件导入另一个文件或者解释器。

    更多内容可参考如何运行Python脚本。无论采用哪种方式,Python都会定义一个名为__name__的特殊变量,该变量包含一个字符串,其值取决于代码的使用方式。

    本文将如下示例文件保存为execution_methods.py,以探索代码如何根据上下文改变行为:

    在此文件中,定义了三个对print()函数的调用。前两个打印一些介绍性短语。第三个print()会先打印短语The value __name__ is,之后将使用Python内置的repr()函数打印出__name__变量。

    在Python中,repr()函数将对象转化为供解释器读取的形式。上述示例通过使用repr()函数来强调__name__的值为字符串。更多关于repr()的内容可参考Python文档。

    在本文中,您将随处可见文件(file),模块(module)和脚本(script)这三个字眼。实际上,三者之间并无太大的差别。不过,在强调代码目的时,还是存在细微的差异:

    文件:通常,Python文件是包含代码的任何文件。大多数Python文件的扩展名为.py。

    脚本:Python脚本是基于命令行执行以完成某项任务的一类文件。

    模块:Python模块是从另一个模块、脚本或解释器中导入的文件。更多关于Python模块的内容可参考Python文档。

    “如何运行Python脚本”一文也讨论了三者的差别。

    基于命令行执行

    在这类方法中,Python脚本将通过命令行来执行。

    执行脚本时,无法与Python解释器正在执行的代码交互。关于如何通过命令行执行代码的详细信息对本文而言并不重要,但您可以通过展开下框阅读更多有关Windows,Linux和macOS之间命令行差异的内容。

    命令行环境

    不同的操作系统在使用命令行执行代码时存在细微的差异。

    在Linux和macOS中,通常使用如下命令:

    美元符号($)之前的内容可能有所不同,具体取决于您的用户名和计算机名称。您键入的命令位于$之后。在Linux或macOS上,Python3的可执行文件名为python3,因此可以通过输入python3 script_name.py来运行python脚本。

    在Windows上,命令提示符通常如下所示:

    根据您的用户名,>之前的内容可能会有所不同,您输入的命令位于>之后。在Windows上,Python3的可执行文件通常为python。因此可以通过输入python script_name.py来运行python脚本。

    无论哪种操作系统,本文的Python脚本的输出结果都是相同的。因此本文以Linux和macOS为例。

    使用命令行执行execution_methods.py,如下所示:

    在这个示例中,__name__具有值'__main__',其中引号(')表明该值为字符串类型。

    请记住,在Python中,使用单引号(')和双引号(")定义的字符串没有区别。更多关于字符串的内容请参考Python的基本数据类型。

    如果在脚本中包含"shebang行"并直接执行它(./execution_methods.py),或者使用IPython或Jupyter Notebook的%run,将会获取相同的结果。

    您还可以通过向命令行添加-m参数的方法实现以模块的方式执行。通常情况下,推荐如下方式pip: python3 -m pip install package_name。

    添加-m参数将会运行包中__main__.py的代码。更多关于__main__.py文件的内容可参考如何将开源Python包发布到PyPI中。

    在三种情况中,__name__都具有相同的值:字符串'__main__'。

    技术细节:Python文档中具体定义了__name__何时取值为'__main__'。

    当通过标准输入,脚本或者交互提示中读取数据时,模块的__name__将取值为'__main__'。(来源)

    __name__与__doc__,__package__和其他属性一起存储在模块的全局命名空间。更多关于属性的信息可参考Python数据模型文档,特别是关于模块和包的信息,请参阅Python Import文档。

    导入模块或解释器

    接下来是Python解释器执行代码的第二种方式:导入。在开发模块或脚本时,可以使用import关键字导入他人已经构建的模块。

    在导入过程中,Python执行指定模块中定义的语句(但仅在第一次导入模块时)。要演示导入execution_methods.py文件的结果,需要启动Python解释器,然后导入execution_methods.py文件:

    在此代码输出中,Python解释器执行了三次print()函数调用。前两行由于没有变量,在输出方面与在命令行上作为脚本执行时完全相同。但是第三个输出存在差异。

    当Python解释器导入代码时,__name__的值与要导入的模块的名称相同。您可以通过第三行的输出了解这一点。__name__的值为'execution_methods',是Python导入的.py文件。

    注意如果您在没有退出Python时再次导入模块,将不会有输出。

    注意:更多关于导入在Python中如何工作的内容请参考官方文档和Python中的绝对和相对导入。

    英文原文:https://realpython.com/python-main-function/

    译者:我是昵称耶~

    展开全文
  • python中如何定义main方法

    千次阅读 2013-07-19 09:06:05
    我们有时写的python模块需要自己测试, 简单方法就是定义main函数, 然后测试自己的模块接口。 def main():  test_yourCode() if __name__ == "__main__":  main()
    我们有时写的python模块需要自己测试, 简单方法就是定义main函数, 然后测试自己的模块接口。
    

    def main():
         test_yourCode()


    if __name__ == "__main__":
         main()
    展开全文
  • 转自:https://www.pinlue.com/article/2019/05/2414/119025962829.html
    展开全文
  • Python定义Main函数(第三部分)

    千次阅读 2019-05-24 20:49:23
    许多语言,如C,C++,Java以及其他的一些语言,都会定义一个叫做main()的函数,当编译程序时,操作系统会自动调用该函数。此函数通常被称为入口点(entry point),因为它是程序进入执行的起始位置。...

    创建名为main()的函数来包含要运行的代码

    现在,您可以编写作为脚本由从命令行执行并导入且没有副作用的Python代码。接下来,您将学习如何编写代码并使其他程序员能轻松地理解其含义。

    许多语言,如C,C++,Java以及其他的一些语言,都会定义一个叫做main()的函数,当编译程序时,操作系统会自动调用该函数。此函数通常被称为入口点(entry point),因为它是程序进入执行的起始位置。

    相比之下,Python没有一个特殊的函数作为脚本的入口点。实际上在Python中可以将入口点定义成任何名称。

    尽管Python不要求将函数命名为main(),但是最佳的做法是将入口点函数命名为main()。这样方便其他程序员定位程序的起点。

    此外,main()函数应该包含Python解释器执行文件时要运行的任何代码。这比将代码放入条件语块中更好,因为用户可以在导入模块时重复使用main()函数。

    修改best_practices.py文件如下所示:

    在这个示例中,定义了一个main()函数,它包含了上面的条件语句块。之后修改条件语块执行main()。如果您将此代码作为脚本运行或导入,将获得与上一节相同的输出。

    在main()中调用其他函数

    另一种常见的实现方式是在main()中调用其他函数,而不是直接将代码写入main()。这样做的好处在于可以实现将几个独立运行的子任务整合。

    例如,某个脚本有如下功能:

    从数据源如数据库,文件,硬盘或web API读取数据。

    处理数据。

    将处理后的数据写入另一个位置。

    如果在单独的函数中各自实现这些子任务,您(或其他用户)可以很容易地实现代码重用。之后您可以在main()函数中创建默认的工作流。

    您可以根据自己的情况选择是否使用此方案。将任务拆分为多个函数会使重用更容易,但会增加他人理解代码的难度。

    修改best_practices.py文件如下所示:

    在此示例代码中,文件的前10行具有与之前相同的内容。第12行的第二个函数创建并返回一些示例数据,第17行的第三个函数模拟将修改后的数据写入数据库。

    第21行定义了main()函数。在此示例中,对main()做出修改,它将调用数据读取,数据处理以及数据写入等功能。

    首先,从read_data_from_web()中创建data。将data作为参数传入process_data(),之后将返回modified_data。最后,将modified_data传入write_data_to_database()。

    脚本的最后两行是条件语块用于验证__name__,并且如果if语句为True,则执行main()。

    在命令行中运行如下所示:

    根据执行结果,Python解释器在执行main()函数时,将依次执行read_data_from_web(),process_data()以及write_data_to_database()。当然,您也可以导入best_practices.py文件并重用process_data()作为不同的数据输入源,如下所示:

    在此示例中,导入了best_practices并且将其简写为bp。

    导入过程会导致Python解释器执行best_practices.py的全部代码,因此输出显示解释文件用途的信息。

    然后,从文件中存储数据而不是从Web中读取数据。之后,可以重用best_practices.py文件中的process_data()和write_data_to_database()函数。在此情况下,可以利用代码重写来取代在main()函数中实现全部的代码逻辑。

    实践总结

    以下是Python中main()函数的四个关键最佳实践:

    将计算时间过长或对计算机产生其他影响的代码写入函数或类,这样可以精确地控制代码的运行时间。

    使用不同的__name__值来确定上下文并使用条件语句更改代码的行为。

    将入口点函数命名为main(),以便传达函数的意图,即使Python对名为main()的函数并没有赋予特殊的含义。

    如果想代码重用,请在main()外定义函数,并在main()中对其进行调用。

    结论

    恭喜!您现在已经了解如何创建Python main()函数了。

    本文介绍了如下内容:

    了解__name__变量的值对于编写用于可执行脚本和导入模块的双重用途的代码的重要性。

    根据执行Python文件的方式,__name__具有不同的值。__name__的取值有以下几种情况:

    当从命令行执行文件或用python -m(执行某个包的__main__.py文件)时,值为"__main__"。

    如果作为模块被导入时,值为模块的名称。

    对于开发可重用的代码,Python程序员已经提供了一套良好的方案。

    现在,您可以开始编写一些非常棒的关于Python main()函数代码啦!

    英文原文:https://realpython.com/python-main-function/

    译者:我是昵称耶~

    展开全文
  • Main函数的最佳实践 既然您已经了解两种执行方式上的差异,那么掌握一些最佳实践方案还是很有用的。它们将适用于编写作为脚本运行的代码或者在另一个模块导入的代码。 如下是四种实践方式: ...请记住,Python解释...
  • pythonmain函数

    2019-05-22 21:15:23
    Python作为一门较为灵活的解释型脚本语言,其中定义main()函数只有当该Python脚本直接作为执行程序时才会执行; 当该python脚本被作为模块(module)引入(import)时,其中的main()函数将不会被执行。 这是由于两...
  • pythonmain函数和argv参数

    万次阅读 2017-02-08 21:34:13
    Python中,也有类似的运行机制,但方式却截然不同:Python使用缩进对齐组织代码的执行,所有没有缩进的代码(非函数定义和类定义),都会在载入时自动执行,这些代码,可以认为是Pythonmain函数。举个列子,我们...
  • [python] python main函数

    2021-04-16 00:04:25
    Python使用缩进来对代码组织并执行,所有没有缩进的代码(非函数定义、类定义),都会在载入时自动执行,这些代码,都可以认为是Pythonmain函数内的代码。 print('hello world!') 相当于 def main(): print('...
  • python-main

    2019-05-18 21:25:06
    被称作匿名函数,没有具体名称的函数,允许快速定义单行函数,可以用在任何需要函数的地方。 lambda与def的区别: def创建方法是有名称的,lambda没有; lambda会返回一个函数对象,但这个对象不会赋给一个标识符,...
  • pythonmain函数的用意

    千次阅读 2018-06-21 15:41:14
    在一个.py文件中,如果不是在定义函数,也就是说不是在def关键字的内嵌结构内,python会默认其余部分函数是main函数,并自动执行,但正规工程中,一般都会将main函数写为:if__name__==__main__ 每个人都在写,但.....
  • python 定义全局变量

    2020-10-07 20:52:22
    python定义全局变量 全局变量可以在代码任意位置创建,能够被所有对象和函数引用,有利于变量的共享。 全局变量的定义: global+变量名 声明后引用: OLD_URL='http://oldboyedu.com' def bb(): global OLD_...
  • python 定义函数

    2018-09-07 19:38:23
    Python源文件(.py)可以被直接运行,还可以作为模块module,被其他.py文件导入. if name == ‘main‘的意思是: 当.py文件被直接运行时,if name == ‘main‘之下的代码块将被运行; 当.py文件以模块形式被导入...
  • Pythonmain函数的用法

    2019-09-18 10:59:51
    Python作为一门较为灵活的解释型脚本语言,其中定义main()函数只有当该Python脚本直接作为执行程序时才会执行; 当该python脚本被作为模块(module)引入(import)时,其中的main()函数将不会被执行。 参考链接: ...
  • 估计很多人跟我一样初学python看代码的时候先找一下main()方法,从main往下看。但事实上python中是没有你理解中的...事实上python程序是从上而下逐行运行的,在.py文件中,除了def后定义函数外的代码都会被认为是“...
  • pythonmain函数总结

    2014-07-30 09:37:00
    Python使用缩进对齐组织代码的执行,所有没有缩进的代码(非函数定义和类定义),都会在载入时自动执行,这些代码,可以认为是Pythonmain函数。 每个文件(模块)都可以任意写一些没有缩进的代码,并且在载入时...
  • Python main函数

    2021-04-08 19:53:49
    Python作为一门较为灵活的解释型脚本语言,其中定义main()函数只有当该Python脚本直接作为执行程序时才会执行; 当该python脚本被作为模块(module)引入(import)时,其中的main()函数将不会被执行。 举一个例子: ...
  • Python学习笔记(2) - Pythonmain函数

    万次阅读 2010-11-25 10:33:00
    Python中,也有类似的运行机制,但方式却截然不同:Python使用缩进对齐组织代码的运行,所有没有缩进的代码(非函数定义和类定义),都会在载入时自动执行,这些代码,可以认为是Pythonmain函数。
  • QML文件定义信号和python定义槽绑定

    万次阅读 2020-07-19 13:09:16
    QML文件命名为Main.qml import QtQuick 2.12 import QtQuick.Window 2.12 Window { visible: true //此属性必须要定义 width: 640 height: 480 title: qsTr("Hello World") Rectangle { width: 320; height: ...
  • python定义生成器

    2019-10-09 16:22:25
    python中可以通过关键字yield将一个普通函数改造成生成器函数。下面的代码演示了如何实现一个生成斐波那契数列的生成器。 def fib(n): a,b=0,1 for _ in range(n): a,b=b,a+b yield a def main(): for ...
  • pythonmain函数、函数形参arg

    千次阅读 2019-08-27 14:43:10
    main函数的作用 if __name__ = '__main__' 可以保证在模块导入时不会...在C/Java中,main是程序执行的起点,Python中,也有类似的运行机制,但方式却截然不同:Python使用缩进对齐组织代码的执行,所有没有缩进的...
  • Python中,也有类似的运行机制,但方式却截然不同:Python使用缩进对齐组织代码的执行,所有没有缩进的代码(非函数定义和类定义),都会在载入时自动执行,这些代码,可以认为是Pythonmain函数。 每个文件(模块...
  • Python中的main方法

    2021-01-20 13:13:43
    Python中的main方法 ...事实上python程序是从上而下逐行运行的,在.py文件中,除了def后定义函数外的代码都会被认为是“main”方法中的内容从上而下执行。如果只是写个伟大的"hello world",不想写函数的话,
  • python定义/使用函数(方法)

    千次阅读 2019-05-29 19:05:34
    1.定义函数 ,在if name == “main”:中调用 : 例 : # -*- coding: utf-8 -*- print ("123") # Python 函数 def printme( name ) : print (name,"--") return name if __name__ == "__main__": printme(...
  • Python中的main函数

    2020-05-23 12:21:10
    Python作为一门较为灵活的解释型脚本语言,其中定义main()函数只有当该Python脚本直接作为执行程序时才会执行; 当该python脚本被作为模块(module)引入(import)时,其中的main()函数将不会被执行。 这是由于两...
  • 浅析python中的main

    2019-07-20 13:25:56
    Python作为一门较为灵活的解释型脚本语言,其中定义main()函数只有当该Python脚本直接作为执行程序时才会执行; 当该python脚本被作为模块(module)引入(import)时,其中的main()函数将不会被执行。 这是由于两方面...
  • 初始python,if __name__ == '__main__' 如何正确理解main函数的定义格式?众多语言都有main函数pythonmain函数定义简要插入链接与图片 众多语言都有main函数 在我所接触的编程语言中,Java,python,Scala都有自己...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,497
精华内容 598
关键字:

python定义main

python 订阅