python

Python 文件开头的特殊注释行

💡
#!/usr/bin/env python3 # -*- coding: utf-8 -*-
通常称为shebang(或hashbang)和编码声明,是 Python 脚本的通用约定,用于确保脚本能够以正确的方式和编码执行。
  • Shebang ( #!/usr/bin/env python3 ):
    • 这行代码只对 Linux/Unix 用户适用,用来指定本脚本用什么解释器来执行。其他环境下等同于注释。
    • 这一行被称为 shebang 或者 hashbang,它告诉操作系统如何执行该脚本。当在类 Unix 系统中直接运行一个脚本文件时,系统会读取文件的第一行来确定应该使用哪个解释器来运行剩下的脚本内容。
    • #! : 叫做shebang或者sha-bang,有的翻译组将它译为 释伴,即“解释伴随行”的简称,同时又是shebang的音译。Shebang通常出现在类Unix系统的脚本中第一行,作为前两个字符。在Shebang之后,可以有一个或数个空白字符,后接解释器的绝对路径,用于指明执行这个脚本文件的解释器。
    • /usr/bin/env 是一个常见的 Unix 程序,用于在用户的环境变量 $PATH 中查找 python3 命令并执行它。这样做的好处是不需要指定 Python 解释器的绝对路径,提高了脚本的可移植性。
    • #!/usr/bin/python#!/usr/bin/env python 的区别。
      • #!/usr/bin/python
        • 告诉操作系统执行这个脚本的时候,调用 /usr/bin 下的 python 解释器。
        • 写死了python 路径
      • #!/usr/bin/env python
        • 这种用法是为了防止操作系统用户没有将 python 装在默认的 /usr/bin 路径里。当系统看到这一行的时候,首先会到 env 设置里查找 python 的安装路径,再调用对应路径下的解释器程序完成操作。
        • 会去环境设置寻找 python 目录,可以增强代码的可移植性,推荐这种写法。有这句的,加上执行权限后,可以直接用 ./ 执行,不然会出错,因为找不到 python 解释器。
      调用方法1:
      python script.py #!/usr/bin/python 被忽略,等同于注释
      调用方法2:
      ./script.py #!/usr/bin/python 指定解释器的路径
  • 编码声明 ( # -*- coding: utf-8 -*-# coding=utf-8 ):
    • 这一行是一个编码声明,它告诉 Python 解释器使用 UTF-8 编码来读取源代码文件。
    • 在 Python 2.x 版本中尤其重要,因为默认的编码可能不是 UTF-8。
    • 在 Python 3.x 中,默认就是 UTF-8 编码,所以这一行不是必需的,但保留它可以提高兼容性,并明确表明文件采用 UTF-8 编码。
    • 这种格式的编码声明也被编辑器识别,例如 Emacs 或 Vim,可以帮助编辑器按照正确的编码方式打开文件。

命名规范

  • 约定
    • 类型
      可以被外部代码访问和使用的部分
      只能在内部使用(私有化)
      Packages (包目录)
      lower_with_under(小驼峰下划线分割)
      -
      Modules (模块文件)
      lower_with_under.py(小驼峰下划线分割)
      -
      Classes(类)
      CapWords(大驼峰)
      -
      Functions and methods( 函数方法)
      lower_with_under()(小驼峰下划线分割)
      _lower_with_under()(小驼峰下划线分割)
      Constants(常量)
      ALL_CAPS_UNDER(大驼峰下划线分割)
      _ALL_CAPS_UNDER(大驼峰下划线分割)
  • 函数和方法应当为动词
  • 变量和常量应当为名词
  • 类名应该见名知意
    • 类名尽量使用单数
    • 类代表的是实体

创建模块和mian

安装模块时,可以将项目作为 python -m example_module 运行。
python -m的作用:
在Python中,python -m是一种命令行选项,用于执行模块(Module)作为脚本。它的作用如下:
  1. 以模块形式运行脚本:使用python -m可以直接从命令行以模块形式运行Python脚本,而无需指定完整的脚本文件路径。这种方式对于执行包含if __name__ == "__main__":代码块的模块非常有用,因为它允许模块在作为脚本运行时执行特定的代码块。
  1. 寻找模块:python -m会按照Python模块搜索路径来寻找指定的模块。它可以找到位于系统路径或安装的第三方库路径中的模块,并执行相应的代码。
  1. 方便执行Python标准库模块:使用python -m可以方便地执行Python标准库中的模块,而无需提供完整的模块路径。例如,要执行json模块中的工具(tool)子模块,可以使用python -m json.tool命令。
总之,python -m选项提供了一种简便的方式来执行模块作为脚本,并允许在模块中定义特定的执行逻辑。它还可以方便地执行Python标准库中的模块。
 

if name == ‘main’:

  • py 文件是入口文件(即当该文件被直接执行时),判断为True,执行 if 语句块。否则判断为False
  • 【注】
    • 它是可选的,但为了使得文件实现代码逻辑的拆分,增强了代码的重用性与模块化,使用__name__ == 'main'是Pythonic的好习惯。如文件中有执行某段逻辑的代码,且只希望在直接执行该文件时运行这段代码,则应使用__name__ == 'main'判断。
对于本文内容有任何疑问, 可与我联系.