• 模块的使用


    一、什么是模块?

      模块是一系列功能的集合体。 

      模块的分类:自定义模块、第三方模块、内置模块(c语言写的一些功能)

      常见的模块形式:

        1、一个module.py文件就是一个模块,文件名是module.py,而模块名是module。

        2、一个包含有__init__.py文件的文件夹也是模块。

        3、已被编译为共享库或DLL或C++扩展。

        4、使用c编写并链接到Python解释器的内置模块。

        

    二、为什么要用模块?

        模块的来源有两种:一种是自己写的,另一种是别人写的(第三方的或者内置的)。

        用第三方的或者内置的模块是一种拿来主义,可以的极大地提升开发效率。

        使用自定义模块可以使我们的程序更清晰,方便管理,实现功能的重复利用。(自定义模块即将我们自己程序中需要用到的公共的功能写入到一个python文件,然后的程序的各部分组件可以通过导入的方式来引用/重用自定义模块中的功能。)

        

    三、如何用模块?

        导入的方式有两种:

        import 模块名          --->前提是有这个模块!

        from 模块名 import 具体的功能

    以spam.py为例来介绍模块的使用,文件名是spam.py,模块名是spam。

    print('from the spam.py')
    
    money = 1000
    
    def read1():
        print('spam模块:',money)
    
    def read2():
        print('spam模块')
        read1()
    
    
    def change():
        global money
        money = 0

    在导模块的时候会触发文件的运行,文件只要运行了会发生什么事?

      1、会以run.py文件(当前执行文件)为准,在内存中会造一个内置名称空间,会造一个以文件级别全局名称空间

    首次导入模块发生了3件事:(重复导入会直接引用之前创造好的结果,不会重复执行模块的文件)

    1、以模块为准创造一个模块的名称空间

    2、执行模块对应的文件,将执行过程中产生的名字都丢到模块的名称空间

    3、在当前执行文件中拿到一个模块名

    import spam    #直接引入模块

    如果模块名过长可以起个别名:

    import 过长的模块名 as 新的别名

    在一行当中导多个某块:用逗号隔开,但是不建议这么写,这样写不够清晰,最好一行导一个

    import time,spam,os,sys

    from ... import ... 首次导入发生3件事

    1、以模块为准创造一个模块的名称空间。

    2、执行模块对应的文件,将执行过程中产生的名字都丢到模块的名称空间。

    3、在当前执行文件的名称空间中拿到一个名字,该名字直接指向模块中的某一个名字,意味着可以不用加任何前缀而直接使用。

    from spam import money,read1

    from ... import ...   对比 import ...

    优点:不用加前缀,代码更为精简

    缺点:容易与当前执行文件中名称空间中的名字冲突

    相同点:

    1、都会执行模块相应的文件,都会产生模块的名称空间。

    2、调用功能时,需要跑到定义时寻找作用域关系,与调用位置无关。

    不同点:

    1、一种需要加前缀,一种不需要加前缀

    支持取别名

    可以一行导入多个

    from ... import *   把模块中所有的不是以下划线__开头的名字都导入到当前位置。

    注意:大部分情况下我们的python程序不应该使用这种导入方式,因为*你不知道你导入什么名字,很有可能会覆盖掉你之前已经定义的名字。而且可读性极其的差,在交互式环境中导入时没有问题。

    在模块里定制一个变量

    __all__ = ['read1','money']
  • 相关阅读:
    上网助手(集成ipv6)windows版
    c# 串口编程
    test blog
    用于主题检测的临时日志(d020b283408c4bc68872f97ee237b663 3bfe001a32de4114a6b44005b770f6d7)
    OpenGL概述 陌陌
    [转载][转帖]谈谈我对攻读计算机研究生的看法。。。大牛的文章,见解精深独到
    滚动值的兼容问题
    js小练习去掉指定的字符组成一句话输出
    马虎将classname加到了id属性中,造成报错
    锋利的jquery读书笔记(一)
  • 原文地址:https://www.cnblogs.com/zhangrenguo/p/12561993.html
Copyright © 2020-2023  润新知