python 包

Posted on 2019-12-19 20:42  S-skill  阅读(486)  评论(0编辑  收藏  举报

一. 包
1. 什么是包?
集合了一组py文件,提供了一组复杂功能的
2. 为什么要有包?
当提供的功能比较复杂,一个py文件写不下的时候
3. 包中都有什么?
至少拥有一个__init__.py
4. 直接导入模块
1. import 包.包.模块
包.包.模块.变量
2. from 包.包 import 模块
模块.变量
from 包.包 import 模块
模块.变量
5. 导入包,读框架源码的时候
如果希望导入包之后,模块能够正常的使用,那么需要自己去完成init文件的开发
包中模块的,绝对导入
包中模块的,相对导入
使用了相对导入的模块只能被当作模块执行
不能被当做脚本执行

  6. 直接导入包
    相当于执行了__init__.py
    并不会帮你把这个包下面的其他包以及py文件自动的导入到内存
    在__init__.py文件中做一些导入设置, 才能保证导入包的时候能够使用这个包中的模


文件夹的流程图:

 

demo1文件夹里面的 __init__.py文件里的内容;

# 绝对路径可以有两种:
from demo1.glance import api        # 绝对路径(1) 绝对导入
import demo1.glance         # 绝对路径(2)

# 用的from . import (变量)..方法: # 相对导入
from . import glance

print('执行demo1')

  

glance文件夹里面的 __init__.py文件里的内容;

# 绝对路径可以有两种:
from demo1.glance.api import policy # 绝对路径(1) # 绝对导入
import demo1.glance.api         # 绝对路径(2)


# 用的from . import (变量)..方法: # 相对导入
from . import api

print('执行glance')

 

api文件夹里面的 __init__.py文件里的内容;

import demo1.glance.api.policy  # 绝对路径(2) # 绝对导入


# 用的from . import (变量)..方法: # 相对导入
from . import policy

print('执行api')

api文件夹里面的policy.py文件里的内容;

def func():
    print('执行policy和func')

  

 

 

1. 使用包的用法:

# 首先导入包,相当于执行了这个包下面的__init__.py
import demo1.glance.api.policy as policy    # import 包包.. as (模块)变量
policy.func()   # 模块名(变量)调用里面的变量


from demo1.glance.api import policy     # from 包包... import 模块名(变量)
policy.func()
from demo1.glance.api.policy import func     # from 包包... import 模块名(变量)
func()

import demo1.glance.api.policy      # import 包包...(直接锁定)
demo1.glance.api.policy.func()  # 还执行了__init__里面的文件

 

 

2. 使用包的用绝对路径和相对路径的两种方法:

# 方法一
import demo1      #  绝对路径    # from 包...  import 变量
# 通过在init文件里来完成一些模块的导入实现变量的调用,要用到上面的方法的调用
demo1.glance.api.policy.func()
# 通过包里面的__init__文件里导入模块来实现的变量的调用


# 方法二
# 用这个方法: from . import 变量        # 相对路径
from demo1 import glance
glance.api.policy.func()     
# from .(这个点表示当前文件) import ..(这里是执行下一个包或变量)
# 可以用绝对路径的模块,也可用这个方法 from . import 变量(包) .......

 




















Copyright © 2024 S-skill
Powered by .NET 8.0 on Kubernetes