【发布时间】:2021-02-20 03:46:26
【问题描述】:
今天我正在阅读 Kazil 和 Jarumul (Link) 撰写的“Data Wrangling with Python”。这是我使用 Python 编码的第一周。
在正文中,我们在第 53 页有一段 sn-p 代码,如下所示:
import json
json_data = open('Book Source Files/data/chp3/data-text.json').read() **#<< Focus Line**
data = json.loads(json_data) #json object, loads method?
for item in data:
print('item', item)
我很难理解上面的重点线(第二行代码)。
我知道 Python 在调用对象方法时似乎遵循 object.method(Inputs) 的一般语法。我还了解到,当我对对象或方法有疑问时,我可以在不带括号的情况下调用帮助:
help(open.read) #errors. Incorrect.
但在这种情况下,看起来好像调用了两个方法:open().read()。
我尝试寻求有关此方法的帮助来解释这一点,但似乎我在这里缺少一个核心概念。这是某种速记吗?这被称为什么,在什么情况下使用?
后续问题: 有时我们将许多不同的值传递给一个函数。例如:
print('this','is','a','line','of','text')
为什么有些方法似乎有关于提供哪些项目的规则,但其他方法在调用方法时可以提供可变数量的东西?
【问题讨论】:
-
两个方法被调用。
open()返回一个具有read()方法的对象。您也可以将对象从open()保存到变量--f = open(path),然后调用方法json_data = f.read()。 -
请注意,这实际上不是推荐的做事方式:您没有引用
open()返回的文件对象,因此无法显式关闭文件以表明你已经完成了。
标签: python python-3.x oop