Python 为什么字符串乘以负整数会得到空字符串?

Python 为什么字符串乘以负整数会得到空字符串?,python,Python,我从根本上理解字符串相乘是如何工作的,但我只是偶然发现了一个奇怪的事实,负数相乘会产生一个空字符串,并认为这很有趣。我想知道深层次的原因 有人对此有很好的解释吗 此行为可能被定义为与范围(-5)一致,即[]。事实上,后者可能正是您观察到的行为的基础。您希望字符串乘以负整数得到什么 另一方面 '0424242' * -5 不用担心,比关键字更重要?超过60是非常方便的。说: 小于0的n值被视为0(产生空值 与s相同类型的序列) 这是整个行动的一部分: *(乘法)运算符产生其参数的乘积。参数必须都

我从根本上理解字符串相乘是如何工作的,但我只是偶然发现了一个奇怪的事实,负数相乘会产生一个空字符串,并认为这很有趣。我想知道深层次的原因


有人对此有很好的解释吗

此行为可能被定义为与
范围(-5)
一致,即
[]
。事实上,后者可能正是您观察到的行为的基础。

您希望字符串乘以负整数得到什么

另一方面

'0424242' * -5
不用担心,比
关键字更重要?
超过60是非常方便的。

说:

小于
0
的n值被视为
0
(产生空值 与s相同类型的序列)


这是整个行动的一部分:

*(乘法)运算符产生其参数的乘积。参数必须都是数字,或者一个参数必须是整数,另一个参数必须是序列。在前一种情况下,这些数字被转换为一种通用类型,然后相乘在一起。在后一种情况下,执行序列重复负重复因子产生空序列


你怎么定义一个负数的字符串乘法呢?你不能有-5。空字符串或None听起来像是一个有效的结果。我可以想象,当您执行
string*int
时,会有一个内部循环来构建结果字符串,这将不满足其初始条件。类似于
string操作符*(string lhs,int rhs){retStr=“”;for(int i=0;i
@HunterMcMillen有很多事情可以用负整数进行有意义的建模。也许字符串不在其中,但你的总括语句背叛了一种公元前的数学方法。@delnan不管我使用了非常模糊的单词“某物”,该语句都是专门针对上述问题的。对,可能有一个
表示i在范围内(num_copies)
(或C等效)在实现中循环,如果传递一个负数,它根本不会执行。@dan04这种推理是本末倒置。代码可能确实是这样的,但这只是因为决定(无论出于何种原因)负数应该导致空字符串。如果没有人考虑过这个问题,做出决定,实现它并记录它,我们的境况会更糟,代码可能在其他方面有缺陷。
# Display results in nice table
print(keyword1, " "*(60-len(keyword1)), value1)
print(keyword2, " "*(60-len(keyword2)), value2)