一个关于python代码写法的疑问?

open('record.txt','w') if not os.path.exists('record.txt') else None

看到这样的python代码, 意思明白, 也能运行.但很奇怪的是:

open('record.txt','w')if not os.path.exists('record.txt') else None

这应该是两个代码块, 可以直接写在一行吗? 这是什么用法?

image.png
在ide里, 如果换行, 会自动增加 \.

阅读 1.9k
2 个回答

if 后置。

你可以理解成其他语言中的三元表达式,但 Python 里没有三目运算符,所以就写成了这个样子:

c = a if a>b else b
// 等效于
if a>b:
  c = a
else:
  c = b

P.S. 我一直觉得这种写法可读性差的一哔……

这样的写法叫条件表达式,是三目运算符的python版本,它们并不是两个“代码块”,而是一个表达式里的不同部分,类似的设计好像也存在在rust里。
https://docs.python.org/zh-cn...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏