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以并发方式编写高性能端口扫描器的方法

关于端口扫描器 端口扫描工具(Port Scanner)指用于探测服务器或主机开放端口情况的工具。常被计算机管理员用于确认安全策略,同时被攻击者用于识别目标主机上的可运作的网络服务。 端...

使用Python的Twisted框架编写简单的网络客户端

Protocol   和服务器一样,也是通过该类来实现。先看一个简短的例程: from twisted.internet.protocol import Protocol...

Python自动化运维和部署项目工具Fabric使用实例

Fabric 是使用 Python 开发的一个自动化运维和部署项目的一个好工具,可以通过 SSH 的方式与远程服务器进行自动化交互,例如将本地文件传到服务器,在服务器上执行shell 命...

Python实现基于POS算法的区块链

Python实现基于POS算法的区块链

区块链中的共识算法 在比特币公链架构解析中,就曾提到过为了实现去中介化的设计,比特币设计了一套共识协议,并通过此协议来保证系统的稳定性和防攻击性。 并且我们知道,截止目前使用最广泛,...

pytorch实现建立自己的数据集(以mnist为例)

pytorch实现建立自己的数据集(以mnist为例)

本文将原始的numpy array数据在pytorch下封装为Dataset类的数据集,为后续深度网络训练提供数据。 加载并保存图像信息 首先导入需要的库,定义各种路径。 impor...