Python语言学习:模块

一、模块

1. 模块(Module):以.py结尾的文件,包含python对象定义和python语句。使代码段更容易理解和使用。

                                  模块分为两种:标准库(直接导入的库)和第三方库(需要下载安装的库)。

2. 模块的引入

a. import语句:当解释器遇到import语句,如果模块在当前的搜索路径就会被导入。搜索路径是一个解释器会先进行搜索的所有目录的列表。

                         如果想要导入模块support.py,需要把命令放在脚本的顶端。

import module
例如:import sys

 b.from...import语句:从模块中导入一个指定的部分到当前命名空间中。

from modname import name

c.from...import * 语句:把一个模块的所有内容全部导入到当前的命名空间也是可行的

from modname import *

 

3.索引路径:当导入一个模块,python解析器对模块位置的搜索顺序如下:

a.当前目录

b.如果不在当前目录,python则搜索在shell变量PYTHONPATH下的每个目录

c.如果还找不到,python会察看默认路径,Unix下,默认路径是/usr/local/lib/python/

模块搜索路径存储在system模块的sys.path变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。

 

4. PYTHONPATH变量:作为环境变量,PYTHONPATH由装在一个列表里的许多目录组成。PYTHONPATH的语法和shell变量PATH一样。

 a. 在windows系统,典型的PYTHONPATH如下:

set PYTHONPATH= c:\python27\bin;
具体看安装的默认路径

 b.在Unix系统,典型的PYTHONPATH如下:

set PYTHONPATH = /usr/local/lib/python
具体看安装的默认路径

  

5.命名空间和作用域

a. 变量是拥有匹配对象的名字(标识符)。

    命名空间是一个包含了变量名称(键)和它们各自相对应的对象(值)的字典。

    一个python表达式可以访问局部命名空间和全局命名空间里的变量。如果一个局部变量和全局变量重名,则局部变量会覆盖全局变量。

    每个函数都有自己的命名空间。类的方法的作用域规则和通常函数一样。

    python会智能的猜测一个变量是局部还是全局。它假设任何函数内赋值的变量都是局部的。因此,如果给函数内的全局变量赋值,需要使用到global语句。这个语句会告诉python这个变量是全局变量。

    如果不给函数的变量前加global,那么久会报UnboundLocalError的错误,如下:

# Author:Crystal
#!/usr/bin/env python
Money = 2000
def AddMoney():
  # 需要加入global Money这个声明,python才知道以下这个Money和上面定义的局部变量Money不同,这个是全局变量Money Money = Money +1 #UnboundLocalError: local variable 'Money' referenced before assignment print (Money) AddMoney() print (Money)

  

6. dir()函数:一个排好序的字符串列表,内容是一个模块里定义过的名字

#! /usr/bin/evn python

import math     #导入内置math模块
content = dir(math)
print (content) 

备注:特殊字符串变量_name_指向模块的名字,_file_指向该模块的导入文件名

 

7.globals()和locals()函数:可被用来返回全局和局部命名空间里的名字。

   如果在函数内部调用locals(),返回的是所有能在该函数里访问的命名

   如果在函数内部调用globals(),返回的是所有在该函数里能访问的全局名字

   两个函数的返回类型都是字典。所以名字们能用key()函数摘取

 

8. reload()函数:重新导入之前顶层的代码进行执行的操作。

reload(module_name)

  

  9. python中的包:是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的python的应用环境。

                               简单来说,包就是文件夹,但该文件夹下必须存在_init_.py文件,该文件的内容可以为空。_init_.py用于标识当前文件夹是

                               一 个包。包由类组成,类是一个文件中放置很多函数组成。

 

10. 模块例子:

# Author:Crystal
#! /usr/bin/env python

'''import sys
#print(sys.path)    #path是打印环境变量
print(sys.argv)    #argv打印绝对路径

import os
#cmd_res= os.system("dir")    #os.system只是执行命令,不保存结果
cmd_res= os.popen("dir").read()   #os.popen可以执行命令并保存结果,read()是将结果读取出来
print(cmd_res)
os.mkdir("new_dir")     #os.mkdir增加新的文件夹'''

import login       #调用同一个目录下的文件,如果调用的文件和此文件不在同一个目录,就把被调用的文件放置在第三方库的目录下进行调用

 

部分内容摘录自菜鸟课程:https://www.runoob.com/python/

 

posted @ 2020-02-01 13:24  黑球西西  阅读(295)  评论(0编辑  收藏  举报