PYTHON-函数特性
来源:互联网 发布:矩阵计算 第4版 pdf 编辑:程序博客网 时间:2024/04/29 13:48
函数:
在Python中,定义一个函数要使用 def 语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用 return 语句返回。
- 递归函数,自身调用自身就是递归函数
定义默认参数
定义函数的时候,还可以有默认参数。
由于函数的参数按从左到右的顺序匹配,所以默认参数只能定义在必需参数的后面:
默认参数必须指向不可变对象
如:
# OK:def fn1(a, b=1, c=2): pass# Error:def fn2(a=1, b): pass
1. 高级特性:
切片:
list: L[A:B:C]
A,表起始。B表结尾。C表隔几个去一次,不填则为默认参数
tuple: 也可以切片,但是取出后仍是tuple类型迭代:
普通迭代:for … in .. :
没有索引的,只要是可以迭代的对象(字符串也可以迭代),都可以。
例如:dict默认迭代的是key值。for value in d.itervalues() # 迭代for k, v in d.iteritems()
- 判断对象是否可以迭代:
通过collections模块的Iterable类型判断:from collections import Iterableisinstance('abc', Iterable) # str是否可迭代
如果一个对象说自己可迭代,那我们就直接用 for 循环去迭代它,可见,迭代是一种抽象的数据操作,它不对迭代对象内部的数据有任何要求。
for 循环可作用的迭代对象远不止 list,tuple,str,unicode,dict等
for x, y in [(1, 1), (2, 4), (3, 9)]: #for里同时可以引用两个变量Python内置的enumerate函数可以把一个list变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身:
for i, value in enumerate(['A', 'B', 'C']): enumerate()把list返回一个包含索引-value值得形式。
- 列表生成式L:
体会快速生成列表的方法 [x * x for x in range(1, 11) if x % 2 == 0] [m + n for m in 'ABC' for n in 'XYZ'] [x * x for x in range(1, 11)]
生成器G:
列表元素按照某种算法推算出来,一边循环一边计算推算出后来的元素,可以节约大量空间创建L和g的区别仅在于最外层的[]和(),L是一个list,而g是一个generator。
generator是可迭代对象,直接用for可以遍历另外一种定义的方法:如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator
def fib(max): n, a, b = 0, 0, 1 while n < max: yield b a, b = b, a + b n = n + 1
跟函数不同的一点:变成generator的函数,在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行
2.函数式编程:
函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数!
高阶函数:
函数本身也可以赋值给变量,即:变量可以指向函数一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数map/reduce
map()函数接收两个参数,先是函数,后是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回reduce把一个函数作用在一个序列[x1, x2, x3…]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算
filter()
filter()也接收一个函数和一个序列。和map()不同的时,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素sorted()
接受两个参数,第一个是序列,默认参数从大到小,第二个参数是比较函数参数
sorted([‘bob’, ‘about’, ‘Zoo’, ‘Credit’], cmp_ignore_case)返回函数
高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。
返回闭包时牢记的一点就是:返回函数不要引用任何循环变量,或者后续会发生变化的变量匿名函数
不需要显式地定义函数,直接传入匿名函数更方便 关键字lambda表示匿名函数,冒号前面的x表示函数参数。
map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9])lambda x: x * x 就是def f(x): return x * x
装饰器
在面向对象(OOP)的设计模式中,decorator被称为装饰模式。OOP的装饰模式需要通过继承和组合来实现,而Python除了能支持OOP的decorator外,直接从语法层次支持decorator。Python的decorator可以用函数实现,也可以用类实现。
decorator可以增强函数的功能,定义起来虽然有点复杂,但使用起来非常灵活和方便。偏函数
简单总结functools.partial的作用就是,把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新函数会更简单
- PYTHON-函数特性
- python 函数高级特性
- python 函数高级特性
- Python函数的高级特性
- python的一些函数特性
- Python中的函数特性map(),
- Python高级特性:函数参数传递研究
- Python函数式实现单例特性
- python高级特性与高阶函数
- python基础3之函数高级特性
- Python编程_Lesson010_函数高级特性
- python集合与函数的高级特性
- Python特性
- 你需要知道的实用Python函数和特性
- python面向对象特性----mutable, immutable, 函数传参
- Python学习1——基础、函数、高级特性
- Python笔记(二)——高级特性|函数式编程
- python 函数的高阶特性,类的解析
- 2015-4-11 中北 蓝桥 试题解答及有感
- python etree 输出某个节点下的所有节点的文本内容
- java web开发入门
- 数据仓库介绍(七) - 星型模型与雪花模型
- Spring下mybatis配置多数据源
- PYTHON-函数特性
- HDU 4641 K-string 2013年多校第4场J题 后缀自动机
- zedboard使用nfs挂载根文件系统-linux内核启动参数bootargs详解
- VGA to RGB + composite sync -converter
- hdoj 1047 Integer Inquiry
- python序列化pickle
- pomelo中的基本概念
- 两大设计模式 塑造高可读性的网页布局
- C++实现ftp客户端