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)
  • 相关阅读:
    Map 中的EntrySet() ,Map的遍历
    Struts2拦截器原理
    基于 <tx> 和 <aop> 命名空间的声明式事务管理
    Spring AOP Example 文件下载:
    Struts2拦截器
    好多开发文档——官网打不开的福音
    threejs样例
    bootCDN,用了都说好
    react拷贝index.html很恶心之解决办法
    网络爬虫好
  • 原文地址:https://www.cnblogs.com/wangkaiok/p/10045041.html
Copyright © 2011-2022 走看看