• 模块


    一  模块

    模块的定义:

          模块其实就是一系列功能的集合体,那么在python中一个.py文件就是一个模块。那么我们要使用一个模块,只需要import.加上被调用名就可以了。

    那么为什么要使用模块:

         1 从文件级别组合自程序,更方便管理,随着程序的发展,功能越来越多,为了方便管理,我们通常将文件分成一个个的文件,这样做程序的结构更加清晰,

    方便管理。这时我们不仅仅可以吧这些文件当作脚本去执行,还可以把他们当成模块导入到其他的模块中,实现了重复利用的功能。

        2  拿来主义,提升开发效率:

    同样的原理,我们也可以下载别人写好的模块然后导入到自己的项目中使用,这种拿来主义,可以极大地提升我们的开发效率。

    3 模块的使用:
    有两种方式:
    方式一:直接在执行模块使用import加‘.’后面跟我们需要调用的模块名,来调用模块。
    第一次调用模块发生三件事:
    1)创建一个模块的名称空间,这个名称空间是与执行模块的名称空间相互独立的。
    2)执行模块对应文件,将产生的名字存放于执行模块中的名称空间。
    3)当执行文件拿到一个模块名,通过这个名字来调用模块中的功能。
    import os
    那么每次使用都需要os.来调用模块的功能。

    方式二: 我们导入一个模块还可以用from。。。import。。。。的形式,那么from后面我们跟的就是被导入模块的名字,而import后面加的就是要导入的功能。
    那么方式二与方式一再前两步是一样的,执行模块中的功能始终以模块的名称空间为准。区别在于在当前名称空间中直接拿到的模块中的名字可以直接使用,而不用再加任何前缀。

    那么方式二有一点我们需要注意的就是,我们调用的时候不需要再在调用对象前加上模块名,
    但是:就如同我们下面这个例子
    调用模块
    def func():
        print('hello')
    
    执行模块
    x=213
    def index():
        print('dhfh')
    index()
    from spam import func
    # func=index
    func()
    # 这种方法的好处就是你,再调用模块中的功能,不需要制定模块spam.这种模式,而是直接使用名称
    # 缺点就是:会与执行模块的同样的名称重复,造成错乱。

    那么我们模块方式二还有一些简便的操作:
    1) 比如我们想要用到一个模块中的多个功能,但是我们又不能将所有的功能都罗列在from Spam import 。。。。。后面,于是我们想到用(*)来直接调用Spam里面全部的功能。
    2) 那么如果我们只是想让他调用一部分的功能,我们可以在被导入模块中定义:__all__['功能1'][‘功能2’],那么就只能但如后面列表中的功能。
    4  每个模块都有自己的一个独立的名称空间,在模块中定义的函数,当我们在其他模块调用时不用担心自己模块中全局变量会被导入,不会与调用模块发生冲突
    5  为导入模块起别名:比如我们要导入的模块名比较长,那么我们每次引用就比较麻烦,所以我们在导入时可以为其起别名:
    比如:import functional as func:或者import functional from index as ind 那么我们再引用就不用每次写那么长的名字。

    6
       编写好的一个python文件可以有两种用途:
        一:脚本,一个文件就是整个程序,用来被执行
        二:模块,文件中存放着一堆功能,用来被导入使用
     一个.py文件在当脚本运行与模块导入时的区别:
    我们可以使用:
       print(__name__)
    如果结果为
    __main__则被当作脚本执行。
    否则:被导入。
    
    
    
     
        1 当文件直接执行时为__main__
    2 在文件被当作模块导入时的情况下为:‘模块名’
    if __name__=='__main__'
            print(‘文件被当作脚本执行’)
            read1()#在文件被当作脚本执行时我们可以对文件进行检测。
    else:
            print(‘文件被导入’)
    
    
    

    7 模块搜索路径:
    模块的查找顺序是:内存中的模块->内置模块->sys.path路径中包含的模块
    其中很重要的一点就是sys.path 的第一个路径为当前执行文件路径。









  • 相关阅读:
    HDU2206:IP的计算
    HDU 2054 A == B ?A
    怎样确定循环节
    Python和Java编程题(二)
    Python和Java编程题(一)
    Java中的静态变量、静态方法问题
    快速排序的Java和python实现,亲测实际可用
    Java和Python分别实现直接选择排序
    Python和Java分别实现冒泡排序
    JavaScript(第十六天)【BOM基础】
  • 原文地址:https://www.cnblogs.com/zhangsanfeng/p/8709373.html
Copyright © 2020-2023  润新知