搜索
首页后端开发Python教程什么是模块?Python中模块module的介绍

本篇文章给大家带来的内容是关于什么是模块?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
可以在Python数组中存储哪些数据类型?可以在Python数组中存储哪些数据类型?Apr 27, 2025 am 12:11 AM

pythonlistscanStoryDatatepe,ArrayModulearRaysStoreOneType,and numpyArraySareSareAraysareSareAraysareSareComputations.1)列出sareversArversAtileButlessMemory-Felide.2)arraymoduleareareMogeMogeNareSaremogeNormogeNoreSoustAta.3)

如果您尝试将错误的数据类型的值存储在Python数组中,该怎么办?如果您尝试将错误的数据类型的值存储在Python数组中,该怎么办?Apr 27, 2025 am 12:10 AM

WhenyouattempttostoreavalueofthewrongdatatypeinaPythonarray,you'llencounteraTypeError.Thisisduetothearraymodule'sstricttypeenforcement,whichrequiresallelementstobeofthesametypeasspecifiedbythetypecode.Forperformancereasons,arraysaremoreefficientthanl

Python标准库的哪一部分是:列表或数组?Python标准库的哪一部分是:列表或数组?Apr 27, 2025 am 12:03 AM

pythonlistsarepartofthestAndArdLibrary,herilearRaysarenot.listsarebuilt-In,多功能,和Rused ForStoringCollections,而EasaraySaraySaraySaraysaraySaraySaraysaraySaraysarrayModuleandleandleandlesscommonlyusedDduetolimitedFunctionalityFunctionalityFunctionality。

您应该检查脚本是否使用错误的Python版本执行?您应该检查脚本是否使用错误的Python版本执行?Apr 27, 2025 am 12:01 AM

ThescriptisrunningwiththewrongPythonversionduetoincorrectdefaultinterpretersettings.Tofixthis:1)CheckthedefaultPythonversionusingpython--versionorpython3--version.2)Usevirtualenvironmentsbycreatingonewithpython3.9-mvenvmyenv,activatingit,andverifying

在Python阵列上可以执行哪些常见操作?在Python阵列上可以执行哪些常见操作?Apr 26, 2025 am 12:22 AM

Pythonarrayssupportvariousoperations:1)Slicingextractssubsets,2)Appending/Extendingaddselements,3)Insertingplaceselementsatspecificpositions,4)Removingdeleteselements,5)Sorting/Reversingchangesorder,and6)Listcomprehensionscreatenewlistsbasedonexistin

在哪些类型的应用程序中,Numpy数组常用?在哪些类型的应用程序中,Numpy数组常用?Apr 26, 2025 am 12:13 AM

NumPyarraysareessentialforapplicationsrequiringefficientnumericalcomputationsanddatamanipulation.Theyarecrucialindatascience,machinelearning,physics,engineering,andfinanceduetotheirabilitytohandlelarge-scaledataefficiently.Forexample,infinancialanaly

您什么时候选择在Python中的列表上使用数组?您什么时候选择在Python中的列表上使用数组?Apr 26, 2025 am 12:12 AM

useanArray.ArarayoveralistinpythonwhendeAlingwithHomeSdata,performance-Caliticalcode,orinterFacingWithCcccode.1)同质性data:arrayssavememorywithtypedelements.2)绩效code-performance-clitionalcode-clitadialcode-critical-clitical-clitical-clitical-clitaine code:araysofferferbetterperperperformenterperformanceformanceformancefornalumericalicalialical.3)

所有列表操作是否由数组支持,反之亦然?为什么或为什么不呢?所有列表操作是否由数组支持,反之亦然?为什么或为什么不呢?Apr 26, 2025 am 12:05 AM

不,notalllistoperationsareSupportedByArrays,andviceversa.1)arraysdonotsupportdynamicoperationslikeappendorinsertwithoutresizing,wheremactssperformance.2)listssdonotguaranteeconeeconeconstanttanttanttanttanttanttanttanttimecomplecomecomecomplecomecomecomecomecomecomplecomectaccesslikearrikearraysodo。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

mPDF

mPDF

mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),