• 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模块的相关知识,感兴趣的朋友可以关注我。

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

  • 相关阅读:
    【WPF】绘制柱状图、折线图、扇形图
    【WPF】获取容器宽高
    【SQL】SQL Server、MySQL、SQLite获取自增ID、自增ID清零
    【SQL Server操作】SQL Server重命名数据库及解决数据库无法分离的问题
    【数据迁移】MySQL数据库迁移到SQL Server
    【MySQL操作】MySQL导入导出数据库
    【MySQL操作】MySQL Workbench远程连接的一些操作
    【c#】遍历获得一个类的所有属性名
    vue 跨域 springCloud @CrossOrigin注解
    解决IDEA右侧maven不显示方法
  • 原文地址:https://www.cnblogs.com/a-mumu/p/14668839.html
Copyright © 2020-2023  润新知