【python和c先学哪个】python中模块的学习笔记

更新时间:2019-10-11    来源:python    手机版     字体:

【www.bbyears.com--python】


模块是Pyhon最高级别的程序组织单元,它将程序代码和数据封装起来以便重用。实际的角度,模块往往对应Python程序文件。

模块名.函数名

为什么必须加上模块名这样调用呢?因为可能存在这样一种情况:在多个模块中含有相同名称的函数,此时如果只是通过函数名来调用,解释器无法知道到底要调用哪个函数。所以如果像上述这样引入模块的时候,调用函数必须加上模块名。


import math

#这样会报错
print sqrt(2)

#这样才能正确输出结果
print math.sqrt(2)


有时候我们只需要用到模块中的某个函数,只需要引入该函数即可,此时可以通过语句

from 模块名 import 函数名1,函数名2....

使用sys模块


#!/usr/bin/python
# Filename: using_sys.py
 
import sys
 
print "The command line arguments are:"
for i in sys.argv:
    print i
 
print "\n\nThe PYTHONPATH is", sys.path, "\n"
$ python using_sys.py we are arguments
The command line arguments are:
using_sys.py
we
are
arguments

The PYTHONPATH is ["/home/swaroop/byte/code", "/usr/lib/python23.zip",
"/usr/lib/python2.3", "/usr/lib/python2.3/plat-linux2",
"/usr/lib/python2.3/lib-tk", "/usr/lib/python2.3/lib-dynload",
"/usr/lib/python2.3/site-packages", "/usr/lib/python2.3/site-packages/gtk-2.0"]

Python模块都有它的__name__,如果它是’__main__’,这说明这个模块被用户单独运行,我们可以进行相应的恰当操作

创建模块:


#!/usr/bin/python
# Filename: mymodule.py
 
def sayhi():
    print "Hi, this is mymodule speaking."
 
version = "0.1"
 
# End of mymodule.py
 
#!/usr/bin/python
# Filename: mymodule_demo.py
 
import mymodule
 
mymodule.sayhi()
print "Version", mymodule.version
$ python mymodule_demo.py
Hi, this is mymodule speaking.
Version 0.1

下面是一个使用from..import语法的版本。


#!/usr/bin/python
# Filename: mymodule_demo2.py
 
from mymodule import sayhi, version
# Alternative:
# from mymodule import *
 
sayhi()
print "Version", version

输出结果和上一个例子一样。
dir()函数

你可以使用内建的dir函数来列出模块定义的标识符。标识符有函数、类和变量。
当你为dir()提供一个模块名的时候,它返回模块定义的名称列表。如果不提供参数,它返回当前模块中定义的名称列表。

定义自己的模块

在Python中,每个Python文件都可以作为一个模块,模块的名字就是文件的名字。

比如有这样一个文件test.py,在test.py中定义了函数add:

#test.py

def add(a,b):
    return a+b
那么在其他文件中就可以先import test,然后通过test.add(a,b)来调用了,当然也可以通过from test import add来引入。

三.在引入模块的时候发生了什么

先看一个例子,在文件test.py中的代码:


#test.py

def display():
    print "hello world"
   
display()
   

在test1.py中引入模块test:

#test1.py

import test

然后运行test1.py,会输出"hello world"。也就是说在用import引入模块时,会将引入的模块文件中的代码执行一次。但是注意,只在第一次引入时才会执行模块文件中的代码,因为只在第一次引入时进行加载,这样做很容易理解,不仅可以节约时间还可以节约内存


模块导入

1、import语句

推荐:

import放在程序前面,且按照Python标准库模块、Python第三方模块、自定义模块的顺序从上到下排开。

2、from-import语句

可以导入模块中指定属性:from module import name1[,nam2[,...nameN]]

注意:

(1)、导入可使用\进行换行,

如:from module import nam1,name2,\
name3,name4....

(2)、不推荐from module import *

(3)、使用as更换名称:

from module import name1 as name2

3、模块导入的特征

(1)、载入时执行模块,也就是导入模块的顶层代码将会被执行,通常包括该模块内全局变量、类和函数的声明。我们尽可能多的把代码封装到函数中,这是良好的模块编程习惯。

(2)、一个模块可被导入(import)多次,但是只加载(load)一次.

4、模块内建函数

(1)、__import__():导入模块的函数

import语句实际上调用__import__()函数

如果我们有一个testa.py文件,我们可以用module=__import__("testa")来导入它。这样可以用module.属性来使用testa.py中的属性

 

三、包

 

 1、包的概念

 

包是一个有层次的文件目录结构,由模块和子包组成。

 

python中模块的学习笔记

 

python中模块的学习笔记

 

2、解析包机制:  代码如下 每一个.py文件称为一个module,module之间可以互相导入
module可以定义在包里面.Python定义包的方式稍微有点古怪,假设我们有一个parent文件夹,该文件夹有一个child子文件夹.child中有一个module a.py . 如何让Python知道这个文件层次结构?很简单,每个目录都放一个名为_init
_.py 的文件.该文件内容可以为空.这个层次结构同上:

本文来源:http://www.bbyears.com/jiaocheng/72589.html