自定义模块:

什么是模块:本质就是.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 模块 相对导入的更多相关文章

  1. 8.什么是模块,模块的导入,__name__

    相关内容: 什么是模块 模块的导入 模块的导入 自模块的导入 同级目录导入 不同级目录导入 目录内导入目录外 目录外导入目录内 __name__ 首发时间:2018-02-04 15:23 修改: 2 ...

  2. Python全栈工程师(包、模块 的导入)

    ParisGabriel                每天坚持手写  一天一篇  决定坚持几年 为了梦想 为了信仰     Python人工智能从入门到精通 $ pip3 install tenso ...

  3. python模块以及导入出现ImportError: No module named 'xxx'问题

    python中,每个py文件被称之为模块,每个具有__init__.py文件的目录被称为包.只要模块或者包所在的目录在sys.path中,就可以使用import 模块或import 包来使用如果你要使 ...

  4. 浅谈python模块的导入操作

    1.什么是模块 在Python中有一个概念叫做模块(module). 所谓模块,就是将代码量较大的程序分割成多个有组织的,彼此独立但双能互相交互的代码片段, 这些自我包含的有组织的代码段就是模块. 2 ...

  5. TypeScript 中非代码模块的导入

    需要理解的是,TypeScript 作为语言,他只处理代码模块.其他类型的文件这种非代码模块的导入,讲道理是通过另外的打包工具来完成的,比如 Web 应用中的图片,样式,JSON 还有 HTML 模板 ...

  6. day 20 - 1 序列化模块,模块的导入

    序列化模块 首先我们来看一个序列:'sdfs45sfsgerg4454287789sfsf&*0' 序列 —— 就是字符串序列化 —— 从数据类型 --> 字符串的过程反序列化 —— 从 ...

  7. Python模块的导入以及软件开发规范

    Python文件的两种用途 1 . 当脚本直接使用,直接当脚本运行调用即可 def func(): print("from func1") func() 2 . 当做模块被导入使用 ...

  8. Learning-Python【16】:模块的导入使用

    一.什么是模块 模块就是一系列功能的集合体,一个模块就是一个包含了Python定义和声明的文件,文件名就是模块名字加上.py的后缀. 模块有三种来源: 1.内置的模块 2.第三方的模块 3.自定义模块 ...

  9. python之模块的导入

    今天在做一个项目的时候卡在模块导入这个点上了.赶紧回头总结一下 一.被导入的文件和工作的脚本在一个目录下 1.导入一个.py文件里的功能或参数(导入模块) 先看一下目录结构: module里有两个功能 ...

随机推荐

  1. [CF1223G/1240E]Wooden Raft 题解

    前言 上午一场模拟赛(发布前很久,因为这题题解太长了),发现T3特别珂怕,打开题解,发现一行字: 不要再问了,再问就是CF 1240E 当场去世.jpg. 在下文中,我们记 \(A\) 为 \(a\) ...

  2. [LOJ3124][CTS2019|CTSC2019]氪金手游:树形DP+概率DP+容斥原理

    分析 首先容易得出这样一个事实,在若干物品中最先被选出的是编号为\(i\)的物品的概率为\(\frac{W_i}{\sum_{j=1}^{cnt}W_j}\). 假设树是一棵外向树,即父亲比儿子先选( ...

  3. MDK Keil 5软件小技巧

    几乎所有玩ARM Cortex M单片机的坛友都是通过MDK Keil 5或者IAR环境进行单片机的程序开发的,俗话说工欲善其事必先利其器,我们天天都在用这个开发环境,那么,有些在MDK Keil 5 ...

  4. JAVASCRIPT试题及答案

    1.用jQuery编程实现获取选中复选框值的函数abc. <body> <input type="checkbox" name="aa" va ...

  5. Unity3D_(插件)使用Camera渲染制作Minimap小地图

    制作小地图:使用Camera渲染出来Render Texture 原理:使用摄像机从上到下获得场景游戏物体,摄像机Culling Mask渲染层级可设置是否需要在小地图上展示游戏物体,将摄像机获得的场 ...

  6. LinkedList类源码浅析(二)

    1.上一节介绍了LinkedList的几个基本的方法,其他方法类似,就不一一介绍: 现在再来看一个删除的方法:remove(Object o) remove方法接受一个Object参数,这里需要对参数 ...

  7. Scala学习(四)——模式匹配与函数组合

    函数组合 让我们创建两个函数: def f(s: String) = "f(" + s + ")" def g(s: String) = "g(&qu ...

  8. loggin模块,错误日志模块

    # 记录用户行为或者报错信息 import logging # 配置错误日志有两种方法 # 方法1:通过basicconfig # 配置简单.但是能做的事情少,解决不了中文乱码,不能同时输出到屏幕和文 ...

  9. StringUtils.isBlank()检验String 类型的变量是否为空

    在校验一个String类型的变量是否为空时,通常存在3中情况 是否为 null 是否为 "" 是否为空字符串(引号中间有空格)  如: "     ". Str ...

  10. 函数参数<二>

    1. 缺省参数 调用函数时,缺省参数的值如果没有传入,则被认为是默认值.下例会打印默认的age,如果age没有被传入: def printinfo( name, age = 35 ): # 打印任何传 ...