Python模块!

导读:本篇文章讲解 Python模块!,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

Python模块!


今天博主跟大家聊一聊如何使用Python模块!不喜勿喷,如有建议欢迎补充、讨论!

关于安装和汉化可以观看博主的这篇文章《下载安装及汉化 》以及Python系列:windows10配置Python3.0开发环境!,安装完毕重启VsCode!以及VSCode配置Python开发环境!


Come on!模块(module)的介绍

模块的定义:

在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,将会显得越来越杂乱无章,故使得代码的维护性越来越差。例如:在分析中国的每个城市的人口数量变化情况时,若我们把对每个城市的人口数量分析放在一个word文档内,那要查找某一个城市的人口数量变化情况,那岂不是很难?故我们可以把对一个城市的分析写在一个文件内,这样想要找某个城市的数据分析则会容易得多。

这时候我们会根据不同的功能将不同用途的代码放置在不同的.py文件内,这样做的好处就是:

  • 一、大大的提高了代码的可维护性。
  • 二、开源。编写代码不必从零开始。当一个模块编写完毕,就可以被其他地方引用。我们在编写程序的时候,也经常引用其他模块,包括Python内置的模块和来自第三方的模块。
  • 三、使用模块可以避免变量名和函数名冲突。

而一个 .py文件就是一个模块。

模块的分类:

模块的通常而言有以下三种:

  1. Python标准库,例如:time、random、json等模块

  2. 第三方模块 ->例如:Pandas(python实现的类似R语言的数据统计、分析平台。

  3. 自定义模块。即自写的.py文件


模块的导入

一、import语句

  • import module1[, module2[,… moduleN],直接导入模块,这种方式可以用于导入本目录下的模块,以及内置模块
  • 当我们使用import语句的时候,Python解释器是怎样的找到对应的文件的呢?
  • 其实解释器有其搜索路径,可通过导入sys模块,调用sys.path来查看。当使用import 导入模块时,则按照该搜索路径进行查找,故若该被导入模块文件在这些搜索路径中,则直接可以使用import方法导入。例如:
  • [’/usr/lib/python3.6/python_learning/my_module’,’/usr/lib/python3.6’,’/usr/lib/python3.6/plat-x86_64-linux-gnu’,’/usr/lib/python3.6/lib-dynload’,’/usr/local/lib/python3.6/dist-packages’, ‘/usr/lib/python3/dist-packages’],若该模块处于这些路径,则可以直接使用import方法。

二、from…import语句

  • from module_name import name1[, name2[, … nameN]],导入模块中的函数或者变量等。
  • 这种导入方式不会将整个module_name模块导入到当前的命名空间中来。仅导入指定的函数(函数即变量)或者变量等。
  • **而from module_name import *,则是导入模块 module_name下的所有函数或者变量等。
  • 注:这种方法不推荐使用,由于导入的函数或者变量不明确则可能会与本文件中的函数名或者变量名冲突。

包(package)

还是上面那个例子,若对每个城市的人口数量进行数据分析,即使将一个城市的人口数量分析放在一个Word文档中,由于中国的城市这么多,那么我们可以根据省进行划分,则可根据省创建文件夹,将该省内的城市的数据分析放入该文件夹内。包(package)也是同样的道理,只不过包(package)是带有__init__.py文件的文件夹(Directory)。

包(package)的好处:

  • ①、在不同的包内模块名即便相同也不受影响。在很多情况下,我们通常会在不同的包内创建相同的文件名。
  • ②、可根据模块的功能不同将文件进行分类,故包的存在可以使文件的分类更加清晰、使得代码的定位更加明确。

注:每次调用某个包的时候,即执行该包下__init__.py文件。
在这里插入图片描述

例如,图中的my_module、module_test即为包(package),而其中必然会有一个__init__.py文件。

包(package)中文件的导入(需重点掌握前两种。)

在这里插入图片描述


if name =”main“的用法

如果我们是直接执行某个.py文件的时候,该文件中那么”name == ‘main’“是True,但是我们如果从另外一个.py文件通过import导入该文件的时候,这时__name__的值就是我们这个py文件的名字而不是__main__。

故 if name = “main” 的功能:

  • 可以在被导入模块中用于调试(在被导入模块中if name =“main” :–>True),而在导入该模块的文件中是不会被执行的(在导入模块的文件中,导入该模块时执行 if name = “main” :–>Flase)。
  • 用于接口文件(bin)中使用 if name =“main”:mian.run() ,告诉别人我的模块你可以调用但是不能够修改。
'''
@Descripttion: 这是一个文件头注释!
@version: 1.0.0
@Company: DCIT-SH
@Author: Sunny Chen
@Date: 2019-10-15 13:42:21
@LastEditors: Sunny Chen
@LastEditTime: 2019-10-16 16:34:48
'''

#-----》在web1.web2.web3包下的cal.py文件中
def add(x,y): #加法
    return x+y
def multi(x,y): #乘法
    return x*y
#调试cal.py文件中的函数
if __name__ = "__mian__":
    m = add(3,2)
    print(m) 
#输出为:__main__

#-----》在导入模块的文件 web_test.py文件中
from web1.web2.web3 import cal
print( __name__)
#输出为:web1.web2.web3.cal

#同时在web_test.py中不会执行cal.py中的 if __name__:"__main__" 下的内容。

快去动手试试吧!


到这里:Python模块!分享完毕了,快去试试吧!


最后

  • 更多参考精彩博文请看这里:陈永佳的博客

  • 喜欢博主的小伙伴可以加个关注、点个赞哦,持续更新嘿嘿!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/97705.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!