Python的基本使用3

1、模块和包

在Python中,一个.py文件就称之为一个模块(Module)。当一个模块编写完毕,就可以被其他地方引用。我们在编写程序的时候,也经常引用其他模块,包括Python内置的模块和来自第三方的模块。
使用模块还可以避免函数名和变量名冲突。相同名字的函数和变量完全可以分别存在不同的模块中,因此,我们自己在编写模块时,不必考虑名字会与其他模块冲突。但是也要注意,尽量不要与内置函数名字冲突。查看Python的所有内置函数:链接

 自己创建模块时要注意命名,不能和Python自带的模块名称冲突。例如,系统自带了sys模块,自己的模块就不可命名为sys.py,否则将无法导入系统自带的sys模块。

在Python的模块中,认为一些普通的函数和变量名是公开的(public),可以被直接引用,比如:abcx123PI等。而类似__xxx__这样的变量是特殊变量,可以被直接引用,但是有特殊用途,比如__author____name__就是特殊变量,hello模块定义的文档注释也可以用特殊变量__doc__访问,我们自己的变量一般不要用这种变量名。类似_xxx__xxx这样的函数或变量就是非公开的(private),不应该被直接引用,比如_abc__abc等;但只是从习惯上而言,Python中并没有限制不能访问这些变量。

1.1、包

为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package)。一个拥有__init__.py文件的文件夹即可称之为一个包,不同包下模块可以同名,同一个包下模块同名才会冲突。每一个包目录下面都会有一个__init__.py的文件,这个文件是必须存在的,否则,Python就把这个目录当成普通目录,而不是一个包。__init__.py可以是空文件,也可以有Python代码,因为__init__.py本身就是一个模块,而它的模块名就是该文件夹名,比如下面的mycompany

上面组织目录当中,abc.py模块的名字就变成了mycompany.abc,类似的,xyz.py的模块名变成了mycompany.xyz。


上面目录当中,文件www.py的模块名就是mycompany.web.www,两个文件utils.py的模块名分别是mycompany.utilsmycompany.web.utils

1.2、如何引入模块

 Python本身就内置了很多非常有用的模块,只要安装完毕,这些模块就可以立刻使用。

例如,使用 sys 模块:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

' a test module '

__author__ = 'Michael Liao'

import sys

def test():
    args = sys.argv
    if len(args)==1:
        print('Hello, world!')
    elif len(args)==2:
        print('Hello, %s!' % args[1])
    else:
        print('Too many arguments!')

if __name__=='__main__':
    test()

第1行和第2行是标准注释,第1行注释可以让这个hello.py文件直接在Unix/Linux/Mac上运行,第2行注释表示.py文件本身使用标准UTF-8编码;第4行是一个字符串,表示模块的文档注释,任何模块代码的第一个字符串都被视为模块的文档注释;第6行使用__author__变量把作者写进去,这样当你公开源代码后别人就可以瞻仰你的大名;

以上就是Python模块的标准文件模板,当然也可以全部删掉不写。

当我们在命令行运行一个模块文件时,Python解释器会把一个特殊变量__name__置为__main__,而如果在其他地方导入该模块时,将不会把__name__置为__main__。

1.3、使用第三方模块

在Python中,安装第三方模块,是通过包管理工具pip完成的。在安装Python时,我们可以勾选 pip 来安装包管理工具。在命令提示符窗口下尝试运行pip,如果Windows提示未找到命令,可以重新运行安装程序添加pip

安装第三方模块的方法:

pip install Pillow
原文地址:https://www.cnblogs.com/wenxuehai/p/13679390.html