• 技术文章 >Python技术 >Python基础教程

    Python模块导入的相关介绍

    爱喝马黛茶的安东尼爱喝马黛茶的安东尼2019-07-02 16:20:15原创2482

    浅谈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视频教程

    在python解释器下,输入:

    1

    help("modules")

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

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    54

    55

    56

    57

    58

    59

    60

    61

    62

    63

    64

    65

    66

    67

    68

    69

    70

    71

    72

    73

    74

    75

    76

    77

    78

    79

    80

    81

    82

    83

    >>> 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语句只导入一个模块

    语法:

    1

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

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

    语法:

    1

    import module as module_alias

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

    语法:

    1

    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目录:

    1

    2

    >>> import sys

          >>> sys.path

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

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

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

    专题推荐:python 模块导入
    上一篇:Python之set集合的相关介绍 下一篇:Python如何生成随机图形验证码

    相关文章推荐

    • Python之math模块常用方法汇总• Python之json模块和pickle模块详解

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网