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

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

包内包含__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. Python3.x 安装Scrapy框架

    先判断pip是否已经安装 pip --version 确认已经安装后,使用pip安装库 pip3 install PackageName eg: pip3 install Scrapy 报错解决方案 ...

  2. 【Leetcode】【Medium】Find Minimum in Rotated Sorted Array

    Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 migh ...

  3. SAP Cloud for Customer销售订单External Note的建模细节

    SAP Cloud for Customer的销售订单创建页面里,我们可以给一个订单维护External Note,当这个订单同步到S/4HANA生成对应的生产订单后,这个note可以作为备注提示生产 ...

  4. 第二次作业——MathExamLv2

    MathExamLv2--林志松 211406285 李明康 211606314 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际 ...

  5. ListView实现分页加载(三)实现分页加载

    在上一篇中,我们实现了底部布局(即带上了进度条).没有读过的朋友可以点击下面的链接: http://www.cnblogs.com/fuly550871915/p/4866966.html 但是进度条 ...

  6. 文件是数据(字节)流的抽象-为什么C++中会把文件操作抽象为fstream?

    这不过是返祖罢了.正确的问题是为什么会把数据流抽象成文件. 设备-字节流-文件. 一切皆为文件,所有不同种类的类型都被抽象成文件(比如:块设备,socket套接字,pipe队列). 文件抽象为数据流一 ...

  7. springMVC文件上传大小超过限制的问题

    [转自]https://my.oschina.net/ironwill/blog/646762 springMVC是一个非常方便的web层框架,我们使用它的文件上传也非常的方便. 我们通过下面的配置来 ...

  8. BZOJ2194:快速傅立叶之二(FFT)

    Description 请计算C[k]=sigma(a[i]*b[i-k]) 其中 k < = i < n ,并且有 n < = 10 ^ 5. a,b中的元素均为小于等于100的非 ...

  9. geos学习笔记:安装和使用

    1.首先在https://trac.osgeo.org/geos下载geos-3.6.2.tar.bz2 解压后 cd geos- ./configue //或选择安装的目录./configure - ...

  10. Vue通过input筛选数据

    <div id="app"> <input v-model='search' /> <ul> <li v-for="item i ...