python3 package management 包管理 实例
包是一种组织管理代码的方式,包里面存放的是模块
用于将模块包含在一起的文件夹就是包
包内包含__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 包管理 实例的更多相关文章
- Python学习笔记(十二)—Python3中pip包管理工具的安装【转】
本文转载自:https://blog.csdn.net/sinat_14849739/article/details/79101529 版权声明:本文为博主原创文章,未经博主允许不得转载. https ...
- Linux包管理工具分析
转自:http://blog.csdn.net/carolzhang8406/article/details/14198219 在正式进入讨论之前,先贴几条非常有用的link: linux 发行版比较 ...
- linux--软件包管理工具
linux平台软件包管理: RPM/DPKG 两大阵营简介 在 GNU/Linux( 以下简称 Linux) 操作系统中,RPM 和 DPKG 为最常见的两类软件包管理工具,他们分别应用于基于 RPM ...
- TFS:需要包管理许可证才能进一步操作You need a Package Management license to go further
问题: 为什么团队成员没有查看包管理服务的权限?如下图: 答案: TFS系统的访问级别设置,决定在默认配置中用户是否有包管理的访问权限.默认配置中,只有"VS Enterprise" ...
- python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑
python3.4学习笔记(八) Python第三方库安装与使用,包管理工具解惑 许多人在安装Python第三方库的时候, 经常会为一个问题困扰:到底应该下载什么格式的文件?当我们点开下载页时, 一般 ...
- 永久解决Sublime包管理package control 打开install package报错 There are no packages available for installation
很多用户在使用sumblime安装插件的时候,打开package control的install package会出现报错:There are no packages available for in ...
- 【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 ...
- 你需要知道的包管理器(Package Manager)
最近我花了一点时间关注了在不同系统之中所用到的包管理器(Package Manager) .最开始的时候,我是在使用Linux操作系统时,对这种工具以及它背后的想法深深迷恋住了:这真是自由的软件世界. ...
- [Visual Studio] 记一次排错:打不开 Nuget 包管理器里的安装package页面,无法 安装 / 恢复 包
出差一阵子PC很久没用了, 回来在用Visual Studio (2017) 的时候, 工程里无法安装Package了 >_< --- 也不知道电脑做了什么?--- Nuget包管 ...
随机推荐
- Python3.x 安装Scrapy框架
先判断pip是否已经安装 pip --version 确认已经安装后,使用pip安装库 pip3 install PackageName eg: pip3 install Scrapy 报错解决方案 ...
- 【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 ...
- SAP Cloud for Customer销售订单External Note的建模细节
SAP Cloud for Customer的销售订单创建页面里,我们可以给一个订单维护External Note,当这个订单同步到S/4HANA生成对应的生产订单后,这个note可以作为备注提示生产 ...
- 第二次作业——MathExamLv2
MathExamLv2--林志松 211406285 李明康 211606314 一.预估与实际 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际 ...
- ListView实现分页加载(三)实现分页加载
在上一篇中,我们实现了底部布局(即带上了进度条).没有读过的朋友可以点击下面的链接: http://www.cnblogs.com/fuly550871915/p/4866966.html 但是进度条 ...
- 文件是数据(字节)流的抽象-为什么C++中会把文件操作抽象为fstream?
这不过是返祖罢了.正确的问题是为什么会把数据流抽象成文件. 设备-字节流-文件. 一切皆为文件,所有不同种类的类型都被抽象成文件(比如:块设备,socket套接字,pipe队列). 文件抽象为数据流一 ...
- springMVC文件上传大小超过限制的问题
[转自]https://my.oschina.net/ironwill/blog/646762 springMVC是一个非常方便的web层框架,我们使用它的文件上传也非常的方便. 我们通过下面的配置来 ...
- BZOJ2194:快速傅立叶之二(FFT)
Description 请计算C[k]=sigma(a[i]*b[i-k]) 其中 k < = i < n ,并且有 n < = 10 ^ 5. a,b中的元素均为小于等于100的非 ...
- geos学习笔记:安装和使用
1.首先在https://trac.osgeo.org/geos下载geos-3.6.2.tar.bz2 解压后 cd geos- ./configue //或选择安装的目录./configure - ...
- Vue通过input筛选数据
<div id="app"> <input v-model='search' /> <ul> <li v-for="item i ...