一行打印命令

Print command writing in one line

我正在学习Python并且对打印命令有疑问。

为什么在以下情况下带有打印命令的代码在一行中工作:

text = "The vegetables are in the fridge."
print(text.replace("vegetables", "fruits"))

但是在这里,当我这样写的时候,我没有得到结果?

numbers = [12, 34, 23, 88, 1, 65]
fruits = ["apple", "pear", "orange", "grapes", "mango"]
print(fruits.extend(numbers))

正确的方法如下:

numbers = [12, 34, 23, 88, 1, 65]
fruits = ["apple", "pear", "orange", "grapes", "mango"]
fruits.extend(numbers)
print(fruits)

我的意思是,如果逻辑如下,第一个功能起作用,然后第二个起作用,那么为什么第一个功能就起作用了?

我希望我能解释一下。

先谢谢了,

莉莉丝

.extend(...)returnsNone。任何就地改变对象的方法 returns None.

.replace(...) returns 具有替换值的新字符串。

不过你可以试试这个单线

print(fruits.extend(numbers) or fruits)
#['apple', 'pear', 'orange', 'grapes', 'mango', 12, 34, 23, 88, 1, 65]

Docs say :

>>>fruits.extend(numbers)
None

这会改变水果 但是新值没有return

Python 字符串是 不可变的 对象,这意味着对它们执行的方法 return 新字符串。

另一方面,列表是可变的,这意味着您可以更改它们:将项目添加到列表中,更改列表中的特定项目等。这些类型的更改是就地完成的:同一个列表被更改。

通常,就地完成的方法没有return值。 fruits.extend(numbers) 没有 return 值,因为它原地更改了 fruits

如果之后需要使用 fruits,将其分成两行的解决方案是好的。如果没有,您可以创建一个新列表并打印如下:

numbers = [12, 34, 23, 88, 1, 65]
fruits = ["apple", "pear", "orange", "grapes", "mango"]
print(fruits + numbers)

这是您认为它正在做的事情:

def extfruits(l1, l2):
    l3 = l1 + l2
    return l3
print(extfruits(fruits, numbers))

实际上是打印Method,只是在原地改变fruits的值。所以,你得到 None.