• python学习之路(十二)


    这节主要介绍一下import!很实用的调用模块的功能。


    导入模块 是导入真实的代码

    而导入包 是导入包下面的 __init__() 文件
    这两个是不一样的
     

    先说模块定义

    模块 它就是一个 py 文件
    它就是负责从逻辑上 组织代码的
    代码里面 它可以有变量 有函数 有类 有逻辑
    模块 它不是这些东西的简单堆砌 而是要实现功能
     
    创建模块 就是 new 一个 python file
    定义一个模块:
    第二阶段 20 python 模块详解及 import 本质(上) - Lucia - Lucias WorkShop
     
    在另一个文件中 要使用这个模块 所以要这样来调用:
    第二阶段 20 python 模块详解及 import 本质(上) - Lucia - Lucias WorkShop
    模块名 点 变量名
    模块名 点 方法名
    import module_alex
    print(module_alex.name)
    module_alex.say_hello()
    像是现在这种写法 它仅仅导入一个模块
    那要如果要导入很多模块 怎么办? —— 逗号分隔
     
    为防止冲突 还有一种别名导入的方式:
    import module_alex
    from module_alex import logger as logger_from_alex


    def logger():
    print('i am logger in current file')

    logger()
    logger_from_alex()
    下面就讲到 import 的本质 
    字面就是导入一个模块的意思 模块说白了就是一个文件 一堆代码
    比方说 import module_alex 
    它的本质 就是把 module_alex 这个文件解释了一遍
    或者说 把 module_alex 这个文件运行了一遍
    然后把它运行的结果 赋值给 module_alex 这个变量
     
    那 module_alex 这一堆代码当中 它定义了一些变量
    要如果想调用这个变量 就 module_alex.name 这样调用
    要如果想调用这个方法 就 module_alex.logger 这样调用
    import module_alex

    print(module_alex.name)
     
    还可以 from module_alex import name 这种写法
    这样子 相当于仅仅解释了 name
    如果是这样导入 调用的时候就不用写 module_alex 了
    就直接写 name 就可以导入了
    from module_alex import name

    print(name)
    补充一个点 就是写目录结构的时候 右键新建
    建的是 package 建完之后发现它自动带上一个文件
    第二阶段 20 python 模块详解及 import 本质(上) - Lucia - Lucias WorkShop
     
    那其实 package 就是包 而包的意思就是文件夹 或者目录
    它就是以这个 __init__.py 文件为特征的
     
    如果是模块 它就是文件 在里面写代码就 OK 了
    如果是包 它就是文件夹 在里面写模块就 OK 了
    包 就是从逻辑上组织模块的 
     
    导入模块 就是 import 模块名
    或者 from 模块名 import 变量名方法名
    那导入包 也是 import 包名就 OK 了
     
    导入包 它实际上 是在解释包下面的 __init__() 文件
     
    无论是导入模块 还是导入包 都是在同级路径下才可以导入
    那如果不在同一个目录下 怎么导入呢?
    统计目录下没有 就不能导入
     
    因为它导入的时候 实际上是去找这个路径了
    按什么找呢 按 sys.path 去找
    import sys
    print(sys.path)
    一个一个找一遍 都找不到 就抛异常
    第二阶段 20 python 模块详解及 import 本质(上) - Lucia - Lucias WorkShop
     
    那为了能找到 module_alex 就得先把它的父目录 加入 sys.path 里面
    print(os.path.abspath(__file__))
    结果:

    /Users/lucia_gaga/PycharmProjects/practice_lucia/bb/path.py

    获取上级:
    print(os.path.dirname(os.path.abspath(__file__)))
    结果:

    /Users/lucia_gaga/PycharmProjects/practice_lucia/bb

    就这样一层一层往上找
     
     
     
     
  • 相关阅读:
    hibernateValidator 升级
    java异常
    reids过期键三种删除策略
    hashmap源码探究
    http知识梳理1
    GregorianCalendar类的使用
    计算机网络笔记
    List的toArray方法
    实习周记一
    vue指令详解
  • 原文地址:https://www.cnblogs.com/lovelyming/p/7266227.html
Copyright © 2020-2023  润新知