【问题标题】:What's the end on 'print "%d" % (5)' called?'print "%d" % (5)' 的结尾是什么?
【发布时间】:2014-09-04 12:57:52
【问题描述】:

我猜是一个语言问题,但代码中调用的 (5) 是什么 print "%d" % (5)?

我将%d 称为整数表示,但我不确定如何称呼它实际表示的内容,无论它是数字、变量、计算还是w/e。 这叫论据吗?

我想知道,因为我正在为一个赋值创建 cmets,我正在计算括号中的内容,而不是创建一个新变量,计算变量并插入变量,如 x = 5;print "%d" % (x)

【问题讨论】:

  • The documentation 将其描述为 "values""the argument",以及 %d 一个 " 转换规范".

标签: python python-2.7 linguistics


【解决方案1】:

The documentation 称之为“价值观”:

如果 format 需要单个参数,则 values 可能是单个非元组对象。

%d 称为“转换规范”。它们中的每一个都从“值”中的元素中获取一个或多个“参数”。

%d 接受一个参数,%*d 接受两个,例如。所有参数都构成“值”。

这意味着5%d 的参数,而(5) 是整个格式的“值”。

【讨论】:

  • “所以“参数”指的是%d - 不,那是“转换规范”,值(或值的元组)是参数。
  • @jonrsharpe:谢谢,已修复。
【解决方案2】:

(5)实际上是一个很容易误导人的东西:它看起来像是一个元组,但它只是一个带有括号的整数!

随便写

print "%d" % 5

或者是写一个单元素元组的正确方法,

print "%d" % (5,)

或者,当您遇到确实重要的情况时(例如,当您有一个变量而不是 5 时,您以后可能会遇到问题,该变量本身可能是也可能不是元组)。

例如,

a = (2, 3)

print "%s" % a

引发 TypeError,因为 a 有两个元素,而 % 只有一个。

print "%s" % (a)

也会引发 TypeError,因为它是完全相同的东西,并且

print "%s" % (a,)

实际上打印了预期的"(2, 3)"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-30
    • 2020-10-06
    • 1970-01-01
    • 2012-02-05
    相关资源
    最近更新 更多