python基础 12 包(一)

一 包

在我们的项目中,可能会有太多的模块,但是我们不能把所有的模块这样放在这里,这样项目会乱七八糟。
我们可以将所有相同类型的模块放在一个文件夹中,这个文件夹就叫做包
包就是文件夹,他用于存放文件也就是模块。包中也可以存放包。
包就是包含了一个__init__.py文件的文件夹
包只是模块的一种形式而已,包即模块
在这里插入图片描述

二 包的导入

  1. 关于包相关的导入语句也分为import和from…import…两种,但是无论哪种,无论在什么位置,再导入时都必须遵循一个原则:凡是在导入时带点的,如demo01.demo02.demo03.,但是都必须遵守这个原则。
  2. 对于导入后,在使用时就没有这样的限制了。点的左边可以是包,模块,函数,类(他们都可以用点的方式调整自己的属性)
  3. 对比import demo 和 form demo import name 的应用场景:如果我们想直接使用name 那必须使用后者
    1 import 导入
import python1224.demo01.demo01_test01
python1224.demo01.demo01_test01.test01()

在这里插入图片描述
2 from…import…导入

1.from 包名.模块名… import 变量名
使用方式: 例如 变量名() 或者print(变量名)
在这里插入图片描述
2.from 包名.模块名… import 变量名1,变量名2,…
使用方式: 例如 变量名1() 或者print(变量名2)
3.from 包名 import 模块名
使用方式:模块名.变量名() 或者 print(模块名.变量名)
4.from 包名 import 模块名,模块名1…
使用方式:模块名.变量名() 或者 print(模块名1.变量名)
#导入多个变量

from python1224.demo01.demo01_test01 import test01,test001
test01()
test001()

from 包名 import 模块名

from python1224.demo01 import demo01_test01
demo01_test01.test01()

导入多个模块

from python1224.demo01 import demo01_test01,demo02_test01
demo01_test01.test01()
demo02_test01.test02()

注意: 需要注意的是from后import导入的模块,必须是明确的一个不能带点,否则会有语法错误,如:from a import b.c 语法错误
3 init.py 文件
不管是哪种方试,只要是第一次导入包或者是包的任何其他部分,都会依次执行包下的__init__.py 文件(我们可以在每个包的文件内都打印一行内容来验证一下),这个文件可以为空,但是可也以存放一些初始化包的代码。

4 form包 import * 导入所有的模块
此处是想从包one中导入所有,实际上该语句只会导入包one下__init__.py文件中定义的名字,我们可以在这个文件中定义__all___:
在这里插入图片描述

不能导入 demo02包 中的所有模块,只能导入__init__中的内容init() 就可以

三、包的相对和绝对导入

我们的最顶级包pathon1224是写给别人用的,然后在pathon1224包内部也会有彼此之间互相导入的需求,这时候就有绝对导入和相对导入两种方式:
绝对导入:以pathon1224作为起始
相对导入:用.或者…的方式最为起始(只能在一个包中使用,不能用于不同目录内)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相对路径运行注意事项
在没有明确指定包结构的情况下,Python 是根据 name 来决定一个模块在包中的结构的,如果是 main 则它本身是顶层模块,没有包结构,如果是base.demo01.demo02 结构,那么顶层模块是 base。
如果是相对导入,一个模块必须有包结构且只能导入它的顶层模块内部的模块
如果一个模块被直接运行,则它自己为顶层模块,不存在层次结构,所以找不到其他的相对路径。

四、import 导入自定义包的子模块

特别需要注意的是:可以用import导入内置或者第三方模块(已经在sys.path中)但是要绝对避免使用import来导入自定义包的子模块(没有在sys.path中)应该使用from…import…的绝对导入或者相对导入

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
RIAEasy - A lightweight, modular, mobile-ready, data-driven for single-page-application.模块化、轻量的富客户/单页应用框架。 RIAEasy是一个单页 Web 应用 (single-page application 简称为 SPA)设计平台。旨在实现RIA/SPA应用的快速、高质量开发,实现模块化开发,实现移动、桌面系统统一的跨浏览器开发。可以使用RIAStudio在线可视化设计器。 RIAEasy基于webComponent概念设计,括一整套基础控件,具有良好的运行期动态适应性;实现了完全的前端渲染,数据驱动,前后分离,无需后端服务器生成页面;实现了主题(theme)分离,可以自由换肤;同时支持桌面和移动端。目前已经基本可以替代EasyUI、ExtJS(Sencha),特别适合于webMIS和webApp应用。 RIAEasy基于dojo构建(dojo 1.10),支持HTML5、CSS3;采用AMD(异步模块定义)加载,封装并扩展了dojo、dijit和部分dojox模块,封装并扩展了dgrid、gridx和Eclipse orion 7的在线编辑等控件。 RIAEasy是面向跨平台的单页应用设计平台,与传统的网页设计模式差别较大,反而更接近传统的C/S桌面应用设计模式。尽管RIAEasy也可以用来快速设计传统的网页,但这显然不是其真正的优势。正如RIAEasy的名称已经表明的,这是一个用来做RIA的工具。如果您做过C/S桌面应用,用过Delphi、C Builder、VisualStudio这些工具,那么就更容易理解RIAEasy。 标签:RIAEasy

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值