菜鸟学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

时间: 2024-10-27 01:18:48

菜鸟学python-基础(3)的相关文章

菜鸟学Python第十七天

菜鸟学python第十七天 1.logging 模块 logging模块即日志记录模块 用途:用来记录日志 为什么要记录日志: 为了日后复查,提取有用信息 如何记录文件 直接打开文件,往里写东西 直接写入文件的两个问题:(logging模块解决这两个问题) 你写的数据格式 别人看不懂 解析数据模块 logging的使用 logging模块的两种记录日志的方式 使用logging提供的模块级别函数 使用logging日志系统四大组件 <!--本质上logging模块级别函数日志记录就是对日志系统四

菜鸟学python(11)list列表基本操作

想写点东西把自己学习python的过程记录下来,于是就有了菜鸟学python... list列表是在编写程序中经常用到,是用来处理一组有序项目的数据结构. 比如说range(1,5)其实就是个整数列表 所以 for x in range(1,5) 可以写成 for x in [1,2,3,4] 下面是一些列表的常见基本操作 首先创建一个空列表list list = [] 用append向这个列表里面添加一个值 list.append(1) #向list里面添加1 可以通过extend向list中

菜鸟学Python训练营第一期练习题

菜鸟学Python训练营第一期练习题 1.比如自然数10以下能被3或者5整除的有,3,5,6和9,那么这些数字的和为23. 求能被3或者5整除的1000以内数字的和 1 multiple_of_threes=[] 2 for multiple_of_three in range(0,1001,3): 3 multiple_of_threes.append(multiple_of_three) 4 sum_of_threes=sum(multiple_of_threes) 5 print(mult

带你学python基础:模块和包

一.什么是模块 在我们平时的开发过程中,或多或少会用到 Python 的一些内置的功能,或者说,还会用到一些第三方的库,我们用到的这些 Python 的内置的功能,和一些第三方的库,就可以说是一些模块了. 例如,我们在读写文件的时候,我们就会用到文件操作的模块os. 是不是经常遇到呢?模块,来了! 其实,每一个 Python 脚本文件都可以被当成是一个模块. 模块以磁盘文件的形式存在.当一个模块变得过大,并且驱动了太多功能的话,就应该考虑拆一些代码出来另外建一个模块. 模块里的代码可以是一段直接

菜鸟学python之类和对象

我们把一类相同的事物叫做类,其中相同事物相同的属性可以抽象出来,而一些相同的动作行为,也可以抽象成方法. 比如,汽车是一个类,它包括价格.品牌等属性.那么我们需要打印某一辆车的价格和品牌,只需要使用一句代码 print "the car's type 'ford',price:280000",但是当我们需要对一百个品种的车打印这句话的时候,怎么办呢? 这个问题我们通过以前学过的函数式编程就可以实现啦!我们只需要写一个类,然后将不同的车品牌和价格以参数的方式传到类里就好了.这样大大的提高

小白入门必学Python基础语法

最近开发中用到Python比较多,所以将Python的基础语法总结出来供Python入门者学习. Unicode Unicode(统一码.万国码.单一码)是计算机科学领域里的一项业界标准,包括字符集.编码方案等.Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言.跨平台进行文本转换.处理的要求.Unicode规定所有的字符和符号最少由16位来表示(2个字节),即:2**16=65536 UTF-8 UTF-8(8-bi

菜鸟学Python第一天(简介)

Python简单介绍 Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言.python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构.  Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节.类似于PHP和Perl语言. Python 是交互式语言: 这意味着,您可以在一个Python提示符,直接互动执行写你的程序. Python 是面向对象语言: 这意味着Python支持面向对象的风

十分钟学python基础语法01

# python官网:http://www.python.org/ # Tuple用( )标识.List用[ ]标识.Dictionary用{ }标识 # 除非对input有特别的需求,否则应该尽量可能使用raw_input函数 # 改变终端字体颜色与型号:http://blog.csdn.net/gatieme/article/details/45439671 ## 后的事项为各部分标题,各部分内容可直接根据标题进行索引 ## 一.前提事项 ## 二.编程模式 ## 三.基本格式 一.前提事项

一起学python基础一

1.变量 a = 30+40 "a" 为变量名 "="为赋值 30+40 为值 ?变量命名规则 1.变量由字母,数字,下划线组成 (空格属于特殊字符) 2.变量不能以数字开头 3.禁止使用python中关键字 4.不能使用中文和拼音 5.变量名要区分大小写 6.变量名要有意义 7.推荐写法: 1.驼峰体 1.大驼峰 AgeOfOldboy = 56 2.小驼峰 ageOfOldboy = 56 2.下划线 age = 18 age1 = age age2 = age

菜鸟学Python第二十二天

面向对象的三大特性之继承 什么是继承 继承是一种创建新类的方式,新建的类可以继承一个或者多个父类(python支持多继承),父类又可以称为基类又或超类,新建的类称为派生类或者子类. 子类会'遗传'父类的属性(特征和技能),从而解决代码重用的问题 class Father: # 父类 height = tall class Son(Father): # 子类,需要将父类传入 pass ? print(Son.height) #子类直接调用的父类中的属性 继承与抽象 继承描述的是子类与父类之间的关系