【发布时间】:2011-11-10 07:43:13
【问题描述】:
例如:
MY_MESSAGE = 'Dear %s, hello.'
# ...
name = "jj"
print MY_MESSAGE % name
python 有没有完成我上面的代码这样的功能?
【问题讨论】:
-
你真的试过了吗?该代码完全有效。
-
哇。有人需要睡觉
例如:
MY_MESSAGE = 'Dear %s, hello.'
# ...
name = "jj"
print MY_MESSAGE % name
python 有没有完成我上面的代码这样的功能?
【问题讨论】:
是的,你写它的确切方式。你的代码很好。
【讨论】:
Python 并不真正拥有与 C 中相同的“常量”概念。所以你所拥有的是一个相当不错的方法。
我实际上会争辩说,这是“我们都是同意的成年人”的一个例子并不能很好地支持。认为该语言很棒,但时不时地保持不变会......很好。
【讨论】:
您的代码是正确的,但我相信有一种更可取的方式来做到这一点:
>>> my_message = 'Dear {:s}, hello.'
>>> my_message.format('jj')
'Dear jj, hello.'
首选,因为将来可能会用 .format() 方法替换 % 运算符。
正如 Mark Lutz 的 Learning Python 中所述。第四版,format方法:
- 有一些
%表达式中没有的功能,- 可以使替换值更明确,
- 用操作符换取可以说更容易记忆的方法名称,
- 不支持单个和多个的不同语法 替代值案例,
后来,在同一本书中:
... Python 开发人员将来可能会弃用
%表达式以支持format方法。事实上,在 Python 3.0 的手册中有关于这种效果的注释。
【讨论】:
% 有很多缺点,并且已经创建了.format() 来替代它(至少看起来像,当你查看PEP 3101 时)。
字符串格式化操作符:% 也可以做其他的事情:
STRING = "This is %(foo)s, and this is also %(foo)s"
print STRING % {"foo": "BAR"}
# => This is BAR, and this is also BAR
如果您要重复一个论点,这非常有用。肯定会跳动
FORMAT_STRING % ("BAR", "BAR")
您还可以进行填充和数字格式化。
【讨论】: