day 15 模块 相对导入
自定义模块:
什么是模块:本质就是.py文件,封装语句的最小单位。
自定义模块:实际上就是定义.py,其中可以包含:变量定义,可执行语句,for循环,函数定义等等,他们统称模块的成员。
模块的运行方式:
脚本方式:直接用解释器执行。或者PyCharm中右键运行。
模块方式:被其他的模块导入。为导入它的模块提供资源(变量,函数定义,类定义等)。
__name__属性的使用:
在脚本方式运行时,__name__是固定的字符串:__main__
在以模块方式被导入时,__name__就是本模块的名字。
在自定义模块中对__name__进行判断,决定是否执行可执行语句:开发阶段,就执行,使用阶段就不执行。
系统导入模块的路径
内存中:如果之前成功导入过某个模块,直接使用已经存在的模块
内置路径中:安装路径下:Lib
PYTHONPATH:import时寻找模块的路径。
sys.path:是一个路径的列表。
如果上面都找不到,就报错。
通过动态修改sys.path的方式将自定义模块添加到sys.path中。
os.path.dirname():获取某个路径的父路径。通常用于获取当前模块的相对路径
import sys
import os
sys.path.append(os.path.dirname(__file__) + '/aa')
导入模块的多种方式:
import xxx:导入一个模块的所有成员
import aaa,bbb:一次性导入多个模块的成员。不推荐这种写法,分开写。
from xxx import a:从某个模块中导入指定的成员。
from xxx import a,b,c:从某个模块中导入多个成员。
from xxx import *:从模块中导入所有成员。
import xxx 和 from xxx import * 的区别
第一种方式在使用其中成员时,必须使用模块名作为前缀。不容易产生命名冲突。
第二种方式在使用其中成员时,不用使用模块名作为前缀,直接使用成员名即可。但是容易产生命名冲突。在后定义的成员生效(把前面的覆盖了。)
怎么解决名称冲突的问题
改用import xxx这种方式导入。
自己避免使用同名
使用别名解决冲突
使用别名:alias
给成员起别名,避免名称冲突。
from my_module import age as a
给模块起别名,目的简化书写。
import my_module as m
from xxx import * 控制成员被导入
默认情况下,所有的成员都会被导入。
__all__是一个列表,用于表示本模块可以被外界使用的成员。元素是成员名的字符串。
注意:
__all__只是对from xxx import *这种导入方式生效。其余的方式都不生效。
相对导入
针对某个项目中的不同模块之间进行导入,称为相对导入。
只有一种格式:
from 相对路径 import xxx
相对路径:包含了点号的一个相对路径。
. 表示的是当前的路径。
..表示的是父路径。
...表示的是父路径的父路径。
# 相对导入同项目下的模块
# from ..z import zz # 容易向外界暴露zz模块
from ..z.zz import *
# 不使用相对导入的方式,导入本项目中的模块
# 通过当前文件的路径找到z的路径
import os
import sys
sys.path.append(os.path.dirname(os.path.dirname(__file__)) + '/z')
from zz import *
常用模块:random 瑞母 随机
此模块提供了和随机数获取相关的方法:
random.random():获取[0.0,1.0)范围内的浮点数
random.randint(a,b):获取[a,b]范围内的一个整数
random.uniform(a,b):获取[a,b)范围内的浮点数
random.shuffle(x):把参数指定的数据中的元素打乱。参数必须是一个可变的数据类型。
random.sample(x,k):从x中随机抽取k个数据,组成一个列表返回。
day 15 模块 相对导入的更多相关文章
- 8.什么是模块,模块的导入,__name__
相关内容: 什么是模块 模块的导入 模块的导入 自模块的导入 同级目录导入 不同级目录导入 目录内导入目录外 目录外导入目录内 __name__ 首发时间:2018-02-04 15:23 修改: 2 ...
- Python全栈工程师(包、模块 的导入)
ParisGabriel 每天坚持手写 一天一篇 决定坚持几年 为了梦想 为了信仰 Python人工智能从入门到精通 $ pip3 install tenso ...
- python模块以及导入出现ImportError: No module named 'xxx'问题
python中,每个py文件被称之为模块,每个具有__init__.py文件的目录被称为包.只要模块或者包所在的目录在sys.path中,就可以使用import 模块或import 包来使用如果你要使 ...
- 浅谈python模块的导入操作
1.什么是模块 在Python中有一个概念叫做模块(module). 所谓模块,就是将代码量较大的程序分割成多个有组织的,彼此独立但双能互相交互的代码片段, 这些自我包含的有组织的代码段就是模块. 2 ...
- TypeScript 中非代码模块的导入
需要理解的是,TypeScript 作为语言,他只处理代码模块.其他类型的文件这种非代码模块的导入,讲道理是通过另外的打包工具来完成的,比如 Web 应用中的图片,样式,JSON 还有 HTML 模板 ...
- day 20 - 1 序列化模块,模块的导入
序列化模块 首先我们来看一个序列:'sdfs45sfsgerg4454287789sfsf&*0' 序列 —— 就是字符串序列化 —— 从数据类型 --> 字符串的过程反序列化 —— 从 ...
- Python模块的导入以及软件开发规范
Python文件的两种用途 1 . 当脚本直接使用,直接当脚本运行调用即可 def func(): print("from func1") func() 2 . 当做模块被导入使用 ...
- Learning-Python【16】:模块的导入使用
一.什么是模块 模块就是一系列功能的集合体,一个模块就是一个包含了Python定义和声明的文件,文件名就是模块名字加上.py的后缀. 模块有三种来源: 1.内置的模块 2.第三方的模块 3.自定义模块 ...
- python之模块的导入
今天在做一个项目的时候卡在模块导入这个点上了.赶紧回头总结一下 一.被导入的文件和工作的脚本在一个目录下 1.导入一个.py文件里的功能或参数(导入模块) 先看一下目录结构: module里有两个功能 ...
随机推荐
- kmeans与kmeans++的python实现
一.kmeans聚类: 基本方法流程 1.首先随机初始化k个中心点 2.将每个实例分配到与其最近的中心点,开成k个类 3.更新中心点,计算每个类的平均中心点 4.直到中心点不再变化或变化不大或达到迭代 ...
- linux crontab 定时任务,任务命令单独linux执行正常,放定时任务就不执行了,解决办法 (原)
这是我crontab里面的内容 */30 * * * * ./usr/bin/wget -q -O sync_log.txt http://fly.dllm.cn/index.php/Home/In ...
- 分布式-信息方式-JMS信息结构
JMS的消息结构JMS消息由以下几部分组成:消息头,属性和消息体消息头包含消息的识别信息和路由信息,消息头包含一些标准的属性如下:1: JMSDestination:由send方法设置2: JMSDe ...
- python3笔记五:while语句
一:学习内容 while语句 while-else语句 while语句练习 二:while语句 1. 格式 while 表达式: 语句 2.逻辑 当程序执行到while语句时,首先计算表达式的值 ...
- CentOS 6.4 yum快速搭建Zabbix 2.2版本(中文)
1.安装zabbix官方epel包 rpm -ivh http://repo.zabbix.com/zabbix/2.2/rhel/6/x86_64/zabbix-release-2.2-1.el6. ...
- leetcode227 基本计算器
1先利用符号栈转化为逆波兰表达式,并添加‘,’作为一个数字的结尾: 2然后利用数字栈计算逆波兰表达式的值: class Solution { public: int calculate(string ...
- JavaEE-实验二 Java集合框架实验
该博客仅专为我的小伙伴提供参考而附加,没空加上代码具体解析,望各位谅解 1. 使用类String类的分割split 将字符串 “Solutions to selected exercises ca ...
- pureftp安装部署
ftp:文件传输pure-ftpd:ftp软件作用:通过映射登录传送和接收文件.1.先下载pure-ftpd软件,最好指定一个下载软件目录如:/usr/local/src wget https://d ...
- Apache Kafka系列(六)客制化Serializer和Deserializer
已经迁移,请移步:http://www.itrensheng.com/archives/apache-kafka-repartition
- Linux 常用命令之 mv cp scp
1.mv 命令是move的缩写,用于文件(或文件夹)移动的. 1)将 luna 目录下的文件 a.txt,移动到 miracle 目录下: mv ./luna/a.txt ./miracle/ 2)将 ...