Python基础-Python的三元运算符和lambda表达式
1、 Python的三元表达式:
现在大部分高级语言都支持 “?”这个三元运算符,它对应的表达式如下:condition ? value if true:value if else
但是 Python并不支持三元运算符 ?,它替代的方法是 ...if ... else...
Python的三元运算符不像其他语言的三元运算符,其他语言的三元运算符一般是下面所示的格式:
判定条件?为真时的结果:为假时的结果
例如:result=8>7?1:0
然而,在Python中的格式为:
为真时的结果 if 判定条件 else 为假时的结果
例如:1 if 8>7 else 0
输出1,如果8大于7,否则输出0
下面咱们具体来看看什么是 三元运算符:
>>> def f(x,y):
return x-y if x>y else abs(x-y)
#如果x大于Y,返回 x-y的值,否则就返回(x-y)的绝对值 >>> f(5,6) #因为x小于y,不满足if条件,它将返回 else里面的 绝对值
1
>>> f(6,5) #因为6>5,满足if条件,将返回 6-5的值
1
>>> def f(x,y):
return 1 if x>y else -1 >>> f(5,6)
-1
>>> f(6,5)
1
>>>
2、Python的Lambda表达式
lambda 函数也叫匿名函数,即,函数没有具体的名称,而用def创建的方法是有名称的。如:
'''命名的foo函数'''
def foo():
return "Hello"
'''lambda关键字创建的匿名函数,该表达式同以上函数'''
lambda:'Hello'
上面只是简单的用lambda创建的一个函数对象,并没有保存它也没有调用它,时刻会被收回。下面我们保存并调用:
f=lambda:'Hello'
print(f())
我们从上面的几个简单的例子,可以理解Python的语法为:
lambda [arg1[,arg2,arg3...argN]]:expression
lambda语句中,冒号前是参数,可以有多个,用逗号隔开,冒号的右边是返回值。lambda语句构建的其实是一个函数对象。
>>> print(lambda:'Hello')
<function <lambda> at 0x00000000042BBB70>
>>>
lambda 如果没有参数,则lambda冒号前面就没有,如上面的例子。
lambda有参数的情况:
def add(x,y):
return x+y
add2=lambda x,y:x+y
print(add2(4,5)) #运行结果是:9 def sum(x,y=9):
return x+y
sum2=lambda x,y=9:x+y
print(sum2(6)) #运行结果是:15
print(sum2(99,1)) #运行结果是:100
lambda 有什么作用呢?
很多人提出了质疑,lambda和普通的函数相比,就是省去了函数名称而已,同时这样的匿名函数,又不能共享在别的地方调用。其实说的没错,lambda在Python这种动态的语言中 确实没有起到什么惊天动地的作用,因为有很多别的方法能够代替lambda。同时,使用lambda的写法有时显得并没有那么pythonic。甚至有人提出之后的Python版本要取消lambda。
回过头来想想,Python中的lambda真的没有用武之地吗?其实不是的,至少我能想到的点,主要有:
1. 使用Python写一些执行脚本时,使用lambda可以省去定义函数的过程,让代码更加精简。
2. 对于一些抽象的,不会别的地方再复用的函数,有时候给函数起个名字也是个难题,使用lambda不需要考虑命名的问题。
3. 使用lambda在某些时候让代码更容易理解。
4、非多次调用函数的情况下,lambda表达式即用即得,提高性能。
lambda和def有什么不一样呢?
1、Python lambda会创建一个函数对象,但不会把这个函数对象赋值给一个标识符,而def则会把函数对象赋值给一个变量.
2、python lambda它只是一个表达式,而def则是一个语句。lambda表达式运行起来像一个函数,当被调用时创建一个框架对象
Python基础-Python的三元运算符和lambda表达式的更多相关文章
- python基础——10(三元运算符、匿名函数)
一.三元运算符 本质是if--else--的语法糖 前提:简化if--else--的结构,且两个分支有且只有一条语句 案例: a = 20 b = 30 res = a if a > b els ...
- Python基础篇(格式化输出,运算符,编码):
Python基础篇(格式化输出,运算符,编码): 格式化输出: 格式:print ( " 内容%s" %(变量)) 字符类型: %s 替换字符串 %d 替换整体数字 ...
- python基础-4 函数参数引用、lambda 匿名函数、内置函数、处理文件
上节课总结 1.三元运算 name=“name1”if 条件 else “name2” 2.深浅拷贝 数字.字符串 深浅,都一样 2.其他 浅拷贝:只拷贝第一层 深拷贝:不拷贝最后一层 3.set集合 ...
- Python基础知识之3——运算符与表达式
一.概念: 运算符:运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算.比如10+4=14,其中操作数是 10 和 4,运算符是“+” . Python 语言主要支持运算符类型有:算术运算 ...
- Python学习之路——三元运算符推导式
三元运算符 # 生成器:包含yield关键字的函数就是生成器 def my_generator(): yield 1 yield 2 yield 3 g_obj = my_generator() # ...
- Python三元运算和lambda表达式
一.三元运算 1.定义:三元运算是if-else 语句的快捷操作,也被称为条件运算. 2.结构: [on_true] if [expression] else [on_false] 3.示例: ...
- Python学习杂记_10_三元运算符
常用三元运算符来简化分支和循环的代码: 分支简化: a = 1b = 2c = a if a > 1 else bprint(c) # 以上几行等同于 a = 1b = 2if a >1: ...
- 小甲鱼零基础python课后题 P22 021函数:lambda表达式
0.请使用lambda表达式将下边函数转变为匿名函数 def fun_A(x,y=3): return x*y 答: lambda x,y=3:x*y 1.请将下边的匿名函数转变为普通的屌丝函数 la ...
- devi into python 笔记(三)callable getattr lambda表达式
常用的函数:callable():如果所给参数是可调用的,返回True 不可调用返回Fasle.这里指的是否能调用说的是方法.类方法等有doc string的东西,一个单纯的字符串等就不算了. imp ...
随机推荐
- easyUI使用datagrid-detailview.js实现多级级列表嵌套
转载请注明出处: 注意事项: 原本在谷歌浏览器进行示例测试的,url请求对应的json文件,效果一直显示不出来,换到谷歌和IE是可以正常显示的, 解决方法可参考:http://www.cnblogs. ...
- 用《捕鱼达人》去理解C#中的多线程
线程是进程中某个单一顺序的控制流,是程序运行中的调度单位,是程序执行流的最小单位,一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成. 线程自己不拥有系统资源,只拥有一点儿在运行中必 ...
- python多环境下虚拟环境的搭建和使用
由于开发环境要求,或者实际需要.经常会出现python2.7和python3.x共存下的开发环境问题.虚拟环境的搭建可以很好的隔离Projects的开发环境. 1.首先解决python2.7和pyth ...
- scrapy爬虫具体案例步骤详细分析
scrapy爬虫具体案例详细分析 scrapy,它是一个整合了的爬虫框架, 有着非常健全的管理系统. 而且它也是分布式爬虫, 它的管理体系非常复杂. 但是特别高效.用途广泛,主要用于数据挖掘.检测以及 ...
- java @FunctionalInterface
public class Worker { private String doWork(String job) { return "Job " + job + " don ...
- 【笔记】Nginx热更新相关知识
(以下学习笔记内容均摘自参考链接,仅供个人查阅) 1.inotify文件系统监控特性 Inotify 是一个 Linux 内核特性,它监控文件系统,并且及时向专门的应用程序发出相关的事件警告,比如 ...
- PCA和PCoA
讲解很详细:http://blog.genesino.com/2016/10/PCA/ PCA分析一般流程: 中心化(centering, 均值中心化,或者中位数中心化),定标(scale,如果数据没 ...
- CentOS7.5下安装、配置MySql数据库 --CentOS7.5
1.下载MySql的rpm包 [root@VM_39_157_centos -]# wget http://repo.mysql.com/mysql-community-release-el7-5.n ...
- JVM内存模型和GC机制
目录 1.JVM内存模型 2.GC 1.JVM内存模型 堆,栈,本地方法栈,方法区,程序计数器 2.GC 新生代收集器:Serial(单线程).ParNew.Parallel Scavenge: 老年 ...
- PHP异常和错误
一.PHP的异常和错误 异常:在程序运行中不符合预期的情况及与正常流程不同的情况.一种不正常的情况,就是按照正常逻辑不该出错,但任然出错的情况,这属于逻辑和业务流程的一种中断,而不是语法错误.PHP只 ...