python导入模块
1、模块的定义:
模块定义:用来逻辑上组织python代码(变量、函数、类、逻辑;目的是:实现一个功能),本质就是.py结尾的python文件。 补充:
包的定义:用来从逻辑组织模块的,本质就是一个目录(必须带有一个__init__.py文件)
2、导入方法:
导入模块的方法:
1.import module_name 导入一个模块
使用的时候需要加上前缀module_name.name
2.import module_name,module2_name 导入多个模块
3.from module_name import * 导入module_name模块里边的所有变量,不建议使用!
4.from module_name import name 只导入module_name里边的name解释了一遍。
使用的时候直接 name 调用即可
import 和from 的区别
1.import 的时候 module_name.logger()
2.from 的时候 logger() 直接执行;from的时候等于把所有代码都复制了一份,执行一下。 解释器:做的事就是指定一个变量 并指向一个内存地址,将代码内容放在了内存地址里边。 导入包的方法:
import 包的名字 多级目录导入方法:
查看当前路径:
import sys
sys.path
查找父及目录
import os
os.path.abspath(__file__)
abspath() 当前文件的绝对路径
__file__ 当前文件的文件名
os.path.dirname(os.path.abspath(__file__))
dirname() 获取目录名
os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
路径加入
sys.path.append() 这样会把路径加入到python系统路径列表的最后,不利于快速查找。
sys.path.insert() 这样就会把路径加入到python系统路径列表的最前边。
例子:
import sys,os
print(sys.path)
a = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(a)
print(sys.path)
from xxx import xxx 3、import本质(路径搜索和搜索路径) 导入模块的本质: 就是把python文件解释一遍
分析:import module_name - - -》就是要解释module_name.py- - -》首先要找到module_name.py的位置- - -》查找系统路径sys.path,当前路径优先。 导入包的本质:就是执行该包下的__init__.py文件 导入包下边的test1.py文件
1.修改__init__.py文件,导入包下边的py文件
from . imprt test1
#import test1
2.在py文件中导入包下边的模块test1.py文件 4、导入优化
例如:
优化前:
module_test.py
def test():
print ("in the test!")
test.py
import module_test
def logger():
module_test.test()
print("in the logger!")
def search():
module_test.test()
print("in the search!")
优化后:
module_test.py
def test():
print ("in the test!")
test.py
from module_test import test
def logger():
test()
print("in the logger!")
def search():
test()
print("in the search!")
注意:
如果导入模块的方法和目前环境中有冲突,导入的时候可以设置别名:
from module_test import test as test01
python导入模块的更多相关文章
- Python导入模块的三种形式
Python导入模块的3中方式: 1.import module_name 这样在程序里就可以通过module_name.metnod_name()的方式访问模块里的函数了 Example: > ...
- python 导入模块 import 理解
--python 导入模块 import 理解 -----------------------------------2014/03/18 python 导入一个模块的过程要求有一个叫做“路径搜索”的 ...
- python导入模块时的执行顺序
当python导入模块,执行import语句时,到底进行了什么操作?按照python的文档,她执行了如下的操作: 第一步,创建一个新的module对象(它可能包含多个module) 第二步,把这个mo ...
- selenium + python自动化测试unittest框架学习(四)python导入模块及包知识点
在写脚本的时候,发现导入某些模块,经常报错提示导入模块失败,这里来恶补下python导入模块的知识点. 1.模块导入时文件查找顺序 在脚本中,import xxx模块时的具体步骤: (1)新建一个mo ...
- python 导入模块与使用
学习python之前一定要了解导入模块是怎么导入的,至少在看代码时不知道能很快的了解别人写的东西是哪里来. Python默认仅安装部分基础或核心模块,启动时也仅加载了基础模块,在需要是再显式的加载其他 ...
- python 导入模块的坑。为什么整个项目能运行,单独运行某个文件模块就报错?多层目录不同文件夹怎么导入?
一些文章介绍了python不同目录怎么导入问题,但py文件运行起点却从来没有文章说过!这是相当重要的!! 这个连接是网上99%的所讲的导入 https://www.cnblogs.com/luoye0 ...
- python导入模块总结与分析
定义1:python中什么是模块? 答:模块就是一个.py文件,每一个以py作为后缀的文件,都是一个模块. 定义2:Python中什么是包? 答:包是一类特殊的模块,他能包含其他模块,为了更好的组织模 ...
- 转载 Python导入模块的几种姿势
作为一名新手Python程序员,你首先需要学习的内容之一就是如何导入模块或包.但是我注意到,那些许多年来不时使用Python的人并不是都知道Python的导入机制其实非常灵活.在本文中,我们将探讨以下 ...
- Python导入模块Import和from+Import区别
在我们使用python的时候会发现使用Import可以导入模块,from+Import也可以,那么他们之间有什么区别,该用哪一种呢?让我们来看看 1.首先在demo.py中创建一个变量a,定义一个函数 ...
随机推荐
- TCP/IP详解 卷1 第二十一章 TCP的超时与重传
21.1 引言 可靠性的保证之一就是超时重传 前面两个超时重传的例子 1) ICMP端口不能到达时,TFTP客户使用UDP实现了一个简单的超时和重传机制,假定5s是一个适当是时间间隔,并每隔5s进行 ...
- Jetson TX2上的demo(原创)
Jetson TX2上的demo 一.快速傅里叶-海动图 sample The CUDA samples directory is copied to the home directory on th ...
- 移动端 滑动删除 swipeDelete
功能比较简单常见,最近整理一下做备份记录.先看看线上 整体实际效果 下面是swipeDelete 用法 demo 默认参数 var defaults = { distance:80, //滑动距离 u ...
- 前端-高潮 jQuery
jQuery:就是让页面动起来 参考手册:http://jquery.cuishifeng.cn/ DOM/BOM/javaScript 继承的类库 <--->模块 一.查找元素 二.操作 ...
- Spring源码情操陶冶-AnnotationConfigBeanDefinitionParser注解配置解析器
本文承接前文Spring源码情操陶冶-自定义节点的解析,分析spring中的context:annotation-config节点如何被解析 源码概览 对BeanDefinitionParser接口的 ...
- Java锁概念基础
Java中的锁不管是Lock还是synchronized都可以分为互斥锁和非互斥锁. 互斥锁只能被一个线程持有,其他线程只能等待锁的释放.synchronized,ReentrantLock,Read ...
- 洛谷 [P1314] 聪明的质检员(NOIP2011 D2T2)
###一道二分答案加前缀和### 题目中已经暗示的很明显了 "尽可能靠近" " 最小值" 本题的主要坑点在于 long long 的使用 ##abs函数不支持l ...
- 51NOD 1237 最大公约数之和 V3 [杜教筛]
1237 最大公约数之和 V3 题意:求\(\sum_{i=1}^n\sum_{j=1}^n(i,j)\) 令\(A(n)=\sum_{i=1}^n(n,i) = \sum_{d\mid n}d \c ...
- 阿里云学习之IOT物联网套件(客户端与服务端的后台数据传输)
设备端代码(mqttClient):https://help.aliyun.com/document_detail/42648.html?spm=5176.doc30579.6.569.ZEgA1g ...
- SynchronousQueue 的联想
SynchronousQueue介绍 SynchronousQueue是一种阻塞队列,该队列没有任务的容量.内部实现采用了一种性能更好的无锁算法. 代码实现里的Dual Queue,其中每一个put对 ...