zoukankan      html  css  js  c++  java
  • python-29-模块与包导入

    前言

    模块与包导入,经常看到代码里开头那几行都是from xxx import xxx 或者 import xxx,这就是模块与包的导入。

    模块的导入推荐顺序:

    • 内置模块,如os,sys
    • 扩展模块,django
    • 自定义模块,自己封装的模块

    一、模块导入

    • 1.modules里查找是否存在模块,存在即被导入,否则sys.path依次查找模块,找到导入,否则找不到调用时会报错
    • 2.创建这个模块的命名空间
    • 3.把文件的名字放到命名空间

    1、模块不会重复被导入 : sys.moudles;从哪儿导入模块 : sys.path

    2、import后导入的模块直接被执行

    # 1、import后导入的模块直接被执行
    import test

     3、模块起别名,直接在后面as xxx

    # 2、模块起别名
    import test as t
    print(t.f())

    模块起别名的好处:①模块名太长,可以起短的名字;②提高代码兼容性

    # 起别名的好处例子:提高兼容性,调用的时候全用:db.xxx
    if db == 'mysql':
        import pymysql as db
    elif db == 'sqlsv':
        import sqlsv as db
    else:import nodb db

     4、form导入,根据sys.path找,time 将不能使用,可以import多个

     5、import * (不推荐用)

    # 4、import * 不推荐用
    from time import *
    sleep = 1           # 万一方法与变量命名重复会报错
    sleep(1)

     6、py文件内运行,在模块中 有一个变量__name__如果等于__mian__那么就在本模块中运行,否则不运行。

    在代码最后加一句 if __name__ == '__main__':,后面接在本模块中运行的代码:

    if __name__ == '__main__':
        xxx

    总结:

    ①import 模块名:模块名.变量名

    • 和本文件中的变量名完全不冲突

    ②from import:from 模块名 import 变量名

    • 直接使用 变量名 就可以完成操作
    • 如果本文件中有相同的变量名会发生冲突

    ③from 模块名 import *

    • 将模块中的所有变量名都放到内存中
    • 如果本文件中有相同的变量名会发生冲突

    二、包导入

    什么叫包?把解决一类问题的模块放在同一个文件夹里,就好像类下面有多个方法可以调用。

    1、比如我要在api模块中导入common模块,那么先要导入common.com包再importcommon:

     2、一个包下有多个模块:

     3、pycharm中新建包:

     如果报找不到xxx模块的错误,可以使用 sys.path 查看环境变量进行调节或将它加入环境变量。

    欢迎来大家QQ交流群一起学习:482713805

  • 相关阅读:
    JAVA语法之小结
    JAVA之经典Student问题1
    Android之动画1
    Android之屏幕测试
    Android之点击切换图片
    Android之标签选项卡
    Android简单计算器
    Javascript之相册拖动管理
    Javascript之改变盒子颜色
    CSS之照片翻转
  • 原文地址:https://www.cnblogs.com/gsxl/p/12491548.html
Copyright © 2011-2022 走看看