zoukankan      html  css  js  c++  java
  • 模块和包

    from import 的时候,相当于执行了整个py文件
    在from import的时候命名空间的变换
    导入了什么 就能使用什么 不导入的变量 不能使用
    不导入并不意味着不存 而是没有建立文件到模块中其他名字的引用
    当模块中导入的方法或者变量 和 本文件重名的时候,
    那么这个名字只代表最后一次对它赋值的哪个方法或者变量
    重命名
    from my_module import login as l
    l()

    导入多个
    from my_module import login,name
    login()
    print(name)
    name = '太亮'
    login()
    导入多个之后再重命名
    from my_module import login as l,name as n

    from 模块 import *
    from my_module import *
    login()
    name

    __all__可以控制*导入的内容
    from my_module import *
    __all__ = ["要引用的变量名"]
    login()
    from my_module import name
    print(name)

    把模块当成脚本运行

    运行一个py文件的两种方式
    1.以模块的形式运行
    import my_module
    if __name__ == '__main__':
        my_module.login()
    2.直接pycharm运行 cmd运行
      ----以脚本的形式运行
      那么需要在本文件中直接打印的代码上加上
      if __name__ == '__main__':
    在编写py文件的时候
    所有不在函数和类中封装的内容都应该写在
    if __name__ == '__main__':下面
    import sys
    import my_module
    sys.modules
    {'sys':文件的内存地址,
    'my_module': my_module的地址
    '__main__':当前直接执行文件所在的地址}
    存储了所有导入的文件的名字和这个文件的内存地址

    再使用反射自己模块中的内容的时候
    import sys
    getattr(sys.modules[__name__],变量名)

    模块没导入之前在硬盘上

    模块的搜索路径全部存储在sys.path列表中

    导入模块的顺序,是从前到后找到一个符合条件的模块就立即停止不再向后寻找

    如果要导入的模块和当前执行的文件同级

    直接导入即可

    如果要导入的模块和当前执行的文件不同级

    需要把要导入模块的绝对路径添加到sys.path列表中

      

    模块的循环引用

    # 在模块的导入中 不要产生循环引用问题

    # 如果发生循环导入了

    # 就会发现明明写在这个模块中的方法,确偏显示找不到

    导入包 相当于执行了这个包下面的__init__.py





  • 相关阅读:
    (转)ios限制控制器旋转
    iOS NSMutableURLRequest 上传图片
    iOS中UIWebView使用JS交互
    Cocoa pods的安装和使用
    NSThread/NSOperation/GCD 三种多线程技术
    动画效果-基础动画设置(改变大小,改变透明度,翻转,旋转,复原)
    动画效果一风火轮加载效果/动态图展示
    Swift代理和传值
    Swift基础(类,结构体,函数)
    IOS面试问题总结
  • 原文地址:https://www.cnblogs.com/duanpengpeng/p/9414908.html
Copyright © 2011-2022 走看看