zoukankan      html  css  js  c++  java
  • Python——模块

    1. 模块相关的基本知识

    (1)模块导入位置

      所有的模块导入都应该尽量写在开始

    (2)模块导入顺序

      内置 > 扩展 > 自定义

    (3)模块是否会被重复导入

       sys.moudles

    (4)从哪儿导入模块

       sys.path

    # 模块为什么不会被重复导入?
    
    # 先从sys.modules里查看是否已经被导入
    # 如果没有被导入就依据sys.path路径去寻找模块
    # 找到了就导入模块,没找到就报错
    # 导入之前,创建这个模块的命名空间
    # 执行文件,把文件中的名字都放到命名空间里
    
    
    import sys
    
    print(sys.modules)    # 检查模块是否已被导入
    print(sys.modules.keys())
    print(sys.path)    # 导入模块的路径
    View Code

    2. 模块的导入方式

    (1)import 模块名  

      调用:模块名.变量名

      导入的模块有独立的命名空间,和本文件中变量名完全不冲突

    import demo     # in demo.py
    
    def read():
        print('in my own',money)
    money = 200
    
    demo.read()     # in demo 100
    print(demo.money)   # 100
    View Code

    (2)import 模块名 as 重命名的模块名  

      提高代码的兼容性

    import time as t    # 给time取别名为t
    
    print(t.time())     # 可以直接用别名操作  1539069128.1001534
    # print(time.time())     # 报错:重命名之后,原名字不可以用
    View Code

    (3)import 模块名1,模块名2,模块名3,... 【少用】

    (4)from ... import ...  

      <1> from 模块名 import 变量名   

         直接使用变量名就可以完成操作
         和本文件中重名的变量名会发生冲突

      <2> from 模块名 import 变量名 as 重命名变量名  

      <3> from 模块名 import 变量名1,变量名2,变量名3,...  

      <4> from 模块名 import * 【少用】

         将模块中的所有变量名都放到内存中
         和本文件中重名的变量名会发生冲突
         from 模块名 import * 和 __all__ = ['变量名1','变量名2',...]是一对
          有__all__,就只导入all列表中的名字
          没有__all__,就导入所有名字

    #   demo.py中有__all__ = ['money']时
    
    from demo import *
    print(money)  # 100
    read()  # 报错
    
    #   demo.py中没有__all__ = ['money']时
    
    from demo import *
    print(money)  # 100
    read()  # in demo 1 100
    View Code
    # demo.py
    
    
    __all__ = ['read','read2']
    money = 100
    
    def login():
        print('正在执行此登陆程序')
    def read():
        print('in demo read()',money)
    def read2():
        print('in demo read2()')
    
    
    
    # 需求:执行demo.py时,执行打印
    #       导入demo时,不执行打印
    
    # 在demo.py 中执行时才执行下面代码
    if __name__ == '__main__':
        ret = login()
        print(ret)
        print('hello')
    
    # print(__name__)
        # demo : 在 03 模块.py 中执行
        # __main__ :  在demo.py 中执行
    View Code

          在模块中,有一个变量__name__
          直接执行此模块时:__name__ == __main__
          在其他模块中引用此模块执行时,__name__ == __模块的名字__

    长得丑就应该多读书。我爱学习,只爱学习,最爱学习!
  • 相关阅读:
    frida多版本安装 ubuntu同时安装多个版本的frida
    python爬虫备忘录
    解决linux不能启动google问题
    Centos7 自定义守护进程
    (CentOS 7.0和7.5实验过) 更改网卡名称
    centos 配置网络连接(本机是基于无线网,虚拟机上)
    linux 仿QQ 2.0版本
    linux 实现仿QQ应用程序
    linux 终端、伪终端、虚拟终端的理解
    linux中的make命令
  • 原文地址:https://www.cnblogs.com/xc-718/p/9763123.html
Copyright © 2011-2022 走看看