目录
一、什么是模块
二、使用Python自带模块
三、安装使用第三方模块
四、模块搜索路径
首页 后端开发 Python教程 什么是模块?Python中模块module的介绍

什么是模块?Python中模块module的介绍

Sep 19, 2018 pm 04:32 PM
python

本篇文章给大家带来的内容是关于什么是模块?Python中模块module的介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

一、什么是模块

Python中,一个.py文件就称之为一个模块。
那么使用模块有什么好处呢?

(1)提高了代码的可维护性。

(2)代码不必从零开始,当一个模块编写完毕后,就可以被其他地方应用。

(3)可以避免函数名和变量名冲突,相同的函数名和变量可以存放在不同的模块中,但是要注意尽量不要与内置函数名字冲突。
  Python所有的内置函数:https://docs.python.org/3/lib...

为避免模块名冲突,python又引入了按目录来阻止模块冲突的方法,称为包(python package)。
一个abc.py的文件就是一个名字为abc的模块,一个xyz.py的文件就是一个名字为xyz的模块。假如abc和xyz这两个模块名字与其他模块冲突了,于是我们可以通过不同的包来组织模块,避免模块冲突。
则可为:

↓ mycompany      # 按目录存放
     _init_.py   # 模块名:mycompany
     abc.py      # 模块名:mycompany.abc
     xyz.py      # 模块名:mycompany.xyz
登录后复制

引入了包以后,只要顶层的包名不与别人冲突,那所有模块都不会与别人冲突。
每一个包目录下都会有一个_init_.py的文件,这个文件是必须存在的,否则python就把这个目录当成普通目录,而不是一个包。
_init_.py可以是空文件,也可以有python代码,因为_init_.py本身就是一个模块。

二、使用Python自带模块

Python内置了很多非常有用的模块,只要安装完毕,这些模块就可以通过import立刻导入使用。
例如下列小程序:以自建的sys模块,编写一个hello的模块hello.py 。

# !/usr/bin/env python    # -1-
# -*-coding:utf-8 -*-     # -2- 
_author_ = 'xionglp'      # 使用_author_变量把作者写进去

import sys   

def test(): 
    args = sys.argv  
    if len(args) == 1: 
        print ('hello,world!') 
    elif len(args) ==2: 
        print('hello,%s !'% args[1]) 
    else: 
        print('too many arguments!') 
if __name__ == '__main__':
    test()
登录后复制

说明:

注释 # -1- :让该.py文件直接在unix/linux/mac上运行

注释 # -2- :.py文件使用标准UTF-8 编码

import sys:导入sys模块。之后便可以利用sys这个变量,访问sys模块的所有功能。
sys模块有一个argv变量,用list存储了命令行的所有参数。argv至少有一个元素,因为第一个参数永远是该.py文件的名称。

当在命令行运行hello.py文件时,python解释器就把一个特殊变量__name__置为__main__。如果在其他地方导入该模块时,if判断将失败,即if仅在此模块单独运行时生效。因此这种if测试可以让一个模块通过命令行运行时执行一些额外的代码,最常见的就是运行测试。

在交互式环境(cmd)中导入该模块:

>>> import hello                         
>>> hello.test()                   
hello, world!
登录后复制

三、安装使用第三方模块

除了Python自己的包,还可以安装安装第三方模块。第三方包安装是通过包管理工具pip完成的。
一般来说,第三方库都会在Python官方的pypi.python.org网站注册。所以要安装一个第三方库,必须先知道该库的名称,可以在官网或者pypi上搜索。比如Pillow的名称叫Pillow,因此,安装Pillow的命令就是:pip install Pillow

步骤1:找到安装Python路径中的easy_install.exe,例如:D:PythonScripts

步骤2:打开cmd,输入安装命令:easy_install.exe pip (pip安装成功)

步骤3:在cmd下执行pip,输入命令:pip install pillow

如下:

1765206245-5ba100e34f663_articlex.png

安装成功后便可以使用Pillow了。其他常用的第三方库还有:MySQL的驱动、用于科学计算的NumPy库等等。

pip升级:

在使用pip进行安装时,有时候会提示pip的版本太低,需要upgrade。提示会给出要执行的语句,按照提示执行就行。
执行命令:python –m pip install –upgrade pip

四、模块搜索路径

我们也可以导入自己写入的模块。当我们试图加载一个模块时,Python会在指定的路径下搜索对应的.py文件,如果找不到,就会报错,例如:

2877085459-5ba1a3e73a386_articlex.png

默认情况下,Python解释器会搜索当前目录、所有已安装的内置模块和第三方模块,搜索路径存放在sys模块的path变量中:

>>>import sys
>>>sys.path
登录后复制

如果我们要添加自己的搜索目录,有两种方法:

法一:直接修改sys.path,添加要搜索的目录,这种方法是在运行时修改,运行结束后失效。

>>> import sys
>>> sys.path.append('/Users/xionglp/my_py_scripts')
登录后复制

法二:设置环境变量PYTHONPATH,该环境变量的内容会被自动添加到模块搜索路径中。设置方式与设置Path环境变量类似。注意只需要添加你自己的搜索路径,Python自己本身的搜索路径不受影响。

【补充点能量】if __name__ =="__main__":

__name__:为系统变量,有两个取值。当模块是被调用执行时,取值为模块的名字;当模块是直接执行时,则该变量取值为__name__。

if __name__ == "__main__"实现的功能:可以让模块既可以导入到别的模块中用,也可以自己执行。

英文解释说:make a script both importable and executeable

例如:新建模块atest.py

# !/usr/bin/env python3
# -*- coding:utf-8 -*-
'a test module'
def addFunc(a, b):
    return a + b
print('a_test_module\'s result is ', addFunc(1, 1))
登录后复制

新建模块anothertest.py

# !/usr/bin/env python3
# -*- coding :utf-8 -*-
'another test module'
import  atest
print('调用another test module模块执行的结果时:',atest.addFunc(12,23))
登录后复制

运行:

D:\Python_project>python atest.py
a_test_module's result is  2
D:\Python_project>python anothertest.py
a_test_module's result is  2
调用another test module模块执行的结果时: 35
登录后复制

说明:当运行anothertest.py的时候,先运行了atest.py,再运行anothertest.py。
若不希望出现atest的内容,python提供了一个系统变量:__name__。可以把被调用的测试代码写在if语句里,当调用该module时,此时的__name__取值为该模块的名字,所以if判断为假,不执行后续代码如下:

if __name__ == '__main__':`
       print ('atest的计算结果:',addFunc(1,1))
登录后复制

则运行结果为:

D:\Python_project>python anothertest.py
调用another test module模块执行的结果时: 35
登录后复制

此时我们就得到了预期结果,不输出多余的结果。

以上是什么是模块?Python中模块module的介绍的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何在LAMP架构下高效整合Node.js或Python服务? 如何在LAMP架构下高效整合Node.js或Python服务? Apr 01, 2025 pm 02:48 PM

在LAMP架构下整合Node.js或Python服务许多网站开发者都面临这样的问题:已有的LAMP(Linux Apache MySQL PHP)架构网站需要...

使用Scapy爬虫时,管道持久化存储文件无法写入的原因是什么? 使用Scapy爬虫时,管道持久化存储文件无法写入的原因是什么? Apr 01, 2025 pm 04:03 PM

使用Scapy爬虫时,管道持久化存储文件无法写入的原因探讨在学习使用Scapy爬虫进行数据抓取时,经常会遇到一�...

Python进程池处理并发TCP请求导致客户端卡死的原因是什么? Python进程池处理并发TCP请求导致客户端卡死的原因是什么? Apr 01, 2025 pm 04:09 PM

Python进程池处理并发TCP请求导致客户端卡死的解析在使用Python进行网络编程时,高效处理并发TCP请求至关重要。...

如何查看Python functools.partial对象内部封装的原始函数? 如何查看Python functools.partial对象内部封装的原始函数? Apr 01, 2025 pm 04:15 PM

深入探讨Pythonfunctools.partial对象的查看方法在使用Python的functools.partial...

如何解决Linux终端中查看Python版本时遇到的权限问题? 如何解决Linux终端中查看Python版本时遇到的权限问题? Apr 01, 2025 pm 05:09 PM

Linux终端中查看Python版本时遇到权限问题的解决方法当你在Linux终端中尝试查看Python的版本时,输入python...

Python跨平台桌面应用开发:哪个GUI库最适合你? Python跨平台桌面应用开发:哪个GUI库最适合你? Apr 01, 2025 pm 05:24 PM

Python跨平台桌面应用开发库的选择许多Python开发者都希望开发出能够在Windows和Linux系统上都能运行的桌面应用程...

Python沙漏图形绘制:如何避免变量未定义错误? Python沙漏图形绘制:如何避免变量未定义错误? Apr 01, 2025 pm 06:27 PM

Python入门:沙漏图形绘制及输入校验本文将解决一个Python新手在沙漏图形绘制程序中遇到的变量定义问题。代码...

如何用Python高效统计并排序大型商品数据集? 如何用Python高效统计并排序大型商品数据集? Apr 01, 2025 pm 08:03 PM

数据转换与统计:高效处理大型数据集本文将详细介绍如何将一个包含商品信息的数据列表,转换为另一个包含...

See all articles