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开始由右向左获取.这种方法可以帮助我们依次获取我们想要 ...
随机推荐
- Mac Terminal 菜鸟篇之目录跳转命令
以前一直都是使用Windows系统,连命令行都没怎么用过.来到了Mac,在某位大神的诱导下,我开始尝试使用Mac Terminal,下面总结的是一些简单的目录跳转命令(菜鸟级). 文件目录 首先要清楚 ...
- 【一通百通】c/php的printf总结
程序语言都是触类旁通的,讲人话就是[一通百通].so今天说说工作中常用的printf的用法吧. 1.先说说PHP printf()函数: printf()函数的调用格式为: printf(" ...
- JS排序算法之快速排序
const Arr = [85, 24, 63, 45, 17, 31, 96, 50]; function quickSort(arr) { 80 if (arr.length <= 1) { ...
- hdu2838树状数组解逆序
离散化和排序后的序号问题搞得我实在是头痛 不过树状数组解逆序和偏序一类问题真的好用 更新:hdu的数据弱的真实,我交上去错的代价也对了.. 下面的代码是错的 /* 每个点的贡献度=权值*在这个点之前的 ...
- python+selenium十二:一个输入框双层input标签
先点击第一个,再对第二个进行操作,否则操作失败 driver.find_element_by_css_selector(".pwd").click()driver.find_ele ...
- Visual Studio强大的帮助工具--Resharper安装与使用
ReSharper是一个JetBrains公司出品的代码生成工具,其能帮助Microsoft Visual Studio成为一个更佳的IDE.使用ReSharper,你可以进行深度代码分析,智能代码协 ...
- 《转》理解restful
越来越多的人开始意识到,网站即软件,而且是一种新型的软件. 这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high latency).高 ...
- Spring AOP 入门实例详解
目录 AOP概念 AOP核心概念 Spring对AOP的支持 基于Spring的AOP简单实现 基于Spring的AOP使用其他细节 AOP概念 AOP(Aspect Oriented Program ...
- PC_android通信之传输图片并显示在手机端【转】
从服务器 (PC 端 ) 发送图片到客户端 (android 手机端 ) ,并在手机页面上显示该图片.(注:本文旨在实现功能,并未考虑效率,有待后续跟进.) 1.服务器端 int port=9090; ...
- [HEOI2016/TJOI2016]序列
题解: 很水的题目 首先容易发现每个位置实际上只有最大值是有用的 然后把条件变成dp[i]=max(dp[j]+1)(j<i,F[i]>G[j],G[i]>H[j]) 然后我研究了一 ...