您的位置:首页 > 编程语言 > Python开发

Python程序设计5——函数

2013-08-06 09:15 232 查看
  本章介绍Python中模块和函数的概念。

  Python程序是由包、模块和函数三者组成,包是由一系列模块组成的集合,模块是处理某一类问题的函数和类的集合。Python提供的许多工具包和模块安装在Python的安装目录下的lib子目录中。例如,在Python安装目录下lib目录下,有一个sqlite3文件夹,该文件夹就是一个包,这个包用于完成连接sqlite3数据库的基本操作。在sqlite3文件夹下有一个test的子包,还有一个_init_.py文件,该文件是sqlite3包的注册文件,如果没有该文件,Python将不能识别sqlite3包。包必须至少包含一个_init_.py文件,该文件的内容可以为空。_init_.py用于标识当前文件夹是一个包。

'''
Created on 2013-8-5

@author: Landau
'''

class MyClass:
'one String'
def printHello(self):
'print hello world'
print 'HELLO WORLD'
print MyClass.__doc__
print MyClass.printHello.__doc__
输出结果:
one String
print hello world


View Code
可以看到__doc__提取了程序的字符串属性

2.4 模块的内置函数

  在buildin模块中定义了许多在软件开发过程中经常用到的函数,利用这些函数可以实现数据类型的转换、数据的计算、序列的处理等功能。下面介绍内联模块中常用的函数。
1.apply()函数
  apply()函数可以实现调用可变参数列表的功能,把函数的参数放到一个元组或序列中。apply()函数的语法格式如下:
  apply(function_name[,argslist])
该函数有三个参数:
function_name:该参数是必须的,表示自定义函数的名称
args:该参数是可选的,它是一个包含了自定义函数参数的列表和元组,如果不指定该参数,则表示被执行的函数没有任何参数
kwargs:该参数可选,它是一个字典类型的参数,字典中key值为函数的参数名称,value为实际参数的值。

def login(userName, password):
msg = ''
if(userName == 'admin') and (password == 'admin'):
msg = 'Login Successfully'
return msg
else:
msg = 'Login Failed'
return msg
print apply(login, ('admin', 'admin'))
运行结果:Login Successfully


apply函数的元组参数是有序的,本例中,元素的顺序必须与login函数的形式参数顺序一致。

2.filter函数
  filter函数可以对序列做过滤处理,简单的说就是用函数来过滤一个序列,把序列的每一项传递到过滤函数。对自定义函数的参数返回的结果是否为True做过滤,并一次性返回处理结果,如果过滤函数返回的结果为False,那么该元素将从列表中删除该项。filter函数语法格式如下:
filter(function_name,sequence)
filter函数有两个参数,其中:
function_name是必须的,是自定义函数,在函数function_name中定义过滤规则,如果function_name函数的返回值为None,则表示sequence序列中的每一项都为True,从而返回左右的序列元素。
sequence:必须的,表示要过滤的序列
  filter函数的返回值由function_name函数的返回值决定,该函数返回所有为True的过滤项组成的序列,返回值的类型与参数sequence类型相同。例如参数sequence的类型为元组,那么返回值类型也是元组,下面介绍filter函数使用方法:

def validate(usernames):
if (len(usernames) > 4) and (len(usernames) < 20):
return usernames
print filter(validate, ('admin','hello', 'hel','ddfdlj'))
输出结果:('admin', 'hello', 'ddfdlj')


3.reduce函数

  reduce函数可以实现连续处理功能,例如,对某个序列中的元素进行累加操作,语法格式如下:
reduce(function_name,sequence)
下面看一个连续相乘的例子:

def operat(x,y):
return x*y
print reduce(operat, (1,2,3,4,5,6))
print reduce(operat, (2,3,4), 5)
输出结果:
720
120


4.map函数

  map函数可以对多个序列中的每个元素执行相同的操作,并返回一个与输入序列长度相同的列表。
map(function_name, sequence[,sequence,....])
  序列的长度可以不一样,系统会自动给短序列后面补None

def add1(a):
return a + 1
def add2(a, b):
return a + b
def add3(a, b, c):
return a + b + c
a1 = [1, 2, 3, 4, 5]
a2 = [1, 2, 3, 4, 5]
a3 = [1, 2, 3, 4, 5]

b = map(add1, a1)
print b

c = map(add2, a1, a2)
print c

d = map(add3, a1, a2, a3)
print d
输出结果:
[2, 3, 4, 5, 6]
[2, 4, 6, 8, 10]
[3, 6, 9, 12, 15]


  注意:如果map提供了多个序列,则每个序列中的元素一一进行处理,然后将处理后的元素再组成一个序列
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: