lightblueme

许多问题需要说清楚就可以&&走永远比跑来的重要

导航

Python 4 —— 函数与模块

函数和模块的使用

一、函数

 

一个例子说明一切。

def hello():
    print "hello world"


def increment(num):
    num += 1
    return num

默认参数

fun(,arg)是错误的,只能省略后面剩余的参数(按照声明的顺序)

可以使用None

def fun(x=None,y=None,z=None):
  ...

 

可变长参数

def fun(*arg):
  ...

使用函数作用域之外的变量,使用global声明

x=12;

def fun():
    global x
    return x+12

 

二、模块

1、模块是对函数的进一步的封装, 可以看做一个Python文件

比如通过一个模块对许多数学函数进行了封装,例如为module.py

在另一个test.py中要对其引用,可以使用 import module,从而可以在test.py中调用module中的函数,比如

module.sin(x)

module.cos(x)

注意这里仍然需要使用模块名名称空间来引用其中声明的函数

2、模块的独立运行

每一个脚本在运行时都有一个__name__属性。

如果是作为模块被导入,那么是模块名;如果是独立运行则设置为__main__。我们可以通过这点来对模块设置独立的测试程序

##content of module
...
...
...
## test of the module
if __name__ == '__main__':
    ##content of test

 

三、模块包

举个例子

 上图展示了一个使用模块的例子当中,文件的组织方式,缩进表示文件夹对文件夹,或者文件夹对问价的包含关系。

所谓模块实际上就是包含了许多python源文件的目录,例如上面的p1文件夹,为了显示表明他是一个python模块,在这个文件夹下添加一个__init__.py空文件,用于??????

这样当我们在test.py当中要引用这个模块当中的函数或者类的到时候,可以直接使用

from p1 import *

当我们在命令行下,敲入

python test.py

会发现在p1目录下多了一个文件,那是???.pyc, 那是字节码文件,类似于Java的编译方式,所以跨平台

# hi.py
# print hello world


def hello():
    print "hello world"


def increment(num):
    num += 1
    return num


class MyException(Exception):
    def __init__(self, data):
        self.data = data

    def __str__(self):
        return self.data
# test.py

from p1.hi import *

hello()

num = increment(1)

print num

try:
    raise MyException, 'Error'
except MyException, data:
    print data
else:
    print 'ok'

 

posted on 2015-06-13 10:23  lightblueme  阅读(226)  评论(0编辑  收藏  举报