• day16


    eval() 执行字符串,通常用来完成类型转换

    模块

    '''
    模块:使用python创建的.py文件
    把模块集合到一起组成的文件夹(文件夹下有一个__init__.py文件,该文件夹称之为包)

    模块的导入方式:import | from import
    绝对导入:通过绝对路径导入,一定只能绝对导入
    可以其别名: import 模块名 as 别名
    注:import * 默认导入的是 __all__, __all__用来管理模块中能被被*导入的变量,__all__为一个列表,系统默认不会将_开头的变量放入列表
              1.将被导入的模块编译形成对应的pyc文件
    2.进入模块,从上执行执行模块中的代码,将产生的所有名字存放在该模块文件的全局名称空间中
    3.在使用模块的文件中,产生一个与模块名(模块文件名)同名的名字,指向模块的全局名称空间
    再次导入模块,不会执行前两步,只会在导入模块的文件中产生一个名字,指向第一次导入时内存中产生的全局名称空间

    环境变量: sys.path
    环境变量是一个存放绝对路径的列表

    模块:内置模块,自定义模块(系统,自己定义,第三方)

    加载模块的顺序:根据环境变量list中的顺序进行加载
    list中第一位一定是当前执行文件的所在路径
    内存 > 内置模块 > 自定义 自定义的模块根据环境变量list中的顺序进行加载


    链式导入: t1导入m1,m1导入m2,m2导入m3

    执行流程:右键执行t1,在t1导入m1模块的地方直接进入m1,去执行m1,同理在m1执行过程中遇到导入m2,会马上进入m2,去执行m2,一直到m3,m3执行完毕,会回到 m2中导入m3的语句,接着往下执行m2,m2执行完毕回到m1,以此类推返回到t1

    在整个执行流程中,遇到任何模块的二次导入,都是直接引用内存中的名称空间,不会再次进入模块

    循环导入:名字没有产生就使用名字
    解决循环导入:先产生名字,在导入模块
              将会产生循环导入的模块,导入语法延后 - 延后导入


    问题
    m1.py
    import m2
    print(m2.y)
    x = 666

    m2.py
    import m1
    print(m2.x)
    y = 888



    解决
    m1.py
    x = 666
    import m2
    print(m2.y)


    m2.py
    y = 888
    import m1
    print(m2.x)



    '''
  • 相关阅读:
    彻底弄懂最短路径问题[转]
    activiti任务TASK
    linux查看磁盘空间
    Introduction to the POM
    【转】10 个迅速提升你 Git 水平的提示
    macbook安装mysql
    java并发编程之美-笔记
    springboot2精髓读书笔记
    java多线程
    实战JAVA虚拟机笔记
  • 原文地址:https://www.cnblogs.com/zhuqihui/p/10816591.html
Copyright © 2020-2023  润新知