在 Python 语言中,是不支持 Java 风格的三元运算符的。比如 Java 中用这种形式来判断身份证的男女:
1
| String gender = Integer.parseInt(idcard.substring(16, 17)) % 2 != 0 ? "男" : "女";
|
而在 Python 中没有这个运算符,下面几种写法可以替代。
条件表达式(推荐)
1
| gender = "男" if int(idcard[16:17]) % 2 != 0 else "女"
|
and/or 短路写法
1
| gender = int(idcard[16:17]) % 2 != 0 and "男" or "女"
|
元组索引
1 2
| gender = ("女", "男")[int(idcard[16:17]) % 2 != 0]
|
字典查找
1 2
| gender = {True: "男", False: "女"}[int(idcard[16:17]) % 2 != 0]
|
切片技巧
如果判断的是否定和非否定关系,甚至还可以这样:
1 2 3
| age = 18 adult_flag = "未成年"[age > 18:]
|
日常开发推荐第一种条件表达式,语义最清晰。