如何定义具有动态输入的python字符串(准)常量?

如何定义具有动态输入的python字符串(准)常量?,python,string,constants,Python,String,Constants,例如: MY_MESSAGE = 'Dear %s, hello.' # ... name = "jj" print MY_MESSAGE % name python是否有一个功能来完成类似于我上面代码的任务?是的,就是您编写它的方式。您的代码很好。Python实际上没有与C中相同的“常量”概念。因此,这里有一个相当好的方法 事实上,我认为这是一个“我们都是同意的成年人”的例子,但却不能很好地证明这一点。我认为这门语言很棒,但偶尔会有一个常数。。。很好。您的代码是正确的,但我相信有一种更可取的

例如:

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()
方法替换
%
运算符

正如MarkLutz在《学习Python》中提到的那样。第四版,
格式
方法:

  • 有一些在
    %
    表达式中找不到的功能
  • 可以使替换值更加明确
  • 用一个运算符替换一个更具助记性的方法名
  • 不支持单个和多个的不同语法 替换值情况
后来,在同一本书中:

。。。Python开发人员将来可能会反对使用
%
表达式,而倾向于使用
格式
方法。事实上,在Python 3.0的手册中有一个关于这一点的注释


字符串格式运算符:%1还可以执行其他操作:

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")

您还可以进行填充和数字格式设置。

您真的尝试过吗?那代码完全有效。哇。有人需要一些睡眠我会删除这个坏女孩,但可能最好给我留下一个耻辱的标记!谢谢你的快速回复:)@dolan,我很佩服你留下的污点睡一觉!。format()肯定有它的位置,但%不会被弃用——有太多人仍在使用它,并将继续使用它。@Ethan Furman:也许你是对的,但
%
有许多缺点,
.format()
是为了取代它而创建的(当你看它时,至少看起来是这样)Ruby做得很好:如果重新定义任何以大写字母开头的变量,就会抛出警告。