Python基础刻意练习:模块

参考链接

什么是模块

模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py。模块可以被别的程序引入(import 关键字),以使用该模块中的函数等功能。这也是使用 python 标准库的方法。
模块实际上对应于程序文件

对比

  • 容器 -> 数据的封装
  • 函数 -> 语句的封装
  • 类 -> 方法和属性的封装
  • 模块 -> 程序文件

命名空间问题

分类:

  • 内置命名空间(Built-in Namespaces):Python运行起来,它们就存在了。内置函数的命名空间都属于内置命名空间,所以,我们可以在任何程序中直接运行它们,比如id(),不需要做什么操作,拿过来就直接使用了。
  • 全局命名空间(Module:GlobalNamespaces):每个模块创建它自己所拥有的全局命名空间,不同模块的全局命名空间彼此独立,不同模块中相同名称的命名空间,也会因为模块的不同而不相互干扰。
  • 本地命名空间(Function & Class:LocalNamespaces):模块中有函数或者类,每个函数或者类所定义的命名空间就是本地命名空间。如果函数返回了结果或者抛出异常,则本地命名空间也结束了。

版权声明:本文为CSDN博主「老马的程序人生」的原创文章,遵循 CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/LSGO_MYP/article/details/102925235
在这里插入图片描述

程序在查询上述三种命名空间的时候,就按照从里到外的顺序,即:Local Namespaces --> Global Namesspaces --> Built-in Namesspaces,三种关系的递进通过.操作符实现

很有意思的例子,再IDLE中

>>> str
<class 'str'>
>>> str=1
>>> str
1
>>> del str
>>> str
<class 'str'>
>>> 

引入模块的方法

import 模块名
from 模块名 import 函数名其衍生为:不推荐这种写法 from TemperatureConversion import *容易造成混乱
import 模块名 as 新名字

if __name__ == '__main__'

判断当前执行的模块是否是主模块,也就是该模块并非由import导入了其他程序,而是主要运行。

搜索路径

python在此路径寻找模块,该模块与环境变量设置有关(好像?—?),搜索路径被存储在 sys 模块中的 path 变量中。

import sys

print(sys.path)

# ['C:\\ProgramData\\Anaconda3\\DLLs', 'C:\\ProgramData\\Anaconda3\\lib', 'C:\\ProgramData\\Anaconda3', 'C:\\ProgramData\\Anaconda3\\lib\\site-packages',...]

包(package)

通过pip install 下载的模块实际上也大多就是包。
包一种文件路径结构:

sound/                          顶层包
      __init__.py               初始化 sound 
      formats/                  文件格式转换子包
              __init__.py
              wavread.py
              wavwrite.py
              aiffread.py
              aiffwrite.py
              auread.py
              auwrite.py
              ...
      effects/                  声音效果子包
              __init__.py
              echo.py
              surround.py
              reverse.py
              ...
      filters/                  filters 子包
              __init__.py
              equalizer.py
              vocoder.py
              karaoke.py
              ...

目录只有包含一个叫做 __init__.py 的文件才会被认作是一个包,最简单的情况,放一个空的 __init__.py 就可以了。

导入子模块的方法

import sound.effects.echo
这将会导入子模块 sound.effects.echo。 他必须使用全名去访问:

sound.effects.echo.echofilter(input, output, delay=0.7, atten=4)

from sound.effects import echo
这种方法不需要全名访问

echo.echofilter(input, output, delay=0.7, atten=4)

from sound.effects.echo import echofilter
则直接调用函数

echofilter(input, output, delay=0.7, atten=4)

————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
如果我们使用 from sound.effects import * 会发生什么?

Python 会进入文件系统,找到这个包里面所有的子模块,一个一个的把它们都导入进来。
在这里插入图片描述

实例:

模块冲突

在这里插入图片描述

模块常量

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值