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





  • 相关阅读:
    铁锨,挖土机,
    viewwillapear ,viewdidload,
    调用方法,for 选好调用方法,要避免哦
    原来多行就这么容易被我搞定了,自动的哈,
    睡觉会,
    小程序运行时相关信息
    小程序框架之视图层 View~获取界面节点信息
    小程序框架之视图层 View~基础组件
    微信小程序使用本地图片在真机不显示的问题
    小程序生命周期(onLaunch、onShow、onHide、onReady、onLoad、onUnloa)
  • 原文地址:https://www.cnblogs.com/duanpengpeng/p/9414908.html
Copyright © 2011-2022 走看看