Python语言的高级特性
函数式编程
基于lambda演算的一种编程方式
- 函数中只有函数
- 函数可以作为参数,同样可以作为返回值
- 纯函数式编程语言:LISP , Haskell
python函数式编程只是借鉴函数式编程的一些特点,可以理解成一半函数一半python
需要讲述:
- 高阶函数
- 返回函数
- 匿名函数
- 装饰器
- 偏函数
lambda表达式
函数:最大程度复用代码
存在问题:
- 如果函数很小,很短,则会造成啰嗦
- 如果函数被调用次数少,则会造成浪费
- 对于阅读者来说,造成阅读流程的被迫中断
lambda表达式(匿名函数):
- 一个表达式,函数体相对简单
- 不是一个代码块,仅仅是一个表达式
- 可以有参数,有多个参数也可以,用逗号隔开
用法:
- 以lambda开头
- 紧跟一定的参数(如果有的话)
- 参数后用冒号和表达式主题隔开
- 只是一个表达式,所以没有return
计算一个数字的100倍数
stm = lambda x: * x
print(stm())
结果:
多个参数
stm2 = lambda x,y,z,:x + y * + z *
print(stm2(,,))
结果:
高阶函数
- 把函数作为参数使用的函数,叫高阶函数
变量可以赋值
a =
b = a
函数名称就是一个变量
def funA():
print(" In funA")
funB = funA
funB()
以上代码得出结论:
- 函数名称是变量
- funB和funA只是名称不一样
- 既然函数名称是变量,则应该可以被当做参数传入另一个函数
#高阶函数举例
#funA是普通函数,返回一个传入数字的100倍数字
def funA(n):
return n *
# 再写一个函数,把传入参数乘以300倍
def funB(n):
#最终返回300n
return funA(n) *
print(funB()) #写一个高阶函数
def funC(n,f):
#假定函数是把n扩大100倍
return f(n) *
print(funC(,funA))
系统高阶函数-map
- 映射,把集合或列表的元素,每个元素都按照一定规则进行操作,生成一个新的列表或者集合
- map函数是系统提供的具有映射功能的函数,返回值是一个迭代对象
#map 举例
#有一个列表,想对列表里的每个元素乘以10 L1 = [ i for i in range()]
l2 = []
for i in L1:
l2.append(i * )
print(l2) 或高阶函数
def mulTen(n):
return n*
l3 = map(mulTen,L1)
for i in l3:
print(i,end=" ")
reduce
reduce
归并,缩减
把一个可迭代对象最后归并成一个结果
对于函数参数的函数要求:必须由两个参数,必须由返回结果
reduce([,,,,]) == f(f(f(f(,),),),)
reduce 需要导入functools包 from functools import reduce
def myAdd(x,y):
return x + y
rst = reduce(myAdd,[,,,,,])
print(rst)
结果:
filter函数
- 对一组数据进行过滤,符合条件的数据会生成一个新的列表并返回
- 调用函数:filter(f,data),f是过滤函数,data是数据
def isRven(a):
return a % ==
l = [,,,,,,,,,]
rst = filter(isRven,l)
print(rst)
print([i for i in rst])
高阶函数-排序
- 把一个序列安照给定算法进行排序
- key:在排序前对每个元素进行key函数运算,可以理解成按照key函数定义的逻辑进行排序
Python语言的高级特性的更多相关文章
- C、C++、C#、Java、php、python语言的内在特性及区别
C.C++.C#.Java.PHP.Python语言的内在特性及区别: C语言,它既有高级语言的特点,又具有汇编语言的特点,它是结构式语言.C语言应用指针:可以直接进行靠近硬件的操作,但是C的指针操作 ...
- Python面向对象编程高级特性
***这里还是根据网上资料,主要是廖雪峰老师的教程学习的笔记,主要介绍python面向对象的高级特性,笔记不全,只是记录自己觉得容易出错的地方*** 1.python作为一种动态语言,他的动态绑定机制 ...
- Python的一些高级特性
内容基本上来自于廖雪峰老师的blog相当于自己手打了一遍,加强加强理解吧. http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493 ...
- Python:笔记(4)——高级特性
Python:笔记(4)——高级特性 切片 取一个list或tuple的部分元素是非常常见的操作.Python提供了切片操作符,来完成部分元素的选取 除了上例简单的下标范围取元素外,Python还支持 ...
- 大数据笔记(二十六)——Scala语言的高级特性
===================== Scala语言的高级特性 ========================一.Scala的集合 1.可变集合mutable 不可变集合immutable / ...
- Python的一些高级特性以及反序列化漏洞
0x01 简述 文章主要记录一下python高级特性以及安全相关的问题 python作为脚本语言,其作为高级语言是由c语言开发的,关于python的编译和链接可以看向这里https://github. ...
- python 9学习 高级特性
高级特性 掌握了Python的数据类型. 语句 和函数,基本上就可以编写出很多有用的程序了. 比如构造一个1, 3, 5, 7, ..., 99的列表,可以通过循环实现: L = [] n ...
- python:函数的高级特性
很多语言中,都允许把函数本身做为参数,传递给其它参数:即所谓的高阶函数.python中也有类似特性: 一.map/reduce.filter.sorted hadoop里的map-reduce思想在p ...
- Python学习之高级特性
切片 在Python基础篇里,我们知道Python的可序列对象可以通过索引号(下标)来引用对象元素,索引号可以由0开始从左向右依次获取,可以从-1开始由右向左获取.这种方法可以帮助我们依次获取我们想要 ...
随机推荐
- windows环境变量PATH顺序的重要性
PATH是路径的意思,PATH环境变量中存放的值,就是一连串的路径.不同的路径之间,用英文的分号间隔开.系统在执行用户命令时,若用户未给出绝对路径,则首先在当前目录下寻找相应的可执行文件.批处理文件等 ...
- mysql主从配置 转自http://www.cnblogs.com/sustudy/p/4174189.html
1.确保主数据库与从数据库一模一样. 例如:主数据库里的a的数据库里有b,c,d表,那从数据库里的就应该有一个模子刻出来的a的数据库和b,c,d表 2.在主数据库上创建同步账号. GRANT REPL ...
- centos6.5报错:checking filesystems failed问题处理
centos系统重启报错:checking filesystems failed checking filesystems /dev/mapper/vg_0-root: 搜了下可能是文件系统损坏 根据 ...
- Android中PopupWindow用法
参考资料链接:http://developer.android.com/reference/android/widget/PopupWindow.html 在Android中有很多级别的Window, ...
- js实现星级评分效果(非常规5个li代码)
1. 前言 此方案受到JS单行写一个评级组件启发,自己写了一个简单Demo. 功能有正常滑动,动态显示实心星星个数:当点击确认,则保持当前的实心星星个数:再移动时未点击,则离开后还是保持之前的状态. ...
- wpf 加阴影效果导致内容模糊的问题解决
这个和GPU有关,参考地址 https://www.cplotts.com/2009/02/25/gpu-effects-blurry-text/ 产生问题的代码如下: <Window x:Cl ...
- laravel使用when搜索遇到状态参数(有0的状态)的坑
今天,使用when()方法写活动列表的接口,有两个状态搜索,都有0这个状态,当传参为0时when()就失效了... 反反复复的验证参数,传参确实是0和1啊...百思不得其解~~~后面仔细想想when( ...
- cf789c
主要是线性时间内求最大连续和 #include<bits/stdc++.h> using namespace std; #define maxn 200005 #define ll lon ...
- poj3667 区间合并,找最左边的空余块
题很简单:给两个操作1:查找最左边的a个空余块并填满 2:把从第a个开始的连续b个块置空 线段树维护左连续,右连续,最大连续,lazy-tag即可,query函数值得学习 #include<io ...
- Python 索引迭代
1.使用enumerate函数 L = ['Adam', 'Lisa', 'Bart', 'Paul'] for index, name in enumerate(L): print inde ...