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也不会重新导入
解决方案

  1. 关闭终端,重新打开,然后再import 导入一次
  2. 用 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 * 可以理解成内容的复制,也就是深拷贝,那么深拷贝有什么特点,深拷贝最大的特点就是数据独立。
这里写图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/255345.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

python导入模块错误-No module named XXX-图文解决方案

问题描述: 使用python ide执行脚本正常,使用python直接执行报错,报错“不存在对应模块” 问题原因分析: Q1: 等同于python脚本在ide和console中执行的区别 Q2: 因为在ide里执行脚本的时候,不仅会导入path环境变量中的…

python中导入模块使用哪个关键字_关于python导入模块的关键字介绍

关于python导入模块的关键字介绍 发布时间:2020-04-17 10:13:26 来源:亿速云 阅读:101 作者:小新 今天小编给大家分享的是关于python导入模块的关键字介绍,很多人都不太了解,今天小编为了让大家更加了解pyt…

【Python问题】Python 导入模块的三种方式ModuleNotFoundError: No module named ‘模块名‘

Python 导入模块的三种方式ModuleNotFoundError: No module named 模块名 问题一、Python解释器查找模块文件的过程。二、解决方法记录一下 大家可以参考这个文档的解释很清楚:python导入模块的三种方式超详细http://c.biancheng.net/view/4645.html 问题 写程序i…

python怎么导入数学模块_python怎么导入模块

python中的模块即.py文件,模块的导入方式通常有两种:1是直接使用import语句导入;2是使用from..import..结构引入。 使用 import 导入模块的语法,但实际上 import 还有更多详细的用法,主要有以下两种:import 模块名1 [as 别名1], 模块名2 [as 别名2],…: 导入整个模块。…

python如何导入模块中的类_python导入模块中类的方法

自定义标题 python导入模块中类的方法 1、导入模块中的单类 2、一个模块中存储多个类时导入的方法 3、导入模块中所有类的方法 4、导入模块中的类时把类使用as取一个别名 python导入模块中类的方法 1、导入模块中的单类 》创建模块 #file:person.py class Person(): def __init…

python之模块导入及模块导入路径

一、从模块导入对象 1、import 模块名 [as 别名]。 也可以一次导入多个模块,多个模块之间用逗号隔开 (1)导入格式: import 模块名 [as 别名] (2)使用方法:使用时要在对象前面加上模块名作为前…

python无法导入模块_python导入模块失败的原因是什么

py执行文件和模块同属于同个目录(父级目录),才能直接import模块:如果不在同一目录,可以在python环境下使用sys.path.append(path)添加相关的路径,但在退出python环境后自己添加的路径就会自动消失! 模块 1、模块的定义: 为了编写可维护的代码,我们把很多函数分组,…

测绘——AutoCAD教育版打印戳去除

我们在使用CAD和Cass进行画图的时候,有时会参照一些老图,一些老图数据是使用教育版CAD绘制的,复制或插入均会导致我们的数据在每次打开是都会提醒检测到教育版打印戳记 (Fig. 1),以及在打印时也会看到。当我…

AutoCAD LT 2022下载及教程

资源地址:AutoCAD LT 2022 Autodesk AutoCAD LT 2022是一款功能强大的专业计算机辅助软件,有了该软件用户可以更快更精准的创建2D模型,该软件拥有完整的2D命令并允许用户创建工程图,对其进行修改并发布项目的工作文件。同时还提供…

教育版AutoCAD下载开启,你知道吗?

你知道,学生和教师可以免费获取AutoCAD吗?只要符合条件,学生和教师就可免费获得 Autodesk 产品和服务的一年期教育版访问权限。那你知道该如何获取和下载吗? 以下就是教育版AutoCAD下载需要注意的事项,本篇将会从安装…

国产在线三维云CAD:CrownCAD (在线建模CAD软件)

云CAD就是在线建模CAD软件,即打开浏览器就可以进行建模的软件。云CAD可以部署在公有云,也可以部署在私有云。 尤其是可以在国产芯片和国产操作系统上运行,所以非常适合于自主可控要求高的领域。具备云存储、云计算、多终端、多人协同设计等优…

【去除教育】去除打印教育戳记插件

添加公众号:“第一设计群” 去教育打印戳记插件 去除教育版戳记插件,可以避免在打印时候图纸出现这个戳记,对图纸造成一些美观的影响。相信很多朋友都遇到过这个问题: 使用方法 1、下载插件到电脑任意位置 2、打开CAD、新建空白文…

【Windows驱动篇】解决Windows驱动更新导致AMD Software软件无法正常启动问题

【Windows驱动篇】解决Windows驱动更新导致AMD Software软件无法正常启动问题 【操作前先备份好电脑数据!!!设置系统还原点等,防止系统出现问题!!!谨慎请操作!】 【操作前先备份好…

原创:CAD批量去除教育版戳记

批量去教育版戳记网上给出的方法及搜索到的软件基本都不能用,最好的方法是,把 DWG 文件转换为 DXF 文件,后再转换回来。所以首先我们需要把 DWG 文件转换为 DWF 文件,步骤如下 1.下载Acme CAD Converter,完成后打开&am…

CAD插件学习系列教程(七) 去除CAD教育版戳记 (两种方法)

AutoCAD分为商业版和教育版两个版本,教育版为防止图纸作作商业用途,在打印CAD图纸的时候,会添加教育版戳记。 打开有CAD教育版戳记的图纸,打开的时候会出现“此图形将显示一则消息‘由Autodesk教育版产品生成’。是否继续&#x…

什么是IPAM?如何使用IPAM来管理IP地址和DHCP?

在计算机网络中,IPAM(IP Address Management)是一种用于管理IP地址和DHCP(Dynamic Host Configuration Protocol)的工具或系统。IPAM旨在简化和集中管理IP地址分配、子网划分和DHCP配置等任务。本文将详细介绍IPAM的概…

新手快速学会使用DDL对数据库和表的操作

前言 SQL是一种操作关系型数据库的结构化查询语言。今天这篇文章将详细讲述数据定义语言DDL对数据库和表的相关操作。 文章目录 前言1. DDL-操作数据库1.1 查询1.2 创建数据库1.3 删除数据库1.4 使用数据库2.1 数据类型2.2 查询表2.3 创建表2.4 删除表2.5 修改表 3. 实战案例详…

统计学的假设检验/置信区间计算

假设检验的核心其实就是反证法。反证法是数学中的一个概念,就是你要证明一个结论是正确的,那么先假设这个结论是错误的,然后以这个结论是错误的为前提条件进行推理,推理出来的结果与假设条件矛盾,这个时候就说明这个假…

chatgpt赋能python:Python中符号的用法

Python中符号的用法 在Python编程中,符号是非常重要的一部分。通过合理使用符号,我们可以轻松地实现许多功能和操作。下面是Python中一些常用的符号的介绍和用法。 赋值符号 斜杠等于号()被用来赋值。例如,如果我们要…

接口和抽象类和实现类的区别

Jumping 是一个接口 有抽象方法 是一个抽象的内容 public class Cat implements Jumping{ 使用多态 方法实例化 Jumping j new Cat(); j.jumping } 接口的实现类 重写接口中所有的抽象方法抽象类 注意接口中没有 成员变量 默认全部都是 常量 用final 修饰可以通过 接口…