Python中的导入模块
1,导入模块的的几种方式
模块是什么?
模块实际上就是 以.py为结尾的文件
注意点:自定义的模块尽量不要和系统模块重名
模块内部封装了很多实用的功能,有时在模块外部调用就需要将其导入,导入模块简单划分,实际上就只有两种:
- import ……
- from …… import
详细一点划分有五种:
- 1,improt 模块名
调用:模块名.功能名 - 2,import 模块名 as 别名
调用:别名.功能名 - 3,from 模块名 import 功能名
调用:直接功能名 - 4,from 模块名 import 功能名 as 别名
调用: 直接拿别名来用 - 5,from 模块名 import * (用 * 号 一次性导入所有功能)
调用:直接功能名
注意点:* 号没法用别名
2,模块的搜索路径
sys.path 返回导入模块时的搜索路径集,是一个list列表。
- 从上面列出的目录里依次查找要导入的模块文件
- ’ ’ 表示当前路径
- 列表中的路径的先后顺序代表了python解释器在搜索模块时的先后顺序
可以添加新的模块:
- sys.path.append(‘/home/python/xxx’)
- sys.path.insert(0, ‘/home/python/xxx’) # 可以确保先搜索这个路径
- 注意点:sys.path.append(path)和sys.path.insert(path)添加的相关路径,在退出交互式环境或者IDE后会自动消失。
In [37]: sys.path.insert(0,"/home/python/xxxx")
In [38]: sys.path
Out[38]:
['/home/python/xxxx','','/usr/bin','/usr/lib/python35.zip','/usr/lib/python3.5','/usr/lib/python3.5/plat-x86_64-linux-gnu','/usr/lib/python3.5/lib-dynload','/usr/local/lib/python3.5/dist-packages','/usr/lib/python3/dist-packages','/usr/lib/python3/dist-packages/IPython/extensions','/home/python/.ipython']
3,重新导入模块
模块被导入后,import module不能重新导入模块,重新导入需用reload
创建一个reload_test.py文件,里面写一个test方法
打开 ipython 终端导入 reload_test 模块
修改reload_test.py 文件中的test方法
再一次import reload_test 模块 然后调用test方法会发现值没变
原因:import 导入模块只会导入一次,因此即使模块被修改了,import也不会重新导入
解决方案
- 关闭终端,重新打开,然后再import 导入一次
- 用 reload 可以在不关闭终端的情况下重新导入
4,多模块开发时,要注意修改导入模块的值时,from……import 与 import 导入模块的区别
main.py
from send import *
from show import *# 主流程
def main():# 发女朋友send()# 秀恩爱show()if __name__ == '__main__':main()
send.py
#import girl
from girl import *# 发女朋友
def send():print("发女朋友了,翠花是你的了")#girl.have_girl = Truehave_girl = True
show.py
# import girl
from girl import *# 秀恩爱
def show():if have_girl == True:#if girl.have_girl == True:print("我有女朋友了,好开心")else:print("单身贵族")
girl.py
# 共同变量模块have_girl = False #False代表没有女朋友 True代表有女朋友
运行结果:
发女朋友了,翠花是你的了
单身贵族
是不是有点惊讶?结果难道,不应该是这样的吗:
发女朋友了,翠花是你的了
我有女朋友了,好开心
会产生这种情况的原因:
import girl 可以理解为地址的复制,也就是 引用 用来修改值
from girl import * 可以理解成内容的复制,也就是深拷贝,那么深拷贝有什么特点,深拷贝最大的特点就是数据独立。
Python中的导入模块相关推荐
- 简述python中怎样导入模块_12 python中模块和包如何导入
1 模块的三种类型 python标准库 python自带的标准库,比如常用的有os,sys,re,logging等 第三方模块 需要安装第三方模块以后才能导入,比如django 应用程序自定义模块 2 ...
- 解决Python中PyCharm导入模块时,模块名下出现红色波浪线的问题
在博主第一次在PyCharm中导入模块时,模块名下出现红色波浪线,不影响程序执行,但强迫症忍不了 以下是解决办法 Let's do it ... 进入设置,找到Console下的Python Cons ...
- Python中import导入模块
1.import搜索路径 >>> import sys >>> sys.path ['', 'D:\\python\\python3.7.2\\Lib\\idlel ...
- python中显示导入模块所有包含函数的方法
在python应用中我们经常会用到模块,但是有很多人并不十分了解导入模块包含的所有函数,今天给大家介绍一种可以快速显示模块函数的方法,希望对大家有所帮助, 首先我们需要用到一个工具软件 " ...
- 简述python中怎样导入模块_Python中导入模块的两种模式,import
import import pandas import pandas as pd 使用函数方式:.(),或者.() 比如 pandas.read_csv("data/stock.csv&qu ...
- Python中import导入上一级目录模块及循环import问题的解决
Python中import导入上一级目录模块及循环import问题的解决 参考文章: (1)Python中import导入上一级目录模块及循环import问题的解决 (2)https://www.cn ...
- 介绍Python中的__future__模块
这篇文章主要介绍了介绍Python中的__future__模块,__future__模块使得在Python2.x的版本下能够兼容更多的Python3.x的特性,需要的朋友可以参考下 Python的每个 ...
- Python中的常用模块
1.sys模块(内置模块) 在sys模块中定义了一些函数和变量,用来设置和获取系统的信息. # Python中的常用模块:sys模块 import sys sys.path.append('./tes ...
- Python中的warnings模块详细阐述
Python中的warnings模块详细阐述 异常和警告 warnings - 非致命提醒 警告类别 警告过滤器 默认警告过滤器 可用函数 生成警告 使用模式过滤 重复警告 其他消息传递函数 由于在读 ...
最新文章
- java字符串 直接能网络传输吗_atitit.二进制数据无损转字符串网络传输
- 【Android APT】注解处理器 ( 注解标注 与 初始化方法 )
- 经典C语言程序100例之四四
- SAP BTP SDK for iOS 介绍
- Scrum基础知识体系和感想
- oracle 创建日志文件,oracle创建日志文件
- 时钟同步及其应用(接上一篇)
- python 控件id_查看控件id的工具
- 数据挖掘-文本特征提取方法研究
- 一个nginx 502问题解决方案
- Windows 对外开放端口号
- Qt-textEdit 滚顶条设置只读模式
- SSH 登录太慢的解决方法
- Laravel 生态圈
- CefSharp学习笔记
- 安装kubernetes k8s v1.16.0 国内环境
- Java多线程导出Excel表格, 100w数据量
- 触摸屏设置禁用手指缩放机双击放大功能
- bit,byte,b,B,KB的整理
- Java实习生常规技术面试题每日十题Java基础(五)