Python合集之模块(四)

使用模块可以避免函数名和变量名重名引发的冲突,那么,如果模块名重复应该再怎么办?在Python中,提供了包的概念,宝石一个分层次的目录结构,他将一组功能相近的模块组织在一个目录下。这样,既可以起到规范代码的作用,又能避免模块名重名引起的冲突。

注:包简单理解就是文件夹,只不过在该文件夹下必须存在一个名为 __init__.py的文件。

1.Python程序结构的目录

在实际项目开发时,通常情况下,会创建多个包用于存放不同类型的文件。例如:开发一个网站时,可以创建如下的包结构:

Shop——————项目名

  admin————用于保存后台文件的包

    __init__.py

    forms.py

    views.py

  home————用于保存前台文件的包

    __init__.py

    forms.py

    views.py

  templates————用于保存模板文件的包

    __init__.py

    models.py

  manage.py————入口程序

注:在上面的目录结构中,先创建一个名称为shop的项目,然后再该包下又创建了adminhome和templates3个包和一个manage.py的文件,最后在每个包中,又创建相应的模块。

2.创建和使用包

2.1创建包

创建包实际上就是创建一个文件夹,并且在该文件夹中创建一个名称为__init__.py的Python文件,在__init__.py文件中,可以不编写任何代码,也可以编写一些Python代码,在__init__.py文件中所编写的代码,在导入包时会自动执行。

注:__init__.py文件是一个模块文件,模块名为对应的包名,例如,在setting包中创建的__init__.py文件,对应的模块名为setting。

2.2使用包

创建包以后,就可以在包中创建相应的模块,然后再使用import语句从包中加载模块,从包中加载模块通常有以下的几种方式:

1.通过 import +完整包名+模块名 的形式加载指定模块

例如:

import settings.size

通过该方式导入模块后,在使用时需要使用完整的名称,例如 在已经创建的 settings包中创建一个名称为size的模块,并且在该模块中定义两个变量,代码如下

width=800
height=600

这时,通过上面的这种方式导入size模块后,在调用width和height变量时,就需要在变量名前加入settings.size前缀,对应的代码如下:

import settings.size
 if __name__="main":
    print("宽度:",settings.size.width)
    print("高度:",settings.size.height)

2.通过 from+完整包名 + import + 模块名 形式加载指定 模块

例如:

from settings import size

通过该方式导入模块后,在使用时不需要带包前缀,但是需要带模块名,例如:

from settings import size
if __name__="main":
    print("宽度:",size.width)
    print("高度:",size.height)

3.通过 from+完整包名+模块名+import+定义名 形式加载指定模块

例如:

from settings.size import width,height

通过该方式导入模块的函数名、变量名或者类后,在使用时直接使用函数、变量名或者类名即可。

from settings.size import width,height
if __name__="main":
    print("宽度:",width)
    print("高度:",height)

注:在通过 from+完整包名+模块名+import+定义名 的形式加载模块时,可以使用 * 号代替定义名,表示加载该模块下的全部定义。

花絮:

本期的Python 模块就分享到这里,下期我们将继续分享Python模块的相关知识,感兴趣的朋友可以关注我。

同时也可以关注下我的个人 微信订阅号,园子里面的文章也会第一时间在订阅号里面进行推送跟更新。

原文地址:https://www.cnblogs.com/a-mumu/p/14668839.html