菜鸟学python-基础(3)

模块
模块就是把一组相关的函数或代码组织到一个文件中,即一个文件就是一个模块。模块是由代码、类和函数组成的,其中类和函数可以有0个或多个。
新建一个firstModule.py,即定义了一个名为firstModule的模块。在该模块定义两个函数和一个类,并在该类中定义一个方法,代码如下:
# _*_ coding:utf-8 _*_
# 自定义模块

def function_one():
    print 'firstModule function_one()'

def function_two():
    print 'firstModule function_two()'

class FirstClass:
    def __init__(self):
        pass

    def first_class_function(self):
        print 'firstModule FirstClass first_class_function()'
另外再新建一个名为ex.py的文件,在其中输入如下代码,调用firstModule模块的函数和类:
import firstModule


firstModule.function_one()
firstModule.function_two()
firstClass = firstModule.FirstClass()
firstClass.first_class_function()
输出如下:
firstModule function_one()
firstModule function_two()
firstModule FirstClass first_class_function()

模块的导入
在前面的例子中,我们知道导入模块需要使用import语句。格式如下:
import module_name
这样可以导入一个模块,要调用模块已经定义的函数,需要使用:
module_name.function_name
要调用模块中的类,需要创建类的对象,然后再通过类对象调用类中的方法。语法格式如下:
class_object=module_name.class_name
class_object.class_function_name
这种方式比较麻烦,每次调用模块中的函数或类时,都需要使用模块名作为前缀。所以,为了解决这种麻烦,python中的from...import..语句可以将模块中的类或函数导入,而不需要使用模块名作为前缀,格式如下:
from module_name import function_name
注意:虽然这样减少了代码的编写,但是降低了代码的可读性。
导入一个模块下的所有类和函数,可以使用如下语句:
from module_name import *

模块属性
python中的每个模块都有一些特定的属性,用于完成某项任务。常用的两个模块属性:
1)__name__属性
__name__属性用于判断当前模块是不是程序入口。如果当前程序正在被使用,__name__的值为__main__。
2)__doc__属性
python中的模块是一个对象,而每个对象都会有一个__doc__属性,该属性用于描述该对象的作用。

模块的内置函数
python提供了一个内联模块-buildin,该模块中定义了许多函数。
1)apply()函数
apply()函数可以实现调用可变参数列表的功能,把函数的参数存放到一个元组或序列中。apply()函数的语法格式如下:
apply(function_name [, args [, kwargs]])
参数function_name所表示函数的返回值就是apply()函数的返回值,apply()函数有如下几个参数。
function_name:该参数是必须的,表示自定义的函数的名称。
args:该参数是可选的,它是一个包含了自定义函数参数的列表和元组。如果不指定该参数,则表示被执行的函数没有任何参数。
kwargs:该参数是可选的,它是一个字典类型的参数,字典中的key值为函数的参数名称,value值为实际参数的值。
下面是一个例子:
def login(username, password):
    message = ''
    if(username == 'admin') and (password == 'admin'):
        message = 'login success.'
    else:
        message = 'login error!'
    return message


print apply(login, ('admin', 'admin'))
结果:
login success.

2)filter()函数
filter()函数可以对序列做过滤处理,简单来说就是用函数过滤一个序列,把序列的每一项传递到过滤函数。对自定义函数的参数返回的结果是否为True做过滤,并一次性返回处理结果。如果过滤函数返回的结果为False,那么该元素将从列表中删除该项。filter()函数的语法格式如下:
filter(function_name, sequence)
该函数有两个参数:
function_name:该函数是必须的,它是自定义函数,在函数function_name()中定义过滤的规则。如果function_name()函数的返回值为None,则表示sequence序列中的每一项都为True,从而返回左右的序列元素。
sequence:该参数也是必须的,表示要过滤的序列。
例子:
# _*_ coding:utf-8 _*_
# 验证用户名的函数validate(), 长度在4-12之间
def validate(username):
    if(len(username) > 4) and (len(username) < 12):
        return username


# 调用filter(), 过滤validate()函数中的元组参数
print filter(validate, ('admin', 'root', 'aaron'))
结果:
('admin', 'aaron')

注意:

filter()中的过滤函数function_name的参数不能为空,否则没有可存储sequence元素的变量,function_name()也不能处理过滤。

要想在注释中使用中文,必须在.py文件的第一行加上# _*_ coding:utf-8 _*_,否则会报SyntaxError: Non-ASCII character... 异常。


3)reduce()函数
reduce()函数可以实现连续处理的功能。例如,对某个序列中的元素进行累加操作。reduce()函数的语法格式如下:
reduce(function_name, sequence[ , initial])
reduce()函数有3个参数:
function_name:该参数是必须的,表示自定义的函数名称,在函数function_name()中实现对参数sequence的连续操作。
sequence:该参数也是必须的,表示待处理的序列。
initial:该参数是可选的,如果指定了该参数的值,则initial所指定的值将首先被传入function_name()函数中进行计算。如果sequence参数的值为空,则对initial所指定的值进行处理。

例子:

# _*_ coding:utf-8 _*_
# 定义计算两个数相乘的函数multiply()
def multiply(x, y):
    return x*y


# 使用reduce()函数,对元组中的每一项进行计算,最后将结果返回
print reduce(multiply, (1, 2, 3, 4, 5, 6))
print reduce(multiply, (7, 8), 5)

结果:
720
280
第一个结果为1*2*3*4*5*6连乘的结果。第二个结果为5*7*8的结果。
注意:使用reduce()函数进行累加计算时,必须为reduce()函数中的function_name()函数提供两个参数,分别对应运算符两侧的操作数。

4)map函数
map()函数可以对多个序列中的每个元素执行相同的操作,并返回一个与输入序列长读相同的列表。其中,每一个元素都是对输入序列中相应位置的元素转换的结果。map()函数的语法格式如下:
map(function_name, sequence[, sequence, ...])
其中参数function_name表示自定义函数的名称,实现对序列中每个元素的操作。sequence参数表示待处理的序列,该参数可以为多个。如果传给map()的函数参数接受多个参数,那么就可以给map()传递多个序列,如果这些传进来的序列长度不一样,那么会在短的序列后面补None。函数参数还可以是None,这时就会用序列参数中的元素生成一个元组的序列。下面是使用map()函数的实例:
def add_one(a):
    return a + 1

def add_two(a, b):
    return a + b

def add_three(a, b, c):
    return a + b + c

a = [1, 2, 3, 4, 5]
b = [1, 2, 3, 4, 5]
c = [1, 2, 3, 4, 5]

result = map(add_one, a)
print result
result = map(add_two, a, b)
print result
result = map(add_three, a, b, c)
print result
结果:
[2, 3, 4, 5, 6]
[2, 4, 6, 8, 10]
[3, 6, 9, 12, 15]

转载请注明出处: http://blog.csdn.net/iAm333

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值