Python模块导入的相关介绍

浅谈python模块的导入操作

1.什么是模块

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

2.模块的特点

python中的模块有以下特点:

(1)python中,一切皆对象,模块也是对象

(2)模块在物理形式上表现为以.py结尾的代码文件。

(3)一个模块也可以被看作是一个文件,一个文件也可以被当作一个独立的模块被别的程序导入调用。

(4)模块的文件名就是模块的名字加上扩展名.py

(5)每个模块都有自己的名称空间

python允许"导入"其它的模块以实现代码重用,从而也实现了将独立的代码文件组织成更大的程序系统的作用。一个模块在被导入后,在一个模块的顶层定义的所有变量都在被导入时成为了被导入模块的属性。

python中的每一个模块就是一个名称空。一个模块的名称空间可以通过dict或dir(M)获取,模块属性可以通过点号(.)运算符获取,格式为M.attr,并且每个模块都是一个独立的作用域(本地变量就是全局变量)。

3.python程序的组成

一个python程序通常包括一个顶层程序文件和其它的模块文件:

顶层文件:包含了程序的主要控制流程。

模块文件:为顶层文件或其它模块提供各种功能性组件。

模块首次导入(或重载)时,python会立即执行模块文件的顶层程序代码(也即不在函数内的代码),而位于函数主体内的直到函数被调用后才会执行。

4.模块的执行环境

模块是被导入的,但模块内部也可以导入和使用其它模块,这些模块可以用python或其它编程语言写成。

模块可内含变量,函数以及类来进行工作,而函数和类可以包含变量和其它元素。

5.模块的导入

在导入模块时只能使用模块名,而不能使用带.py后缀的模块文件名。

在python解释器下,输入:

   help("modules")

命令可以列出系统上已经安装的所有的模块

>>> help("modules")
Please wait a moment while I gather a list of all available modules...
CDROM               atexit              importlib           select
DLFCN               attr                incremental         selectors
IN                  audioop             inspect             setuptools
IPython             automat             io                  shelve
TYPES               autoreload          ipaddress           shlex
__future__          base64              ipython_genutils    shutil
_ast                bdb                 itertools           signal
_bisect             binascii            jedi                simplegeneric
_bootlocale         binhex              json                site
_bz2                bisect              keyword             six
_codecs             builtins            lib2to3             smtpd
_codecs_cn          bz2                 linecache           smtplib
_codecs_hk          cProfile            locale              sndhdr
_codecs_iso2022     calendar            logging             socket
_codecs_jp          cgi                 lzma                socketserver
_codecs_kr          cgitb               macpath             spwd
_codecs_tw          chunk               macurl2path         sqlite3
_collections        class               mailbox             sre_compile
_collections_abc    cmath               mailcap             sre_constants
_compat_pickle      cmd                 marshal             sre_parse
_compression        code                math                ssl
_crypt              codecs              mimetypes           stat
_csv                codeop              mmap                statistics
_ctypes             collections         modulefinder        storemagic
_curses             colorsys            multiprocessing     string
_curses_panel       compileall          netrc               stringprep
_datetime           concurrent          nis                 struct
_dbm                configparser        nntplib             subprocess
_decimal            constantly          ntpath              sunau
_dummy_thread       contextlib          nturl2path          symbol
_elementtree        copy                numbers             sympyprinting
_functools          copyreg             numpy               symtable
_gdbm               crypt               opcode              sys
_hashlib            csv                 operator            sysconfig
_heapq              ctypes              optparse            syslog
_imp                curses              os                  tabnanny
_io                 cythonmagic         ossaudiodev         tarfile
_json               datetime            packaging           telnetlib
_locale             dbm                 parser              tempfile
_lsprof             decimal             pathlib             termios
_lzma               decorator           pdb                 test
_markupbase         difflib             pexpect             tests
_multibytecodec     dis                 pickle              textwrap
_multiprocessing    distutils           pickleshare         this
_opcode             django              pickletools         threading
_operator           doctest             pip                 time
_osx_support        dummy_threading     pipes               timeit
_pickle             easy_install        pkg_resources       token
_posixsubprocess    else_exp            pkgutil             tokenize
_pydecimal          email               platform            tornado
_pyio               encodings           plistlib            trace
_random             ensurepip           poplib              traceback
_signal             enum                posix               tracemalloc
_sitebuiltins       errno               posixpath           traitlets
_socket             exampleproj         pprint              tty
_sqlite3            faulthandler        profile             twisted
_sre                fcntl               prompt_toolkit      types
_ssl                filecmp             pstats              typing
_stat               fileinput           psutil              unicodedata
_string             fnmatch             pty                 unittest
_strptime           formatter           ptyprocess          urllib
_struct             fractions           pwd                 uu
_symtable           ftplib              py_compile          uuid
_sysconfigdata      functools           pyclbr              venv
_testmultiphase     gc                  pydoc               virtualenv
_thread             genericpath         pydoc_data          virtualenv_support
_threading_local    getopt              pyexpat             warnings
_tracemalloc        getpass             pygments            wave
_warnings           gettext             pyparsing           wcwidth
_weakref            glob                pytz                weakref
_weakrefset         grp                 queue               webbrowser
abc                 gzip                quopri              wsgiref
aifc                hashlib             random              xdrlib
antigravity         heapq               re                  xml
appdirs             hmac                readline            xmlrpc
argparse            html                reprlib             xxlimited
array               http                resource            xxsubtype
ast                 idlelib             rlcompleter         zipapp
asynchat            imaplib             rmagic              zipfile
asyncio             imghdr              runpy               zipimport
asyncore            imp                 sched               zlib

使用import语句可以导入一个或多个指定的模块,但是建议一个import语句只导入一个模块

语法:

import module1[,module2[,....moduleN]]

如果被导入的模块名字太长时,可以为被导入的模块设定一个别名,但是要注意所起的别名不要与系统或者是自己设定的变量重名

语法:

import module as module_alias

使用from-import语句只导入指定模块的部分属性至当前名称空间

语法:

from module import name1[,name2[,....nameN]]

import语句和from-import语句的不同点:

1.import和from-import都是赋值语句,

import和from是可执行语句,类似于def,因此可以嵌套在if测试中,出现于def中等等,python执行到这些语句时才会对其进行解析,这样所有来自模块的属性仅在import语句执行后才能使用

2.import和from都是隐性赋值语句

import将整个模块对象赋值给一个变量名

from将一个或多个变量名赋值给导入此模块的模块中的同名对象

6.import的工作机制

import语句导入指定的模块时会执行三个步骤:

1.在指定路径下搜索模块文件,找到模块文件。

2.指定的模块在被导入时就会被编译成字节码,即编译成.pyc文件。

3.依靠模块的代码中的定义来创建其所定义的对象,模块文件中的所的语句会依次执行,从头至尾,而此步骤中任何对变量名的赋值运算,都会产生所得到的模块文件的属性。

但是请注意:模块只在第一次导入时才会执行如上步骤,后续的导入操作只不过是提取内存中已加载的模块对象可以使用reload()命令重新加载指定的模块。

7.模块搜索

python解释器在import模块时查找模块的顺序:

1.程序的主目录,

2.python的PATH目录(如果设置了此变量)

可以使用以下命令查看python的PATH目录:      

  >>> import sys
        >>> sys.path

3.标准链接库目录,就是python安装目录下的lib文件夹这个目录

4.任何.pth文件的内容(如果存在.pth文件)

这四个组件组合起来即为sys.path所包含的路径,而python会选择在搜索路径中的第一个符合导入文件名的文件。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

前端真的没有出路了嘛?不,当然不是!一定不是!绝对不是!

hello world! 一、为什么会出现“前端已死”的言论 作为一个老前端的老公,我认为前端行业的就业前景非常广阔,而且未来也很有潜力。 我认为前端行业的就业前景非常广阔,而且未来也很有潜力。 有些人却唱衰前端这个行业。我觉得这…

两种方法解决win10开机慢,经验分享

方法一: 1、按快捷键“winR”打开 运行窗口。 2、这时候输入“msconfig”后 ,点击“确定”或者按“ENTER”键。 3、这时候会打开一个名为“系统配置”的窗口, 在“常规”选项框下 勾选“有选择的启动”下的“加载系统服务”和“加载启动项”。…

【JAVA面试题】基本类型的强制类型转换是否会丢失精度?引用类型的强制类型转换需要注意什么?

🍎个人博客:个人主页 🏆个人专栏: JAVA ⛳️ 功不唐捐,玉汝于成 目录 前言 思路 1、继承关系 2、运行时类型检查 结语 我的其他博客 前言 在Java编程中,强制类型转换是一个常见的操作&#xf…

RateLimiter速率了解

RateLimiter <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>22.0</version> </dependency>这个同名的类在nacos的jar包中也有出现。速率限制于java.util.concurrent.Semaphore功能…

ACL实现固定时间访问资源——项目

文章目录 一、前言二、项目拓扑三、项目需求四、配置思路五、配置步骤1 IP地址2 端口类型3 静态路由4 流策略 六、结语 免责声明 本文旨在提供信息和解决问题的建议&#xff0c;观点和建议可能不适用于个人情况&#xff0c;仅供参考&#xff01;&#xff01;&#xff01; 文章中…

C# WPF上位机开发(软件的发布和部署)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 软件编译完成之后&#xff0c;本地测试完之后&#xff0c;一般都要发布和部署到客户的电脑上面。客户电脑的配置未必和开发的电脑是一样的&#xf…

02 特征点提取器 ORBextractor

文章目录 02 特征点提取器 ORBextractor2.0 基础知识2.0.1 图像金字塔2.0.2 ORB 特征点的关键点和描述子 2.1 构造函数&#xff1a;ORBextractor()2.2 构建图像金字塔 ComputePyramid()2.3 提取特征点并筛选 ComputeKeyPointsOctTree()2.4 筛选特征点 DistributeOctTree()2.5 计…

springboot+vue前后端分离的社区养老服务管理管理系统(有文档)

springbootvue前后端分离的社区养老服务管理管理系统。系统功能齐全&#xff0c;配置完成可运行&#xff0c;有文档&#xff0c;演示视频&#xff0c;配置说明&#xff0c;数据库文件&#xff0c;虚拟产品下单不退不换&#xff01; 技术&#xff1a;springbootmybatisplusmysql…

NPOI 导出Excel提示内容有问题的解决方法

NPOI导出Excel 使用Microsoft Excel 打开提示内容有问题&#xff0c;如下&#xff1a; 原因是&#xff1a;在使用NPOI导出excel时&#xff0c;获得 workbook.Write(ms)生成的 MemoryStream后&#xff0c;使用了 ms.GetBuffer()返回文件内容&#xff0c;导致生成的 Excel文件结尾…

【读论文】PSFusion

【读论文】Rethinking the necessity of image fusion in high-level vision tasks: A practical infrared and visible image fusion network based on progressive semantic injection and scene fidelity 介绍解决的问题网络架构整体架构稀疏语义感知分支&#xff08; spars…

Jmeter 性能测试 —— 评估一个系统TPS与并发数!

问题&#xff1a;性能压测&#xff0c;如何评估一个系统的TPS和并发数&#xff1f; 1、对于新系统 由业务部门或开发人员预估交易量和TPS指标 可以参考公式&#xff1a;并发用户 在线用户数 * 10%。 当一个系统还没有上线时&#xff0c;我们可以预判的是这个系统准备要给多…

PCL配置记录

PCL配置记录 1. Windows10vs2019pcl win10vs2019pcl 1.11.1 1.下载与安装 https://github.com/PointCloudLibrary/pcl/releases ) 双击exe安装 注意&#xff1a; ( ) 解压 “pcl-1.11.0-pdb-msvc2019-win64.zip”&#xff0c;将解压得到的文件夹中的内容添加“…\PCL…

云手机解决Tik Tok运营难题

对于海外营销的企业来说&#xff0c;Tik Tok是不可错过的宣传平台。本文将介绍Tik Tok运营过程中会遇到的几个问题&#xff0c;以及如何通过海外云手机解决。 Tik Tok运营的主要问题 1、高昂的硬件成本和封号风险 很多企业会选择矩阵式营销&#xff0c;但为了不封号每个账号都…

ansible的脚本:playbook剧本

&#xff08;一&#xff09;playbook的组成部分 tasks 任务&#xff0c;包含要在主机上执行的操作&#xff0c;使用模块定义这些操作&#xff0c;每一个任务都是一个模块的调用 variables 变量&#xff0c;存储和传递数据&#xff08;和shell脚本中的变量是一个意思&#xf…

理解Java中锁的应用

一、死锁 1.1 定义&#xff1a; 当线程 A 持有独占锁a&#xff0c;并尝试去获取独占锁 b 的同时&#xff0c;线程 B 持有独占锁 b&#xff0c;并尝试获取独占锁 a 的情况下&#xff0c;就会发生 AB 两个线程由于互相持有对方需要的锁&#xff0c;而发生的阻塞现象&#xff0c…

雄雄的小课堂微信机器人流程图

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂。 最近改造了下微信机器人&#xff0c;新版本还未上线&#xff0c;预计下周一&#xff08;12.25&#xff09;左右能上线第一版。 下面是改造之后的流程图 大家可以看看&#xff0c;有疑问可…

【计算机视觉中的多视图几何系列】深入浅出理解针孔相机模型

温故而知新&#xff0c;可以为师矣&#xff01; 一、参考资料 《计算机视觉中的多视图几何-第五章》-Richard Hartley, Andrew Zisserman. 二、针孔模型相关介绍 1. 重要概念 1.1 投影中心/摄像机中心/光心 投影中心称为摄像机中心&#xff0c;也称为光心。投影中心位于一…

Ubuntu及Docker 安装rabbitmq

安装ubuntu 前 先暴露端口&#xff1a; 5672 用于与mq服务器通信用 15672 管理界面使用的端口 docker命令&#xff1a;docker run -itd --name ubuntu -p 5672:5672 -p 15672:15672 ubuntu 进入docker : docker exec -it ubuntu /bin/bash 步骤&#xff1a; 1. 更新安装源…

算法学习系列(九):离散化

目录 引言一、离散化概念二、离散化模板三、例题四、测试 引言 这个离散化我的理解就是你如果要用到数组的下标进行存数&#xff0c;会有多个询问针对下标进行操作&#xff0c;然后这个下标特别的大&#xff0c;而且存的数也是特别的分散&#xff0c;举个例子就是有三个数&…

VScode 工作区配置 和 用户配置

一、工作区配置 通常不同的项目都有不同的配置&#xff0c;我一般都是使用eslint和prettier一起用&#xff0c;所以经常会有这几个文件&#xff1a; 这里简单介绍一下这几个文件的作用吧。 1.vscode文件夹下 一般有两个文件&#xff0c;extensions.json和settings.json。 e…