包是一种组织管理代码的方式,包里面存放的是模块

用于将模块包含在一起的文件夹就是包

包内包含__init__.py标志性文件

定义一个学生类,一个sayhello函数,一个打印语句

# p01.py
class Student(): def __init__(self, name="NoName", age=18):
self.name = name
self.age = age def say(self):
print("My name is {}".format(self.name)) def sayhello():
print("Hi,你好") print("我是模块p01")

一、定义一个Student类,因p01已定义好,所以直接调用

import p01

a = p01.Student("hh",19)

a.say()

p01.sayhello()
#此段代码会先执行p01中的print,因为导入模块,就相当于把p01整段代码都导入进来,执行的时候会全部执行一遍

二、导入名字以数字开头的包

#01.py,以数字开头的模块
class Student(): def __init__(self, name="NoName", age=18):
self.name = name
self.age = age def say(self):
print("My name is {}".format(self.name)) def sayhello():
print("Hi,你好") print("我是模块p01")
# import 01
# 基于python变量的命名规则,不能以数字开头
# 借助于importlib包可以实现导入以数字开头的模块名称
import importlib A = importlib.import_module("")
a = A.Student()
a.say()

三、导入p01模块,并重新命名为 p

import p01 as p

a = p.Student("hh",18)
a.say()

四、只想用Studen类,别的不想要

from p01 import Student
#有选择性的导入
#使用时候不需要模块名称的前缀 a = Student("hh", 20)
a.say()

五、针对四导入Studen类,为何还会执行print

# p01.py,修改p01代码
class Student(): def __init__(self, name="NoName", age=18):
self.name = name
self.age = age def say(self):
print("My name is {}".format(self.name)) def sayhello():
print("Hi,你好") # 可以有效避免代码被导入的时候被动执行的问题
# 建议所有程序的入口都以此代码为入口
if __name__ == "__main__":
print("我是模块p01")

六、导入包下的所有

# 导入p01模块下的所有
from p01 import *
# 不需要前缀有个坏处,名称太多容易引起混乱 sayhello() a = Student("hh", 19)
a.say()

七、查看所有的包的路径 及 添加路径

import sys

print(type(sys.path))
# 获取路径列表
# 查看包的路径,以方便使用时候的调用
print(sys.path)
for i in sys.path:
print(i) # 添加路径
# sys.path.append(dir)

以下内容举例描述不便,文字描述一下

包内模块调用与模块同级的包用法

语法:import package_name.module

   导入包中某一个具体的模块

使用方法:

   package_name.module.func_name

   package_name.module.class.func()

   package_name.module.class.var

   跟上述用法都差不多

语法 :from package import module1,module2, ......

   此种导入方法不执行 '__init__'的内容

使用方法:

   from package import module

   module.dunc()

语法:from package import *

   导入当前包 '__init__.py' 文件中的所有函数

使用方法:

   func_name()

   class_name.func_name()

   class_name.var

语法: from package.module import *

   导入包中指定模块的所有内容

使用方法:

   func_name()

   class_name.func_name()

经常使用其他路径下的包,可以在当前包中直接导入

import 完整包或者模块的路径

'__all__'的用法,具体百度了解下

在使用from package import * 的时候, *可以导入的内容

'__init__.py' 中如果文件为空, 或者 没有 '__all__',那么可以把 '__init__.py' 中的内容导入进去

'__init__.py' 如果设置了  '__all__' 的值 ,那么按照  '__all__' 指定的子包或者 模块进行导入

如何则不会载入 '__init__.py' 中的全部内容

'__all__' = ['module', 'module1', 'module2', ......]

python3 package management 包管理 实例的更多相关文章

  1. Python学习笔记(十二)—Python3中pip包管理工具的安装【转】

    本文转载自:https://blog.csdn.net/sinat_14849739/article/details/79101529 版权声明:本文为博主原创文章,未经博主允许不得转载. https ...

  2. Linux包管理工具分析

    转自:http://blog.csdn.net/carolzhang8406/article/details/14198219 在正式进入讨论之前,先贴几条非常有用的link: linux 发行版比较 ...

  3. linux--软件包管理工具

    linux平台软件包管理: RPM/DPKG 两大阵营简介 在 GNU/Linux( 以下简称 Linux) 操作系统中,RPM 和 DPKG 为最常见的两类软件包管理工具,他们分别应用于基于 RPM ...

  4. TFS:需要包管理许可证才能进一步操作You need a Package Management license to go further

    问题: 为什么团队成员没有查看包管理服务的权限?如下图: 答案: TFS系统的访问级别设置,决定在默认配置中用户是否有包管理的访问权限.默认配置中,只有"VS Enterprise" ...

  5. python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑

    python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件?当我们点开下载页时, 一般 ...

  6. 永久解决Sublime包管理package control 打开install package报错 There are no packages available for installation

    很多用户在使用sumblime安装插件的时候,打开package control的install package会出现报错:There are no packages available for in ...

  7. 【Linux】非root安装Python3及其包管理

    1. Python 3.8.1安装 源码安装常规操作: wget -c https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz tar -xv ...

  8. 你需要知道的包管理器(Package Manager)

    最近我花了一点时间关注了在不同系统之中所用到的包管理器(Package Manager) .最开始的时候,我是在使用Linux操作系统时,对这种工具以及它背后的想法深深迷恋住了:这真是自由的软件世界. ...

  9. [Visual Studio] 记一次排错:打不开 Nuget 包管理器里的安装package页面,无法 安装 / 恢复 包

    出差一阵子PC很久没用了, 回来在用Visual Studio (2017) 的时候, 工程里无法安装Package了  >_<    --- 也不知道电脑做了什么?--- Nuget包管 ...

随机推荐

  1. 使用WdatePicker日期组件时,选择日期后,执行某个方法

    WdatePicker({onpicked:function(){alert(123);},dateFmt:'yyyy年MM月dd日',maxDate:'%y-%M-%d'}) 1.onpicked: ...

  2. MVC5中Model设置属性注解

    ASP.NET MVC5中Model层开发,使用的数据注解有三个作用: 数据映射(把Model层的类用EntityFramework映射成对应的表) 数据验证(在服务器端和客户端验证数据的有效性) 数 ...

  3. ZT-Android深入浅出之Binder机 制

    转贴 不是原创! Android深入浅出之Binder机 制 一说明 Android系统最常见也是初学者最难搞明白的就是Binder了,很多很多的Service就是通过Binder机制来和客户端通讯交 ...

  4. SAP S/4HANA销售订单创建时,会自动触发生产订单的创建

    这个自动触发的过程是怎么实现的? 使用下面的代码创建一个销售订单: DATA: ls_header TYPE bapisdhd1, ls_headerx TYPE bapisdhd1x, lt_bap ...

  5. mongodb分片集群(无副本集)搭建

    数据分片节点#192.168.114.26#mongo.cnfport=2001dbpath=/data/mongodb/datalogpath=/data/mongodb/log/mongodb.l ...

  6. AngularJs学习笔记--Modules

    原版地址:http://code.angularjs.org/1.0.2/docs/guide/module 一.什么是Module? 很多应用都有一个用于初始化.加载(wires是这个意思吗?)和启 ...

  7. GPU 与CPU的作用协调,工作流程、GPU整合到CPU得好处

    http://blog.csdn.net/maopig/article/details/6803141 在不少人的心目中,显卡最大的用途可能就只有两点——玩游戏.看电影,除此之外,GPU并没有其他的作 ...

  8. The transaction log for database 'XXX' is full due to 'ACTIVE_TRANSACTION'.

    Msg 9002, Level 17, State 4, Line 4The transaction log for database 'Test' is full due to 'ACTIVE_TR ...

  9. php仿照asp实现application缓存的代码分享

    php 怎么没有asp 那样的application缓存呢?最近我找了很多,都只有自己写,下面我分享一段代码 class php_cache{ //相对或者绝对目录,末尾不要加 '/' var $ca ...

  10. 【bootstrap】插件

    1.bootstrap.js 和 bootstrap.min.js 都包含了所有的插件. 2.命名空间:即域:域内成员的有效范围.超出范围就是无效. 3.通过 data 属性 API 就能使用所有的 ...