python实现问号表达式(?)的方法

yipeiwu_com6年前Python基础

python中的and和or和其它语言的区别很大
其它语言中的and和or都是返回bool类型的结果,python不是。它返回的是做and和or运算的其中一个值。
那个值决定了这个表达式的值,就返回那个值。

复制代码 代码如下:

>> 5 and ''

这里结果是'', 空字符串, 因为是它导致了这个表达式为false.
也就是所在and中,只有前面一个值是false的时候,才有可能成为结果。否则就是后面的值为结果。

了解了and和or运行的过程,那么就可以实现?表达式了:

复制代码 代码如下:

if (expression):
     return truevalue
else:
    return falsevalue

和这个等价的写法是(类似?号表达式):

复制代码 代码如下:

expression and truevalue or falsevalue
#或者
(expression and (truevalue,) or (falsevalue,))[0] #感谢snake117提供的建议

#这种是避免truevalue有可能是false的情况,比如空字符串

相关文章

Python实现k-means算法

Python实现k-means算法

本文实例为大家分享了Python实现k-means算法的具体代码,供大家参考,具体内容如下 这也是周志华《机器学习》的习题9.4。 数据集是西瓜数据集4.0,如下 编号,密度,含糖率...

Django中的cookie和session

Django中的cookie和session

http协议是无状态的。下一次去访问一个页面时并不知道上一次对这个页面做了什么。 无状态的应用层面的原因是:浏览器和服务器之间的通信都遵守HTTP协议。 根本原因是:浏览器与服务器是使用...

解决使用PyCharm时无法启动控制台的问题

问题: 使用PyCharm时无法启动控制台? 今天打开PyCharm时突然无法启动控制台,IPython和Python本身都无法使用 解决: 很有可能你安装了较高版本的ipython...

十行代码使用Python写一个USB病毒

十行代码使用Python写一个USB病毒

大家好,我又回来了。 昨天在上厕所的时候突发奇想,当你把usb插进去的时候,能不能自动执行usb上的程序。查了一下,发现只有windows上可以,具体的大家也可以搜索(搜索关键词usb...

Python RabbitMQ消息队列实现rpc

Python RabbitMQ消息队列实现rpc

上个项目中用到了ActiveMQ,只是简单应用,安装完成后直接是用就可以了。由于新项目中一些硬件的限制,需要把消息队列换成RabbitMQ。 RabbitMQ中的几种模式和机制比Acti...