貌似 f-string 现在 很受推崇,但 Emacs 目前不支持(高亮和补全):
相关的 Bug Report(目前还没有任何回应):
r'...'
和 u'...'
也都没有高亮吧?
python说是要只有一种正确的方法去做一件事。现在格式化字符串自带都有三种方法(%算符 str.format
f-string)。而且python似乎喜欢把库函数能做到的东西都装成语言特性(列表推导式),事实上列表推导式的可读性就不如map和filter
这种方式比c风格的printf式格式化,效果是不是更好,感觉还要打个问号啊。
跟 %
和 .format
不同,这个 f
是嵌入表达式,各有所长。
高亮没有,但是我用lsp是有补全的。
这个 f-string 怎么开启?我在 3.6.5/3.6.6/3.7.0 下试了都提示出错:
In [3]: print(f'hello, {name}')
File "<ipython-input-3-9f1973a9ac37>", line 1
print(f'hello, {name}')
^
SyntaxError: invalid syntax
Python 3.6 引入的
乌龙一场
是我这边环境问题,因为 brew 安装了 ipython (我也不知道什么时候安装的,可能是由于某些软件依赖),导致我没发现当前 pyenv 下没有 ipytho:
⋊> python --version
Python 3.6.5
⋊> pyenv version --bare
3.6.5 (set by ~/.pyenv/version)
⋊> which ipython
~/.pyenv/shims/ipython <--- 被这一行蒙蔽了
实际真正是调用的是:
⋊> pyenv which ipython
/usr/local/bin/ipython
⋊> head -1 /usr/local/bin/ipython
#!/usr/local/opt/python@2/bin/python2.7
给当前 pyenv 安装一个 ipthon 就解决了:
⋊> pip install ipython
⋊> which ipython
~/.pyenv/shims/ipython
⋊> pyenv which ipython
~/.pyenv/versions/3.6.6/bin/ipython <--- 这回跑不掉了
f-string
确实更简洁,但是 C/C++程序员表示,还是%
来得舒服
我也觉得不是越简洁越好,如果一次format要用四个以上的参数,我就觉得应该修改程序了。
对打表来说不是很正常么
我是天天用f-string,已经回不去了。看str直接就能猜到大致内容,光这点就省心不少,在团队协作的时候,代码易懂,省心很重要