模块(十九章)

把定义存放在文件中,为一些脚本或者交互式的解释器实力使用,这个文件被称为模块

模块是一个包含所有你定义的函数和变量的文件,其后缀名是py模块可以被背的程序引用,以使用该模块中的函数等功能,这就是使用Python标准库的方法

可以说模块实际上就是程序

在前面咱们尝试过,如import OS

如下

>>> import os>>> type(os)<class 'module'>

import os 引用了os模块

同理,使用Python标准库的例子

>>> import sys>>> import using_sys.py命令行参数如下:
Python 路径为: ['', 'C:\\WINDOWS\\SYSTEM32\\python34.zip', 'C:\\Python34\\DLLs', 'C:\\Python34\\lib', 'C:\\Python34', 'C:\\Python34\\lib\\site-packages']

自定一个模块,代码内容如下

def name():  print("hello")

编辑好后。命名为modle.py,运行后

>>> import modle>>> modle.name()hello

想使用 Python 源文件,只需在另一个源文件里执行 import 语句,语法如下:

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

当解释器遇到import语句时,如果模块在当前的搜索路径就会被导入

搜索路径是一个解释器会先进行搜索的所有目录的列表。如想要导入模块需讲命令放在脚本顶端

例子计算摄氏度与华氏度的相互转换

#pan.pydef c2f(cel):  fan = cel *1.8  + 32  return fandef f2c(fah):  cel = (fah - 32)/1.8  return cel

在写个文件

import pan  print("32摄氏度 = %.2f" % pan.c2f(32))  print("99华氏度 = %.2f" % pan.f2c(99))

这样显得有些麻烦

from 模块名 import 函数名如下

from modname import name1[, name2[, ... nameN]]

例如,要导入模块 sa 的 name 函数,使用如下语句:

from sa import name

它不会把整个sa模块导入当前的命名空间里,只会把其对应的函数引入

from 模块名 as 新名字

from modname import *

把一个模块的所有内容全都导入到当前的命名空间也是可行的

这提供了一个简单的方法来导入一个模块中的所有项目。然而这种声明不该被过多地使用。

所以并不推荐使用

推荐使用方法

import 模块名 as 新名字【指模块的新名字,方便】

用这种方法给导入的命名空间替换一个新名字

命名空间解释;如同在一个文件里声明一个name函数,再另一个文件里再声明一个name函数,这两个函数虽然名字相同,但是却不相干,如何识别,在name函数前面加上文件名,而这个文件名加上命名空间

__name__属性

一个模块被另一个程序第一次引入时,其主程序将运行。如果我们想在模块被引入时,模块中的某一程序块不执行,我们可以用__name__属性来使该程序块仅在该模块自身运行时执行。

>>> __name__'__main__'

简单的理解,就是说__name__属性的值是__main__ 每个模块都有一个__name__属性,当其值是'__main__'时,表明该模块自身在运行,否则是被引入。

测试下面的代码

if __name__ == '__main__':   print('程序自身在运行')else:   print('我来自另一模块')

dir()内置函数dir()可以找到模块内定义的所有名称

>>> import pan>>> pan.__name__'pan'>>> dir(pan)['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'c2f', 'f2c']

path搜索路径

>>> import sys>>> sys.path['', 'C:\\WINDOWS\\SYSTEM32\\python34.zip', 'C:\\Python34\\DLLs', 'C:\\Python34\\lib', 'C:\\Python34', 'C:\\Python34\\lib\\site-packages']>>>

简单理解就是,上面咱们把建立一个文件叫做模块,其实包就是建立一个文件夹

但是文件夹是有前提条件的,Python怎么识别这个文件夹是一个包呢?

  1. 创立一个文件夹,用于存放相关模块,文件夹的名字即包的名字
  2. 在文件夹内创建一个叫做__init__.py的模块文件,内容可以是空的,也可以是初始化代码,这个是Python识别这个是个包的前提
  3. 将相关的代码放入文件夹中

原文发布于微信公众号 - 渗透云笔记(shentouyun)

原文发表时间:2019-06-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券