繁体   English   中英

为什么某些内置类型的方法可以就地操作,而有些则不能?

[英]Why do some methods of built-in types operate in-place and some don't?

dog = 'penny'
print(dog.title())

dog_names = ['pete', 'luke', 'shane']
print(dog_names.remove('shane'))

为什么 Python 为dog.title()返回Penny的输出,而为dog_names.remove('shane')返回None 为什么我不能使用方法remove打印列表dog_name而我可以在dog上使用方法title

我知道我得到None因为dog_name.remove没有回报,但是dog.title如何有回报?

title()函数是 Python 中的一个预定义函数,用于将字符串的第一个字符转换为大写,将其余字符转换为小写,并返回一个新字符串。 在你的例子中,如果你运行print(dog)你可以看到penny都是小写的,但是如果你运行print(dog.title())你可以看到Penny中的第一个字母P是大写的,其余的都是小写的

为了回答您的问题,首先,您需要了解返回的内容。

在函数或方法上调用print时,它将显示返回值。 话虽如此,您可以从文档中检查两个函数的返回值

https://docs.python.org/2/tutorial/datastructures.html#more-on-lists

list.remove(x) 从列表中删除值为 x 的第一项。 如果没有这样的项目,这是一个错误。

https://docs.python.org/3.7/library/stdtypes.html#str.title

str.title()返回字符串的标题版本,其中单词以大写字符开头,其余字符为小写。

  • 注意title()如何返回带标题的 case 字符串,这就是它被打印的原因。
  • 另一方面, remove()不返回任何内容,在这种情况下,python 的默认返回值为None ( Source ) 这就是为什么在调用remove()时会打印它

任何编程语言中的function / method执行特定任务。 可以对传递给函数的输入执行任务。 执行任务后,函数可能希望将结果返回给函数的调用者。 它可以通过以下方式做到这一点:

  1. 通过修改传递给它的参数或通过更改调用方法的对象。 (例如list数据类型的remove()方法)
  2. 通过将结果返回给调用者。 title()方法)
  3. (1)和(2)的组合

您的remove()方法不会将任何内容返回给调用者。 相反,它只是从列表中删除一个元素。 要在删除元素后打印列表:

dog_names.remove('shane')
print(dog_names)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM