Pathon_包

模块

—> module and package

包 : 包是用过使用 '.模块名’来组织Python模块名称空间的防是。

—> 具体,包就是一个包含 __init__.py文件的文件夹

  • 目的:用文件夹将文件/模块组织起来。

注意:

python3,即使包中没有__init__.py也可以使用;

python2,若没有__init__.py 报错

创建包的目的不是为了运行,而是为了被导入使用。

包的本质依然还是模块。

  • 使用时, import导入, 导入带点的, 点的最左边一定是包名。
  • import导入文件时,产生名称空间的名字源于文件,import

包,名称空间同样源于文件(包),__init__.py,导入包的本只导入它。

新建

➜  day8 tree
.
├── api
│   ├── __init__.py
│   ├── students.py
│   └── versions.py
├── cmd
│   ├── __init__.py
│   └── manage.py
├── db
│   ├── __init__.py
│   └── models.py
└── __init__.py
└── testpy
在新建 day8文件夹  同级 新建test.py
在day8中新建 各文件如 树

最外层 __init__.py 调用各文件夹
from .import cmd
from .import db
from . import api

再各级__init__.py中调用同级的.py模块
from .import students     #api 中
from .import versions

from .import manage    #cmd中

from . import models  #db中

在各个模块中 创建函数
如 student.py
def get():
    print('from students.py')
    
在test中调用get 方法如下 
import day8      #导入day8模块
day8.api.students.get()

from … import… 时, import后导入的模块,必须时一个不包含点(.) 否则报错

在api 的__init__.py中输入

from .import students
from .import versions

a = 6688
def func():
    print('api---> __init__.py')

__all__ =['students','versions','a', 'func']

特殊变量__all__ ,在调用 api时 可调用__all__中包含的所有元素

test中 以 import * 调用api中所有模块

from day8.api import *
students.get()
versions.create_resource(1)
func()
print(a)

from students.py
from versions.py.py 1
api---> __init__.py
6688

在day/api/versions.py中导入day8/cmd/manage.py

versions中写入

from day8.cmd import manage

这样我们在test中调用 version就可以继续调用附模块

from day8.api import versions
versions.manage.main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值