zoukankan      html  css  js  c++  java
  • 0426 模块与包

    复习:
    os模块
    和操作系统交互
    工作目录 文件夹 文件 操作系统命令 路径相关的
    2.模块
    最本质的区别 import会创建一个专属于模块的名字,
    所有导入模块中的都会在这个空间中
    import
    from import
    as 起别名
     * 和 __all__
     
    计算文件夹中所有文件的大小,递归
    import os
    def get_size(dir):
    sum_size = 0
    for item in os.listdir(dir):
    path = os.path.join(dir,item)
    if os.path.isfile(path):
    sum_size += os.path.getsize(path)
    else:
    sum_size += get_size(path)
    return sum_size
    ret = get_size('D:python11')
    print(ret)
     

    import os
    def get_size(path):
    l = [path]
    sum_size = 0
    while l:
    path = l.pop() # l = ['D:python11day2','D:python11day3'...]
    for item in os.listdir(path): #path = 'D:python11'
    path2 = os.path.join(path, item) # path2 = 'D:python11day2'
    if os.path.isfile(path2):
    sum_size += os.path.getsize(path2) # sum = 文件的大小 + 0
    else: # l = ['D:python11day2','D:python11day3'...'D:python11venv1Include']
    l.append(path2)
    return sum_size
    print(get_size('D:python11'))

    import demo1
    模块
    py文件
    脚本
    py文件

    如果一个py文件被导入了 他就是一个模块
    如果这个py文件被直接执行 这个被直接执行的文件就是一个脚本

    模块
    没有具体的调用过程
    但是能对外提供功能

    import login

    login.login()


    import demo1
    python解释器创建的
    当一个文件被当做模块导入的时候,
    如果pyc文件不存,python解释器就会创建,存在不会再次被创建

    pyc文件 编译文件

    python --> 字节码 -->机器码

    编译过程
    从上到下 编译 成字节码 pyc
    从上倒下 解释 执行代码

    为什么要编译
    1.一个文件如果作为模块 一定会经常被导入
    2.每次被导入都要经历一个被编译的过程
    3.包.编译耗费时间
    4.所以模块在被第一次导入的时候被编译存在pyc文件里
    5.之后的导入可以直接呐pyc文件中的字节码,就可以直接执行了

    编译文件 在模块导入的一瞬间 能够提高代码的执行速度
    不能提高程序在具体执行的时候的效率

    在一个py文件中使用了相对路径引入一个模块
    那么这个文件就不能被当成脚本运行了
     
    引入的模块必须满足两个条件
    1.模块名必须满足变量名的规范
    2.被导入的模块所在的位置必须在sys.path所在的搜索路径中
     
    def log_in():
    user = input()
    pwd = input()
    print('三次登陆')

    当login模块被当做脚本执行的时候,能够独立完成登陆功能
    当login模块被当做模块导入的时候,需要等待调用才能完成功能
    当一个模块被当做脚本执行的时候,__name__是一个字符串数据类型的'__main__'
    当一个模块被当做模块导入的时候,__name__是一个字符串数据类型模块名
    if __name__ == '__main__':
    log_in()
    print('__name__ : ',repr(__name__))

    if __name__ == '__main__':


    控制了
    只要当前这个文件直接被执行 就会执行if条件语句内的代码
    否则 就不会执行if条件语句内的代码
    
    
    包就是py模块的集合
    自带__init__.py文件
    py2 包中必须有一个__init__.py文件
    py3
    能不能导入一个包:要看sys.path中的路径下有没有这个包
    从包中导入模块: 把包与包之间的关系写清楚,精确到模块,就一定能导入
    直接导入一个包,并不会导入包下的模块,而是执行这个包下的__init__.py文件
    如果对导入还有更高的要求
    可以对包中的__init__.py文件做定义
    绝对路径导入的方式
    相对路径导入的方式 使用相对路径导入的模块不能作为脚本执行
  • 相关阅读:
    python wxpython
    python tkinter的Label
    python tkinter开始
    cmd退出python
    数据库基本操作
    mysql中的key primary key 和unique key
    python 关于每个项目的解释器
    python3修改文件指定行和4种文件打开方式
    python3 变量格式化转换成字符串
    安装Gitlab到Ubuntu(APT)
  • 原文地址:https://www.cnblogs.com/Mr-Murray/p/8955304.html
Copyright © 2011-2022 走看看