gpt4 book ai didi

python - print(s%%s) 在这里是什么意思?

转载 作者:太空宇宙 更新时间:2023-11-04 08:07:48 26 4
gpt4 key购买 nike

s='s=%r;print(s%%s)';print(s%s)

我理解 % 是用 s 替换字符串中的某些内容(但实际上要替换谁?)也许更有趣的是,为什么 print(s%%s)%s 替换后自动变成 print(s%s) code>s 本身?

最佳答案

您在该代码中看到的 "%%" 是旧版 printf-style of string formatting 的“转换说明符” .

大多数转换说明符告诉 Python 如何将传递给 % 格式运算符的参数转换(例如,"%d" 表示将下一个参数转换为一个十进制整数,然后将其插入字符串)。

"%%" 不同,因为它直接转换为单个 "%" 字符而不消耗参数。在格式字符串规范中需要这种转换,否则任何 "%" 都将被视为其他代码的第一部分,并且没有简单的方法来生成包含百分号的字符串。

您显示的代码是一个 quine(一个生成自己的代码作为输出的程序)。当它运行 print(s%s) 时,它会执行字符串格式化操作,其中格式字符串和单个参数都是相同的字符串 s

字符串中的 "%r" 是一个转换说明符,它对其参数进行 reprrepr 对字符串生成带有引号的字符串。这是输出中引用的字符串的来源。

"%%" 生成出现在 print 中两个 之间的 % 运算符> 打电话。如果只有一个 "%" 包含在 s 中,您会收到关于格式化操作的错误,需要第二个参数(因为 %s是另一个转换说明符)。

关于python - print(s%%s) 在这里是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28145588/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com