程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

为什么open()和.read()的语法不同?

发布于2020-06-05 16:30     阅读(2223)     评论(0)     点赞(27)     收藏(1)


这是一个新手问题,但我环顾四周,无法找到与此问题相关的任何内容(也许是因为它对其他人太简单/显而易见)。

因此,我正在研究Zed Shaw的“艰难地学习Python”,并且正在练习15。这不是我第一次接触python,但是这次我实际上是在尝试从更基础的角度理解它,所以我真的可以一次用一种编程语言做某事。我还应该警告说,我在面向对象的编程方面没有足够的背景,或者没有完全内部化什么是对象,类等。

无论如何,这里是练习。想法是了解基本的文件打开和阅读:

from sys import argv

script, filename = argv

txt = open(filename)

print "Here's your file %r:" % filename
print txt.read()

print "I'll also ask you to type it again:"
file_again = raw_input("> ")

txt_again = open(file_again)

print txt_again.read()

txt.close()
txt_again.close()

我的问题是,为什么openread函数使用不同?

例如,要阅读示例文件,为什么不/不能print read(txt)在第8行输入
为什么我在变量前面加上句号,并在变量后面加上函数?
或者,为什么不编写第5行txt = filename.open()

这让我感到困惑。仅仅是某些函数具有一种语法而其他函数具有另一种语法吗?还是我不了解如何将变量传递给函数。


解决方案


句法

专门针对语法差异:open()是一个函数,read()是一个对象方法

调用open()函数时,它将返回一个对象(第一个txt,然后是txt_again)。

txt文件对象文件的对象使用read()方法定义因此,在上面的代码中:

txt = open(filename)

调用open()的函数和类的一个对象指定的文件TXT

之后,代码:

txt.read()

调用与对象txt关联的方法read()

对象

在这种情况下,重要的是要理解对象不仅被定义为数据实体,而且还定义了针对这些实体的内置操作。

类的例如一个假设的对象可能与被定义的方法start_engine)( stop_engine() )open_doors(

因此,与上述文件示例类似,用于创建和使用汽车的代码可能是:

my_car = create_car(type_of_car)
my_car.start_engine()

(有关OOP的维基百科条目。)



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/407181/dbf8d82af787a76e6780/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

27 0
收藏该文
已收藏

评论内容:(最多支持255个字符)