【问题标题】:Should I pass an argument before a period or between parenthesis?我应该在句点之前或括号之间传递参数吗?
【发布时间】:2023-02-22 07:38:19
【问题描述】:

为什么 Python 方法和/或函数中的参数有时在句点之前传递,而有时它们在括号内?例如,argument.function()function(argument)

是否有关于何时或为何应以某种方式调用它的规则?我发现很难记住某些功能应该采用哪种方式。

【问题讨论】:

  • 点符号用于模块、方法和属性。你用过课程吗?
  • argument.function() -- 嗯,你在哪里看到这是一个惯例?通常为classInstance.method()module.function()。参数仍然在括号之间。
  • 我假设您引用的是 "-".join(my_list) 之类的案例,对吧?
  • 真实的例子会很有用。
  • 你所说的argument.function()实际上是instance.method()。它不适用于任意函数的第一个参数;它仅有的适用于方法中的实例位置。因此,您应该在调用方法时使用它没有其他时间.

标签: python python-3.x


【解决方案1】:

你描述的是功能方法. A方法有点类似于功能,除了它与对象/类相关联(您可以在 this Python documentation 中找到更多信息)。

例如,一个功能你在 Python 中经常调用的是print()print() 是标准函数,不与任何对象相关联。因此,您可以随时调用此函数。

A方法首先通过使用点表示法绑定到特定对象来调用。例如,在处理字符串对象时,您可能会调用的一个常见方法可能是 lower(),它将字符串变为小写。要调用它,您可以编写 text.lower(),其中 text 是一个包含一些字符串的变量。

你不能自己调用​​lower(),也不能写lower(text),因为方法必须绑定到它正在操作的对象。这是一些示例代码:

text = 'Hello, here is some text that contains Mixed Case letters.'
new_text = text.lower()
print(new_text)  # new_text now contains text but in all lowercase
print(text)  # text remains unmodified

至于为什么会这样,很大程度上是因为Python采用了面向对象编程(OOP)的原则进行设计。为了帮助记忆,您确实需要花时间使用代码和阅读文档。在编码时问自己一个很好的问题是,“这个函数是否与对象相关联?”

【讨论】:

    猜你喜欢
    • 2015-06-28
    • 2013-06-27
    • 2018-06-07
    • 1970-01-01
    • 2016-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-05
    相关资源
    最近更新 更多