包引用

python有丰富的包,pypi网站是python包的搜索平台。

包package:

组织各个py脚本文件和其他配置、静态文件等。项目由包组成的,确定项目组织的层次结构。说白了就是写好的代码,封装。

内置包

除了pypi网站,python解释器已经内置了一些常用的包,可以安装目录/Lib sitepackages目录下看到。

第三方包

程序员上传到pypi网站上的包,直接拿来用,而不需要从头开发,大大提高了开发效率。

包的好处:组织项目结构更加清晰;命名空间隔离,不同包下可以有同名文件。

小知识:
__init__.py:包类似windows资源管理器上的文件夹。只是这个文件夹下有一个(双下划綫)__init__.py的文件

(双下划綫)__init__.py作用:
1.说明是一个包而不是一个文件夹。__init__.py 可以为空。
2.控制包的具体行为,功能比文件夹更强,相当于升级版的文件夹。
3.项目的初始化逻辑。例如:声明一个类的实例;初始化数据库连接;初始化项目运行环境。

一个包下必须要有__init__.py文件,__init__.py文件可以为空。
引用语法(import引入)

执行import语句时,python解释器会自动在包安装目录下查找同名包。
1.import 包名:引用包中的所有py文件。如:import L8包.package.pack1 ,表示:在L8包文件夹下package子文件夹下的pack1.py文件

2.from 包名.py脚本 import 包中的类,包中的方法,包中的变量:用什么引什么
简写 [ from 包名.py脚本 import *] 如:from L8包.package.pack1.py1 import *,表示:在L8包文件夹下package子文件夹下的pack1.py文件

3.from包.子包 import 子包里的py脚本。如:from L8包.package.pack1 import py1 ,表示:在L8包文件夹下package子文件夹下的pack1.py文件

包的查找路径:

import包的时候,python解释器会首先从项目根目录下开始查找符合的包名。如果未找到再去 解释器安装目录/Lib、 安装目录/Lib/sitepackages 目录下查找内置包或第三方包。


小知识:
解析 if __name__ == '__main__': pass

__name__ : 内置的特殊值,返回文件名。
1. 当.py自己执行时, __name__ 的值为 '__main__', 表示主函数、入口文件。
2. 当.py被另一个脚本文件import时,__name__ 的值为
包层级结构.文件名 。

场景:.py文件中有写好的类、函数、测试代码。当这个.py文件被引用时,我们希望引用写好的业务逻辑,但不希望执行测试代码。可以把跟这个.py文件相关但跟项目无关的测试代码放到 if __name__ == '__main__': 下面。

包的嵌套

包的嵌套:项目代码组织中,无法直接引用文件夹下的内容。必须通过包来组织。
大型项目中包的嵌套非常普遍,里层的叫子包,如果你想引用文件夹里层的内容,确保各个层级的文件夹都是包。包其实就是指文件夹。

项目根目录顶级包.子包.子子包。如: import L8包.package.pack1(代表层级关系)

引用包时的绝对路径:

绝对路径的好处是准确,缺点写起来麻烦。

引用包时的相对路径问题:

1.引用同级目录
点 . 表示同级目录下的文件或所在的包
2.引用父级目录下的内容
两个 … 表示父级‘目录下’。
(方便理解,点后面的斜杠省略了,后面的包用.来表示层级)

对路径迷惑解决方案:
  1. 把所有文件夹都变成包
  2. import from import
  3. 绝对 从项目根目录下的顶级包开引用
  4. 相对 从 . … 开始试
  5. 看pycharm提示
包名命名方法:

中间不要有空格、逗号、句号等特殊符号。不要使用内置关键字,比如print、def、class。不要使用第三方包本身的名字。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值