python模块的定义_PYTHON-模块定义 搜索路径

模块是什么: *****

模块 是一系列功能的集合体

一个py文件就是一个模块

一个函数就是一个功能

例如 A.py 文件名A.py 模块名 A

模块有哪些来源

内置

第三方

自定义

模块有四种通用的类别:

1.自定义模块 *****

(第三方模块也属于自定义 它是别的程序员写的 )

关注如何自定义

2.内置模块 ****

是c语言写的 然后连接到python解释器中

例如 time模块

关注如何使用

3.已经编译为DLL c或c++ ***

不需要知道怎么来的 会用就行

4.包 *****

包实际上是包含一堆模块的文件夹

之后详细将

对于这四种模块 它们的使用方式 是一致的

如何定义模块:*****

创建一个py文件 把你的功能写到文件中

为何用模块:

1,使用内置和第三方的模块:拿来主义可以极大地提高开发效率

2,使用自定义模块:为了减少代码冗余

如何使用模块:*****

大前提:使用模块必须区分开谁是执行文件,谁是被导入的模块

import 模块名

使用:必须加前缀(模块名.)

优点:指名道姓地向某一个模块的名称空间要名字,肯定不会与当前执行文件名称空间中的名字冲突

缺点:必须加前缀,不够简洁

首次导入模块发生3件事(import spam):

1. 产生一个模块的名称空间

2. 执行被导入spam.py内的代码,将执行过程中产生的名字丢存放于模块的名称空间中

3. 在当前执行文件中拿到一个模块名,该名字是指向模块的名称空间的

from 模块名 import名字

使用:直接使用名字

优点:无需加前缀,使用更为简洁

缺点:容易与当前执行文件名称空间中的名字冲突

首次导入模块发生3件事(from spam import money):

1. 产生一个模块的名称空间

2. 执行spam.py内的代码,将执行过程中产生的名字丢存放于模块的名称空间中

3. 在当前执行文件中拿到一个名字money,该名字直接指向模块的名称空间的那个money的内存地址

注意: 函数的作用域关系在定义阶段就已经固定死了,与调用位置无关

简单的说其实就是得到了一个名称 这个名字指向被导入文件

一旦有了这个名称我们就可以通过这个名称找到对应的命名空间中的所有名称

import 的其他写法 *****

1.import xxx as xxx

给模块取别名 用于简化书写

6 from xxx import xx as xx

取别名

2.import xxx,xxxx

一次导入多个模块

4.from xxx import xxx,xxx,xx

从模块中导入多个名称

3.from xxx import xxx

从模块中导入某个名字到当前名称空间

注意 要避免名称冲突

如果冲突了 按照就近查找原则

5.from xxx import *

从模块中导入所有名称

__all__用于控制 使用者可以使用哪些名称

from 和 import 除了导入的名称 不同 其他特性一致

思考:

在模块的使用.py文件中

加入:

import spam

import spam

import spam

import spam

问:"from the spam" 输出几次?

答案是1次: 模块的中代码仅在首次导入时执行一次

执行文件和被导入的模块的命名空间 是相互独立的 ****

在被导入模块中 所有的名字使用的都是自己空间中的 和调用者无关

py文件的两种执行方式 *****

1.作为执行文件 (右键run)

2.作为模块被导入

__name__ 这个名称 可以获取当前执行状态

如果是__main__ 说明当前是执行文件

否则 说明是作为模块

于是乎有了以下代码

if __name__ == "__main__":

print("作为执行文件")

else:

print("作为模块导入了")

模块的搜索路径的优先级

内存中已经加载过的 -> 内置模块 -> sys.path # 第一个值是当前执行文件所在的文件夹

sys.modules 查看内存中已加载的

其中只有sys.path 我们可以操作

通常我们会将模块的路径手动添加到sys.path中

# 方案一:

# import sys

# sys.path.append(r'D:\脱产三期视频\day16\03 模块的搜索路径1\dir1')

# print(sys.path)

# import m1

# m1.f1()

# 方案二:

# from dir1 import m1

# m1.f1()

from dir1.dir2 import m2

m2.f2()

如何在sublime3项目设置中设置python模块的搜索路径?ImportError: No module named *的解决办法

问题:之前使用pycharm,用的挺溜,但是电脑配置实在不争气,pycharm启动久了,耗去大量内存,导致运行起来越来越慢,于是转向使用sublime text. 把项目从pycharm切换到subl ...

python import模块的搜索路径

当在py代码中import所依赖的模块时, python是从哪里找到这些模块呢,即模块的搜索路径是啥? 默认情况下,Python解释器会搜索当前目录.所有已安装的内置模块和第三方模块,搜索路径存放在s ...

Python 1-3区分Python文件的两种用途和模块的搜索路径

区分Python文件的两种用途 run.py文件: import m1 m1.py文件: def f1(): print('f1') def f2(): print('f2') #当文件被执行时__n ...

模块的四种形式、 import和from...import、 循环导入问题、模块的搜索路径、 python文件的两种用途

目录 模块的四种形式 模块 模块的四种形式 import和from...import 循环导入问题 模拟问题的发生: 解决方案 模块的搜索路径 Python文件的两种用途 模块的四种形式 Nike推荐 ...

Python 模块定义、导入、优化详解

一.定义 模块:用来从逻辑上组织 python 代码(变量,函数,类, 逻辑:实现一个功能),本质就是 .py 结尾的 python文件(例如:test.py文件,对应的模块名:test) 包:用来从 ...

python 模块定义导入

1.定义模块:用来从逻辑上组织python代码(变量.函数.类.逻辑:实现一个功能),本质就是:.py结尾的python文件(文件名:test.py,对应的模块名:test)包:本质就是一个目录(必须 ...

ubuntu为Python添加默认搜索路径

我们在自己写python模块的时候,怎么样把自己写的模块加入到python默认就有的搜索路径中呢?不要每次非得import sys; sys.path.append(‘/home/uestc/rese ...

Python模块定义和使用

Python中所谓的模块就是一个Python文件,一个abc.py的文件就是一个名字叫abc的模块,一个xyz.py的文件就是一个名字叫xyz的模块.模块由代码.函数或类组成.编程中使用模块不仅可以提 ...

Python3基础 sys.path.append 增加模块的搜索路径

Python : 3.7.0          OS : Ubuntu 18.04.1 LTS         IDE : PyCharm 2018.2.4       Conda ...

随机推荐

深入理解Objective-C:Category

摘要 无论一个类设计的多么完美,在未来的需求演进中,都有可能会碰到一些无法预测的情况.那怎么扩展已有的类呢?一般而言,继承和组合是不错的选择.但是在Objective-C 2.0中,又提供了categ ...

linux配置学习笔记(一):如何提高ssh连接的速度

服务器端sshd配置文件 /etc/ssh/sshd_config 看是否有如下的两条配置条目 GSSAPIAuthentication no UseDNS no 如果前面带#,请把#删掉,或者新添加 ...

iOS SnapKit自动布局使用详解

对于自动布局: 我们在 StoryBoard 中可以使用约束实现,简单明了,但如果用纯代码来设置约束就很麻烦了 OC里面,我们常用的有Masonry,SDAutoLayout Swift里,我们有Sn ...

解析.DBC文件, 读懂CAN通信矩阵,实现车内信号仿真

通常我们拿到某个ECU的通信矩阵数据库文件,.dbc后缀名的文件. 直接使用CANdb++ Editor打开,可以很直观的读懂信号矩阵的信息,例如下图: 现在要把上图呈现的信号从.dbc文件中解析出来 ...

ssm项目部署到服务器过程

ssm项目部署到服务器过程 特别篇 由于准备春招,所以希望各位看客方便的话,能去github上面帮我Star一下项目 https://github.com/Draymonders/Campus-Sho ...

Vue.js表单校验;动画指令;避免内存泄露。

Vue.js表单校验: 动画指令:创建自定义的滚动指令. 避免内存泄露. 避免内存泄露 在单页面应用开发时SPA,用户无需刷新浏览器.所以javascript应用需要自行清理组件来防止内存占用不断增长 ...

[luogu3198] 玩具装箱

题面 ​ 最近在搞dp, 发现自己的dp还是太弱了, 做的题比较少, 也有一些东西没学, 这道题算是我独立做的第一道斜率优化dp, 写篇题解纪念一下吧. ​ dp式比较简单, 就是一个线性的dp, 设 ...

shell学习(一)

一.免密交互 --stdin 1.从标准输入读取字符串 如:passwd   --stdin   heruguo246 [root@localhost mnt]#    ---输入了修改heruigu ...

Raft 一致性算法论文译文

本篇博客为著名的 RAFT 一致性算法论文的中文翻译,论文名为

【4】【MOOC】Python游戏开发入门-北京理工大学【第三部分-游戏开发之机制(色彩与绘图)】

学习地址链接:http://www.icourse163.org/course/0809BIT021E-1001873001?utm_campaign=share&utm_medium=and ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值