zoukankan      html  css  js  c++  java
  • 导入模块因其的导入系列相关部分

     一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀。

       但其实import加载的模块分为四个通用类别: 

      1 使用python编写的代码(.py文件)

      2 已被编译为共享库或DLL的C或C++扩展

      3 包好一组模块的包

      4 使用C编写并链接到python解释器的内置模块

    首先呢,导入模块会用到import,还会用到from,这两种有什么区别吗?

    import意思就是调用,from的意思从...下面看一段调用代码

    from time import sleep    #这里的意思是:从time模块当中调用sleep这个变量,接下来就可以

    sleep(3)                    #没错,在这里可以直接用了,效果一样停顿三秒

                    #但是请注意,如果本文件中有相同的变量名会发生冲突

    另外,from后面也可以跟上比如(包,类)的名字,import后面也可以跟上模块名字,他们的关系是import后面跟的是from后面的一部分

    在导入文件时,按照顺序会优先导入本地的模块(文件),比如你自己建了一个文件time.py,接下来导入的time模块就是自己建的这个time文件,原本的time模块的功能都没有了

    所以,文件起名需谨慎

    # 当导入一个模块时会从sys.modules里查看该模块是否被导入,如果没有导入,就依据sys.path路径寻找模块
    #并且创建命名空间
    # 执行文件,把文件中的名字都放到命名空间里

    为已经导入的模块起别名的方式对编写可扩展的代码很有用,假设有两个模块xmlreader.py和csvreader.py,
    它们都定义了函数read_data(filename):用来从文件中读取一些数据,
    但采用不同的输入格式。可以编写代码来选择性地挑选读取模块,例如
    if file_format == 'xml':
    import xmlreader as reader #as的意思是把前面的名字类似于赋值给了后面的名字,然后调研破那个后面的名字就可以实现前面模块的功能
    elif file_format == 'csv':
    import csvreader as reader #两个reader同时兼容着两个模块的功能
    data=reader.read_date(filename)
    from time import  #   *在这里代表time模块下所有的功能都被调用,并且可以被修改,很不安全
    在调用的模块里面加__all__= ['这里放名字']
    __all__和*相关的,__all__在这里不是变量了,后面必须跟list,list里必须是字符串
    放进去之后该模块的功能才能使用
        from 模块名 import * 和 __all__ 是一对
    # 没有这个变量,就会导入所有的名字
    # 如果有all 只导入all列表中的名字

    __name__用法
    #在本文件a使用__name__打印结果是__main__
    #在b文件调用a时就打印被调用的文件a的名字
    #可以通过if判断来控制在a和b文件界面的打印效果
    注意:所有的模块导入都应该尽量往上写,模块不会被重复调用,查看从哪儿调用模块sys.path
        # 内置模块
        # 扩展模块
        # 自定义模块

    模块也可以一行导入多个
    import time,os,re


  • 相关阅读:
    hdu 5976 Detachment
    poj 2096 Collecting Bugs
    hdu 4544 湫湫系列故事——消灭兔子
    Educational Codeforces Round 8 B. New Skateboard
    python 迭代器与生成器 区别
    【机器学习】EM算法详细推导和讲解
    【机器学习】极大似然估计详解
    标准sql工单模板
    【机器学习】LDA 浅谈
    Jupyter notebook入门教程
  • 原文地址:https://www.cnblogs.com/ddjl/p/8269083.html
Copyright © 2011-2022 走看看