Python 总结:进阶1
来源:互联网 发布:amv格式视频软件 编辑:程序博客网 时间:2024/04/20 07:39
Python 总结:进阶1
- Python 总结进阶1
- 函数参数传递
- 字典
- 循环对象
- 生成器
- 函数对象
- 一些特殊的内置函数
1. 函数参数传递
对于基本数据类型,是值传递,变量传递给函数后函数在内存复制一个新的变量,再对这个新的变量操作,原变量不受影响。
对于表这种变量,是指针传递,类似C/C++中指针的概念,传的是地址。
2. 字典
定义一个字典:
dic = {}dic = {'tom':11, 'sam':57,'lily':100}
字典不能通过下标来引用元素,只能是通过键:
dic['tom'] = 30
3. 循环对象
循环对象包含一个next()方法(在python3中是__next__()方法)每次都会返回到下一个结果,在结束一系列结果之后,举出StopIteration错误:
# 以下代码在终端输入,通过文件运行,注意下面是python3的输入方式>>>f = open('test.txt')>>>f.__next__()>>>f.__next__()
4. 生成器
编写生成器和函数类似,只是在return的地方改为yield。生成器中可以有多个yield。当生成器遇到一个yield时,会暂停运行生成器,返回yield后面的值。当再次调用生成器的时候,会从刚才暂停的地方继续运行,直到下一个yield。生成器自身又构成一个循环器,每次循环使用一个yield返回的值:
def gen(): a = 100 yield a a = a*8 yield a yield 1000for i in gen(): print i""" 运行结果如下: 100 800 1000"""
5 函数对象
lambda函数,可以利用lambda函数的语法定义函数:
func = lambda x,y: x+yprint(func(1,3))
函数可以作为一个对象,进行参数传递。函数名(比如func)即该对象:
def test(f, a, b): print 'test' print f(a, b)test(func, 3, 5)
6. 一些特殊的内置函数
map()函数:下面例子中map()有两个参数,一个是lambda所定义的函数对象,一个是包含有多个元素的表。map()的功能是将函数对象依次作用于表的每一个元素,每次作用的结果储存于返回的表re中:
# map()的功能是将函数对象依次作用于表的每一个元素,每次作用的结果储存于返回的表re中。re = map((lambda x: x+3),[1,2,3])# map()将每次从两个表中分别取出一个元素,带入lambda所定义的函数。re = map((lambda x,y: x+y),[1,2,3],[6,7,8])"""在Python 3.X中,map()的返回值是一个循环对象。可以利用list()函数,将该循环对象转换成表。所以运行结果如下:>>> list(re)[7, 9, 11]"""
filter()函数:filter函数的第一个参数也是一个函数对象。它也是将作为参数的函数对象作用于多个元素。如果函数对象返回的是True,则该次的元素被储存于返回的表中。需要注意的是,在Python 3.X中,filter返回的不是表,而是循环对象:
def func(a): if a > 100: return True else: return Falseprint filter(func,[10,56,100,200,300])"""Python3下应该写成:re = list(filter(func,[10,56,100,200,300]))print(re)运行结果:[200,300]"""
reduce()函数:reduce函数的第一个参数也是函数,但有一个要求,就是这个函数自身能接收两个参数。reduce可以累进地将函数作用于各个参数。下例中,reduce的第一个参数是lambda函数,它接收两个参数x,y, 返回x+y。reduce将表中的前两个元素(1和2)传递给lambda函数,得到3。该返回值(3)将作为lambda函数的第一个参数,而表中的下一个元素(5)作为lambda函数的第二个参数,进行下一次的对lambda函数的调用,得到8。依次调用lambda函数,每次lambda函数的第一个参数是上一次运算结果,而第二个参数为表中的下一个元素,直到表中没有剩余元素。
print(reduce((lambda x,y: x+y),[1,2,3,4,5]))"""提醒: reduce()函数在3.0里面不能直接用的,它被定义在了functools包里面,需要引入包。运行结果是:(((1+2)+3)+4)+5=15"""
Reference:http://www.cnblogs.com/vamei
- Python 总结:进阶1
- python进阶知识总结
- Python基础进阶1
- python进阶1
- Python 进阶 +1
- Python进阶_6.爬虫中总结的Python
- python进阶--性能优化1
- python 进阶学习之1
- Python 进阶学习笔记1
- python进阶(1)基础
- c语言进阶总结1
- Oracle进阶总结(1)
- Python进阶
- Python进阶
- Python 进阶
- Python进阶
- Python进阶
- Python -- 进阶
- 文章标题
- mac升级后导致apache无法使用
- JS单页面应用实现前端路由(hash)
- BMC IPMI常用命令
- (笔记)Spring MVC学习指南_Spring MVC介绍
- Python 总结:进阶1
- Mysql连接查询
- fork,vfork,clone
- 【FFMPEG】ffmpeg 中添加264支持
- 支付宝信用
- 委托的小总结
- 照猫画虎--模板模式(继承)
- Maven 将项目部署到远程仓库
- Illegal character in query Url中含有{}