zoukankan      html  css  js  c++  java
  • 包的研究

    '''
    import 模块 发生了三件事:
    1,在内存中开辟一个名称空间aaa
    2,自动将包下面的__init__文件中代码加载到内存。
    3, 通过aaa. 获取模块中的对象。
    '''
    # import  from ... import ...
    # 已知aaa目录下的m1.py里面
    # x = 1
    # y = 2
    # z = 3333
    
    # import aaa  # 实际引用的 aaa 下面的__init__文件
    # print(aaa.x)
    # # print(aaa.y)
    # # print(aaa.z)
    
    # 方法一:可以
    # from aaa import m1
    # m1.func1()
    
    # 方法二:
    # 在aaa所在的__init__.py里面加入 from aaa import m1  # 这样可以
    # 然后执行
    # import aaa
    # aaa.m1.func1()
    
    # 方法三:
    # from aaa.m1 import func1
    # func1()
    
    
    
    # import sys
    # print(sys.path)
    # sys.path.pop(1)
    # print(sys.path)
    
    # import aaa
    # aaa.m1.func1()
    
    
    # 引用bbb
    # 在aaa下的__init__.py里面写入 bbb = 'alex'
    # import aaa
    # print(aaa.bbb)  #alex
    
    # 在aaa包下创建一个bbb包,bbb下的__init__.py里面写入 xx = 'oo' oo = 'xx'
    # import aaa  #直接引用不到,需要在aaa的__init__.py里面写入from aaa import bbb
    # print(aaa.bbb.xx)
    # print(aaa.bbb.oo)
    
    
    import aaa  #直接引用不到,需要在bbb下的__init__.py里面写入from aaa.bbb import m2
    aaa.bbb.m2.func2()
    
    
    # 总结:
    # 执行文件!!的当前目录是在sys.path的第一个参数。
    # 所以当前目录的文件可以直接import。
    # 无论怎么样导入文件import 还是 from ... import ... 一定是从执行文件当前目录开始。
    
    
    # 模块的分发
    
    # import NB as nb
    # nb.f1()
    # nb.f2()
    # nb.f3()
    # nb.f4()
    # nb.f5()
    # nb.f6()
    
    # 相对导入,绝对导入
    
    #
    
    # 包的总结:
    # 如果要是 from 包.包.包(执行文件同一个目录,sys.path) import ... 那么 __init__ 可以不用任何操作
    # .的左边一定是包
    # 如果你是 import 包  __init__ 必须要各种写。
    
    
    # import sys
    # print(sys.path)
  • 相关阅读:
    DB2 导入CSV文件
    非归档模式下丢失数据文件,怎么办
    制作U盘操作系统安装盘
    Oracle 发布 NoSQL 数据库
    【转载】VMWare Workstation 支持64位操作系统
    net下多个应用之间的web.config冲突的解决办法(禁止继承)
    \r\n 的真切含义
    VMware虚拟机中调整Linux分区大小手记
    磨刀不光不误切菜功,还能强身健体
    农夫送狼羊白菜过河_题目收集
  • 原文地址:https://www.cnblogs.com/wangkaiok/p/10045041.html
Copyright © 2011-2022 走看看