Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 这里的打印(s%%s)是什么意思?_Python - Fatal编程技术网

Python 这里的打印(s%%s)是什么意思?

Python 这里的打印(s%%s)是什么意思?,python,Python,我知道%是用s替换字符串中的某些内容(但实际上替换谁?) 也许更有趣的是,为什么在%s被s本身取代后,print(s%%s)会自动变成print(s%s) 大多数转换说明符告诉Python如何将传递到%格式运算符中的参数进行转换(例如,“%d”表示在将下一个参数插入字符串之前将其转换为十进制整数) “%%”是不同的,因为它直接转换为单个“%%”字符而不使用参数。格式字符串规范中需要这种转换,因为否则任何“%”都将被视为其他一些代码的第一部分,并且不容易生成包含百分号的字符串 您显示的代码是qui

我知道%是用s替换字符串中的某些内容(但实际上替换谁?) 也许更有趣的是,为什么在
%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 '% '