Python程序的执行方式,是否需要main函数

Python程序的执行方式有两种,一种是交互式编程,一种是文件执行方式。交互式编程是在命令行或者IDLE中直接输入代码,按回车键就可以运行代码,并立即看到输出结果。文件执行方式是创建一个源文件,将所有代码放在源文件中,让解释器逐行读取并执行源文件中的代码,直到文件末尾。1

交互式编程的优点是可以快速测试和调试代码,适合一些简单的任务或者学习Python的基本语法。缺点是不能保存代码,每次运行都要重新输入,不适合复杂的项目开发。2

文件执行方式的优点是可以保存代码,方便修改和重用,适合开发复杂的应用程序或者模块。缺点是需要创建和管理源文件,不能立即看到运行结果,需要使用命令或者工具来运行源文件。3

Python程序一般需要定义函数或者类等,如果让代码开始执行有几种实现方式,每一种方式使用的场景是什么,分别举一个例子:

  • 1.一种实现方式是在源文件中直接写要执行的代码,不需要缩进。这种方式适合一些简单的脚本或者测试代码,不需要定义主函数或者入口函数。例如:

# 这是一个简单的Python脚本
print("Hello, world!")
a = 10
b = 20
print(a + b)
  • 2.另一种实现方式是在源文件中定义一个主函数(main函数),并在程序入口(if name == ‘main’)中调用主函数。这种方式适合一些复杂的应用程序或者模块,可以将业务逻辑封装在主函数中,避免被其他模块导入时执行。例如:

# 这是一个复杂的Python应用程序
def main():
    # 这里是主函数
    print("This is the main function.")
    # 调用其他函数或者类等

if __name__ == '__main__':
    # 这里是程序入口
    main()

 在Python中,if __name__ == '__main__'这种写法是用于模块的入口执行代码的。

__name__是一个内置变量,它表示当前模块的名字。如果模块是被直接运行的,那么__name__ == '__main__'为True。如果模块是被导入的,那么__name__就是模块的名字,而不是'__main__'

举个例子:

# test.py 
print('模块被执行')

if __name__ == '__main__':
    print('模块被直接运行')

如果直接运行 test.py:

模块被执行
模块被直接运行

如果从另一个模块导入 test:

import test

 输出:

模块被执行

 可以看到,if __name__ == '__main__' 下的代码只在模块作为入口程序直接执行时才会被运行,而导入到其他模块中时不会被执行。

这可以让一个模块既能被导入,又能作为入口程序直接执行,非常方便。所以 Python 程序一般会这样写主入口:

if __name__ == '__main__':
    # 主代码逻辑

这样模块导入时主代码逻辑就不会被运行,作为入口程序直接执行时主代码才会被执行。

所以这种写法其实是一种模块的代码组织方式,可以将不希望在导入时自动执行的代码放在这种条件检查下面。

  • 3.还有一种实现方式是使用特殊的注释(shebang)来指定Python解释器的路径,并给源文件添加可执行权限。这种方式适合在Linux或者Mac OS等类Unix系统中运行Python程序,可以直接运行源文件而不需要输入python命令。例如:

好的,我来解释一下这种实现方式的原理和步骤。

首先,你需要知道什么是shebang(也叫做hashbang)。shebang是一种特殊的注释,它的作用是告诉操作系统的shell(比如bash或者zsh)用什么程序来执行这个文件。shebang必须写在文件的第一行,以#开头,紧跟着一个!,然后是程序的绝对路径。1

例如,如果你写了一个Python脚本,你想用/usr/bin/python3来执行它,那么你可以在文件的第一行写上:

#!/usr/bin/python3

这样,当你在shell中运行这个文件时,shell会自动调用/usr/bin/python3来执行这个文件。2

但是,这种方式有一个缺点,就是你必须知道程序的绝对路径,并且不同的系统可能有不同的路径。比如,有些系统可能把python3安装在/usr/local/bin/python3或者其他地方。3

为了解决这个问题,我们可以使用env命令来查找程序的路径。env命令可以根据环境变量PATH来搜索程序,并返回第一个匹配的结果。

所以,我们可以把shebang写成:

#!/usr/bin/env python3

这样,当我们运行这个文件时,shell会先调用/usr/bin/env python3来查找python3的路径,然后再用找到的路径来执行这个文件。

这种方式更加通用和可移植,因为它不依赖于程序的绝对路径,而是根据系统的环境变量来动态地确定路径。

但是,仅仅写了shebang还不够,我们还需要给文件添加可执行权限。否则,shell会认为这个文件是一个普通的文本文件,而不是一个可执行的程序。

给文件添加可执行权限的方法是使用chmod命令。chmod命令可以修改文件的权限模式,其中+x表示添加可执行权限。

例如,如果我们有一个名为hello.py的Python脚本,我们可以在shell中输入:

chmod +x hello.py

这样,我们就给hello.py添加了可执行权限。

最后,我们就可以直接运行这个文件了。我们只需要在shell中输入:

./hello.py

注意,在文件名前面加上./表示当前目录。如果你想运行其他目录下的文件,你需要指定相对或者绝对路径。

这样,shell会根据shebang来调用相应的程序来执行这个文件,并输出结果。

你可能感兴趣的:(Python基础,python)