python基础知识——模块和包 创立和使用

前言

        在python的学习和使用过程中,我们常会用一些库如:turtle,random......这些库的本质是什么东西呢?别人又是如何建立的呢?我们在编写不同的程序过程中,常常会用一些相同的代码,但是我们又不想每次遇见的时候就打一遍,这是我们要怎样做才能使我们的代码写了一遍后能反复用呢?

        希望这篇文章能解决这些问题。

一:什么是模块?

        在程序设计的过程中,我们常用到的一个思路就是代码复用。在一个xx.py文件当中,我们会将我们需要重复使用的代码用一个函数来封装。当我们需要使用这个代码的时候,我们只需要调用这个函数,给它传入参数,就能得到我们需要的东西。

模块也是使用了类似的思想,首先我们要明确模块是一个以.py为结尾的文件。在这个文件当中我们会写一些函数。当我们需要使用其中的某些函数时,我们只需先将其导入,然后就能调用其中的函数了。说的比较空洞,举个例子。

首先我先创立一个项目a(文件夹)

然后创造一个module.py文件在里面写上一个素数筛的函数。如下图。

关于__name__=="__main__"的用法,我们在最后解释。

接下来,新建一个test.py文件来调用module.py中的pns函数。

结果是直接报错,说我们的pns没有定义。

回想我们调用其它的库的时候,是不是都要import 一下,然后使用什么东西.函数一下?我们试试。

 嗯,通过尝试我们发现,import 【我们要导入的函数的python文件的名字】然后使用的时候通过【文件名】.【函数】的形式就能使用了。这就是模块的最简单的使用方法。(然后我们这个项目中出现了一个__pycahce__文件夹,这个我也不太清楚是为啥,应该和路径的设置有关系,好像本来要在sys.path中添加包的路径的,但是有了这个后好像就不用设置了)。

        想想如果模块太多,都和我们要运行的主程序放在一起的话,那我们的项目(文件夹)里看着也太乱了。这里我们就可以再建一个文件夹用来放模块。这就是所谓的”包”或着说是“库”(可能吧,我也不太清楚这里哈哈哈哈)。

二:包。

        正如上文所言,用来存放模块的文件夹就是我们所谓的“包”了。那这个系统怎么知道这个文件夹不是普通的文件夹而是包呢?那就需要我们在这个文件夹中放置一个__init__.py 来表明这个文件夹是“包”。

        我们先试试。

 先建一个math_mine文件夹来放置我们刚刚写好的模块(module.py),然后再在其中创建一个__init__.py文件。

 现在测试一下调用。

 嗯,又成功了。(同样运行之后,在文件夹中(math_mine)又出现了__pychche__文件  )

但是,我们看这个调用函数的方式是不是特别复杂?这时我们只需将其重复名就行。如下。

 这时我们就能用一个变量代替那一长串了。

后序

 现在我们来仔细的谈谈 __name__ 方法 与 import的几种方案。

 首先对于__name__。其使用后如下。(应该是个和文件本身属性有关的方法,在“类”中我们好像也遇见过长得和它差不多的。)

 我们推理一下,如果是在本py文件中直接使用的话就会显示为“__main__”,在模块中用的话就是显示模块的名字了。所以我们需要在模块中测试的话就能写一个这样的判断。

if __name__ == "__main__":
    ##需要在这个模块中测试的代码

那样,就只就只有直接在本文件中运行的时候会执行这个测试的部分。在其它的文件中引用时估计会变为它的文件名。 

import 有几种用法如下。

一:import [模块名]

二:import [模块名] as [自定义的名字]

三:from [模块名] import [函数名]  (这种能够直接调用函数名,不需要再写 [啥啥啥] .[函数名] 了)

四:from [模块名] import [函数名] as [自定义的名字](能直接将自定义的名字作为那个函数用了)

** 注【模块名】如果在“包” 里,则要写成【【包名】.【模块名】】的形式**

小甲鱼讲的真不错!!!

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值