前言
刚接触Python,看文档中有
who = sys.argv[1] if len(sys.argv) > 1 else "世界"
一开始接触有点怪,但写成下面的我是懂的
import sys
if len(sys.argv) > 1:
who = sys.argv[1]
else:
who = "世界"后面才知道那个是Python的三元运算。
正文
使用命令执行Python脚本
python hello.py python hello.py 小红
sys.argv 是一个列表,装着命令行传进来的东西。第一个元素永远是脚本名,后面的才是用户传的参数:
# 不传参数 sys.argv = ['hello.py'] # 传一个参数 sys.argv = ['hello.py', '小红']
所以判断"有没有传参数",看的就是列表长度是不是大于 1。
先算 len(sys.argv) > 1,真就取 sys.argv[1],假就取 "世界",最后把选出来的那个值交给 who:
| 命令 | sys.argv | who |
| python hello.py | ['hello.py'] | "世界" |
| python hello.py 小红 | ['hello.py', '小红'] | "小红" |
三元运算
其实开头的那一行就是Python的三元运算。
值A if 条件 else 值B 就是 Python 版的三元运算,只是样子不同:
| 语言 | 写法 |
| Python | 值A if 条件 else 值B |
| C / Java / JavaScript | 条件 ? 值A : 值B |
# 大多数语言:条件在前 条件 ? 值A : 值B # Python:值A 在前 值A if 条件 else 值B
记法也简单:真值在前,条件在中,else 后面是假值。
参考文章
- Python开发文档
