Python引用与目录结构

哎。差点找不到之前写的这篇笔记。

Python引用与目录结构

模块的概念

模块即单个.py文件。
模块名即文件名。

引用模块:

  1. 只在第一次引用时执行、且执行一次。

  2. 引用及使用方法:

    # 仅引模块
    import module
    m1.fun() ##使用其内变量/函数,必须使用"模块名."。否则报错
    
    # 引模块的特定变量/函数
    from module import fun
    fun() ##不必使用"模块名."

模块也是对象,具有一个内置属性__name__。该属性有两种取值:模块名__main__

  • 举例说明取值问题:当在A文件中引入B模块,A文件的__name__取值为__main__,B模块的__name__取值为模块名

  • __name__的使用场景:在import模块时,默认情况下,模块的所有语句都会被执行一次。如果希望模块中有某些语句,在import时避免执行,可以:

    if __name__ == 'main':
        ## 这里的语句将在import时避免执行
        ## 因为import时,条件为假

包的概念

包即一个文件夹。
包含了__init__.py和一系列.py文件。包名即文件夹名。

__init__.py是为了避免将文件夹名当作普通的字符串,其内容可以为空,一般用来进行包的某些初始化工作或者设置__all__,用以暴露该包的 API。

引用时搜索模块的顺序

  1. 当前文件所在目录
  2. 环境变量PYTHONPATH(包含python带的模块、自己安装的模块),可以通过bash或sys.path修改

python工程常用目录结构

  • 方式一

    -- src
        |-- mod1.py(被引用的模块)
        `-- test1.py(主程序)

    test1.py中直接import mod1即可。

  • 方式二:

    -- src
        |-- mod1.py(被引用的模块1)
        |-- pkg
        | |-- __init__.py(必须有)
        |   `-- mod2.py(被引用的模块2)
        `-- test1.py(主程序)

    test1.pyimport mod1

    test1.pyfrom pkg import mod2

  • 方式三:

    -- src
        |-- mod1.py
        |-- pkg
        | |-- __init__.py(必须有)
        |   `-- mod2.py
        |-- sub
        |   `-- test2.py
        `-- test1.py

    test1.pyimport mod1

    test1.pyfrom pkg import mod2

    test2.py

    import sys
    sys.path.append("..") ## 临时加入父目录
    ## 然后就可以正常地:
    import mod1
    from pkg import mod2
    

    test1.pyfrom pkg import mod2

参考资料

转载于:https://www.cnblogs.com/hesse-summer/p/11151741.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值