在读取,截断和关闭命令后加上括号的原因?

时间:2019-10-29 00:05:25

标签: python

有人可以给我解释一下 .read().truncate().close()命令在做什么?

我为他们为什么为空以及为什么不写成这样而感到困惑: read(filename)truncate(filename)close(filename),而不是 filename.read()filename.truncate()filename.close()

但是open被写为open(filename),而不是filename.open()

1 个答案:

答案 0 :(得分:3)

这些括号()用于实际调用某个函数,而不仅仅是引用它。

例如,考虑:

def func():
    return "I am being called!"


print(func)
# <function func at 0x7f41f59a6b70>

print(func())
# I am being called!

关于func(x)x.func()语法,这是一种设计/风格选择。

第一种语法与过程设计/样式相关联,而第二种语法与显式面向对象的设计/样式相关联。

Python(以及许多其他通用语言)都支持。

func设计为:

def func(x):
    ...

您将使用程序样式。

func设计为:

class MyX(object):
    def func(self):
        ...

您将使用面向对象的样式。 请注意,这将要求x属于MyX类型(或其子类)。

Python教程中提供了更多信息,例如here

最后的注释:在某些编程语言(尤其是Dnim)中,存在Uniform Function Call Syntax的概念,该概念基本上允许您编写函数,然后使用任何语法对其进行调用(过程性或面向对象)。