zoukankan      html  css  js  c++  java
  • Python 入门之 模块

    1、模块

    (1)模块是什么

    ​ 将一些常用的功能封装到一个文件中,那么这个存储着很多常用的功能的py文件,就是模块。 模块就是文件,存放一堆常用的函数。模块,就是一些常用功能的集合体。

    (2)模块能干什么

    ​ 文件化管理 , 提高了可读性 ,避免重复代码

    ​ 拿来就用(避免重复造轮子), Python中有很多类库

    (3)模块的分类

    ​ Python语言中,模块分为三类。

    第一类:内置模块

    ​ 也叫做标准库。此类模块就是python解释器给提供的,比如我们之前见过的time模块,os模块。标准库的模块非常多(200多个,每个模块又有很多功能)。

    第二类:第三方模块

    ​ 也可以叫做第三方库。一些python大神写的非常好用的模块,必须通过pip install 指令安装的模块,比如BeautfulSoup, Django,等等。大概有6000多个。

    第三类:自定义模块。

    ​ 我们自己在项目中定义的一些模块。

    2、import 的使用

    ​ import 翻译过来就是导入的意思。

    (1)import时会做三件事

    <1> 将所调用文件中所有代码读取到当前文件

    <2> 在当前文件开辟空间

    <3> 等待被调用

    (2)import 导入同一个模块名时,只执行一次

    import test # 导入  拿test工具箱
    import test # 导入  拿test工具箱
    import test # 导入  拿test工具箱   重复导入会直接引用内存中已经加载好的结果
    
    def t1():
        print("高级工程师")
    
    import test
    test.t1()
    test.t2()
    print(test.tt)
    
    import test              # 将整个test工具箱拿来
    a = test.t1
    b = test.t2
    
    a()
    b()
    
    import test as t          # 所导入的模块名字过长时可以起别名,方便引用
    t.t1()
    
    import test               # 导入模块不能加后缀名
    
    #(在pycharm中编辑代码时,飘红不代表报错)
    

    (3)as 支持 import 和 from 可以用来修改模块的名字

    from test import t1 as t       # 从test工具箱中将t1这个工具拿过来,并重起了个名字t
    
    def t1():
        print("高级工程师")
    t1()
    t()
    
    # 导入模块时,from 和 import 推荐使用from
    

    (4)import 和 from 的区别

    <1> from只能执行导入的工具

    <2> import 能够执行整个模块中所有的功能

    <3> from容易将当前文件中定义的功能覆盖

    <4> from比import灵活

    <5> import 和 from 使用的都是相对路径

    <6> import 只能导入当前文件夹下的模块

    <7> import 后边不能加点操作

    (5)模块的两种用法: if __ name__ == "__ main__"

    <1> 当做模块被导入 import/from

    <2> 当做脚本被被执行

    注:只有py文件当作模块被导入时,字节码才会进行保留

    (6)模块导入时的执行顺序

    ​ Python中引用模块是按照一定的规则以及顺序去寻找的,这个查询顺序为:先从内存中已经加载的模块进行寻找,找不到再从内置模块中寻找,内置模块如果也没有,最后去sys.path中路径包含的模块中寻找。它只会按照这个顺序从这些指定的地方去寻找,如果最终都没有找到,那么就会报错。

    内存中已经加载的模块->内置模块->sys.path路径中包含的模块

    (7)模块的查找顺序

    ​ <1> 在第一次导入某个模块时,会先检查该模块是否已经被加载到内存中(当前执行文件的名称空间对应的内存),如果有则直接引用(ps:python解释器在启动时会自动加载一些模块到内存中,可以使用sys.modules查看)

    ​ <2> 如果没有,解释器则会查找同名的内置模块

    ​ <3> 如果还没有找到就从sys.path给出的目录列表中依次寻找文件。

    需要特别注意的是:自定义的模块名不应该与系统内置模块重名。

    (8)以后在导入模块时需注意可能会产生的坑

    <1> 注意自己定义的模块的名字

    import abcd
    abcd.func()
    

    <2> 注意自己的思路 -- 循环导入时建议 导入模式放在需要的地方

    import test,c,abcd      # 不建议这样导入
    test.t1()
    print(c.ac)
    abcd.func()
    
    import test
    import c
    import abcd              # 建议多行导入:易于阅读 易于编辑 易于搜索 易于维护。
    
    import test
    from test import *         # 拿整个工具箱
    
    t1()
    t2()
    print(tt)
    

    (9)通过__ all__ 控制要导入的内容

    __all__=['name','read1']        # 这样在另外一个文件中用from spam import *就只能导入列表中规定的两个名字
    
  • 相关阅读:
    Asp.Net服务器Cassini
    Vista系统Administrator帐户的激活与禁用
    SqlServer中的Top * With Ties
    SqlServer建远程服务连接
    SqlServer2005安装成功后补加Sa用户
    列出某个表中所有的列名
    水晶报表周期性打开报表失败
    Asp.net中文cookie的乱码问题
    HTML数据库编程、JavaScript数据库编程
    试图索引的限制
  • 原文地址:https://www.cnblogs.com/caiyongliang/p/11481412.html
Copyright © 2011-2022 走看看