Python 这里的打印(s%%s)是什么意思?
我知道%是用s替换字符串中的某些内容(但实际上替换谁?) 也许更有趣的是,为什么在Python 这里的打印(s%%s)是什么意思?,python,Python,我知道%是用s替换字符串中的某些内容(但实际上替换谁?) 也许更有趣的是,为什么在%s被s本身取代后,print(s%%s)会自动变成print(s%s) 大多数转换说明符告诉Python如何将传递到%格式运算符中的参数进行转换(例如,“%d”表示在将下一个参数插入字符串之前将其转换为十进制整数) “%%”是不同的,因为它直接转换为单个“%%”字符而不使用参数。格式字符串规范中需要这种转换,因为否则任何“%”都将被视为其他一些代码的第一部分,并且不容易生成包含百分号的字符串 您显示的代码是qui
%s
被s
本身取代后,print(s%%s)
会自动变成print(s%s)
大多数转换说明符告诉Python如何将传递到%
格式运算符中的参数进行转换(例如,“%d”
表示在将下一个参数插入字符串之前将其转换为十进制整数)
“%%”
是不同的,因为它直接转换为单个“%%”字符而不使用参数。格式字符串规范中需要这种转换,因为否则任何“%”
都将被视为其他一些代码的第一部分,并且不容易生成包含百分号的字符串
您显示的代码是quine(一个生成自己的代码作为输出的程序)。当它运行print(s%s)
时,它会执行一个字符串格式化操作,其中格式字符串和单个参数都是相同的字符串,s
字符串中的“%r”
是一个转换说明符,它对其参数执行repr
<字符串上的code>repr
生成带引号的字符串。这就是带引号的字符串在输出中的来源
“%%”
生成%%
运算符,该运算符出现在打印
调用中两个之间。如果在s
中只包含一个“%”
,则在格式化操作中会出现错误,该操作需要第二个参数(因为%s
是另一个转换说明符)
思考\\和\。我更改了问题,因此现在它询问%%s%%
是如何以字符串格式编写文本的。否。如果我让a=“print(s%%s)”考虑%s%%“跟我来”
=>'follow me%s'
。好的,我明白了。%%只有当您实际使用%来表示此字符串时,才减少到%……..我同意您的看法。但要注意的是,如果直接使用“%%”,并打印它,则它是一个双百分比。例如:打印(“%%”)并查看输出。这意味着它的行为不一致。至少打印并使用您的右边的格式打印,其本身,“%%”
只是一个带百分之二符号的字符串。只有将其用作格式字符串时,这两个字符才会变成一个。请尝试“%%”%()
,在不带参数的情况下格式化字符串,您会看到这种情况发生。不,我正在使用Python 3My point,大约是双精度。正如上面更多的学术答案所提到的,任何需要插入的字符串都不能包含一个百分比。只需使用双%即可。
s='s=%r;print(s%%s)';print(s%s)
print '% %s' % '' #wrong
print '%% %s' % '' #correct and print '% '