初识Python之模块

版权声明:本博所有原创内容不得私自引用转载。若您需要引用、转载,只需要注明来源及原文链接即可。如涉及大面积转载,请来信告知,获取授权。 https://blog.csdn.net/weixin_44568922/article/details/86688818

关注公众号:Python互助小组
一起学习,共同进步
里面有不定期的赠书活动哦
公众号:Python互助小组 或者搜索python_group

模块

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

我们来写一个hello.py文件(创建文件参考环境搭建)

里面的内容为:

def hello(name):
    print ("Hello : ", name)
    return

我们在创建一个文件:import_hello.py

import hello

hello.hello('TOM')

运行import_hello.py文件,输出:

Hello : TOM

引用均来自菜鸟教程

一个模块只会被导入一次,不管你执行了多少次import。这样可以防止导入模块被一遍又一遍地执行。

当我们使用import语句的时候,Python解释器是怎样找到对应的文件的呢?

这就涉及到Python的搜索路径,搜索路径是由一系列目录名组成的,Python解释器就依次从这些目录中去寻找所引入的模块。

这看起来很像环境变量,事实上,也可以通过定义环境变量的方式来确定搜索路径。

搜索路径是在Python编译或安装的时候确定的,安装新的库应该也会修改。

当然还能使用内置的模块

import time
import sys

模块除了方法定义,还可以包括可执行的代码。这些代码一般用来初始化这个模块。这些代码只有在第一次被导入时才会被执行。

每个模块有各自独立的符号表,在模块内部为所有的函数当作全局符号表来使用。

所以,模块的作者可以放心大胆的在模块内部使用这些全局变量,而不用担心把其他用户的全局变量搞花。

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

# Filename: using_name.py

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

运行输出如下:

$ python using_name.py(路径要对)
程序自身在运行

$ python
>>> import using_name
我来自另一模块

>>>

包是一种管理 Python 模块命名空间的形式,采用"点模块名称"。

比如一个模块的名称是 A.B, 那么他表示一个包 A中的子模块 B 。

目录只有包含一个叫做 init.py 的文件才会被认作是一个包,主要是为了避免一些滥俗的名字(比如叫做 string)不小心的影响搜索路径中的有效模块。

这里给出了一种可能的包结构(在分层的文件系统中):

来自菜鸟教程
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
          ...

来自菜鸟教程

用户可以每次只导入一个包里面的特定模块,比如:

import sound.effects.echo

这将会导入子模块:sound.effects.echo。

他必须使用全名去访问:

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

还有一种导入子模块的方法是:

from sound.effects import echo

这同样会导入子模块:echo,并且他不需要那些冗长的前缀,所以他可以这样使用:

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

还有一种变化就是直接导入一个函数或者变量:

from sound.effects.echo import echofilter

同样的,这种方法会导入子模块: echo,并且可以直接使用他的 echofilter() 函数:

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

pip

安装三方库包

在cmd中去安装三方的类库包

pip install 包名

举例:

pip install Django==2.1.5

更新pip

pip install -U pip

查看版本号:

pip --version
pip 18.1 from c:\python37\lib\site-packages\pip (python 3.7)

卸载包:

pip uninstall 包名

关注公众号:Python互助小组
一起学习,共同进步
里面有不定期的赠书活动哦
关注公众号:Python互助小组 或者搜索python_group

猜你喜欢

转载自blog.csdn.net/weixin_44568922/article/details/86688818