Python中"iterable","iterator"和"iteration"的最基本定义是什么?
我已阅读多个定义,但我无法确定其确切含义,因为它仍然不会沉入其中.
有人可以帮助我解释外行人的3个定义吗?
我想了解更多iterators,所以如果我错了请纠正我.
迭代器是一个对象,它具有指向下一个对象的指针,并被读取为缓冲区或流(即链接列表).它们特别有效,因为它们只是通过引用而不是使用索引来告诉您接下来的内容.
但是我仍然不明白为什么会发生以下行为:
In [1]: iter = (i for i in range(5))
In [2]: for _ in iter:
....: print _
....:
0
1
2
3
4
In [3]: for _ in iter:
....: print _
....:
In [4]:
Run Code Online (Sandbox Code Playgroud)
在通过迭代器(In [2])的第一个循环后,它就好像被消耗并留空,所以第二个循环(In [3])不打印任何内容.
但是我从未为iter变量赋予新值.
在for循环的引擎下真正发生了什么?
我目前正在尝试(但失败了)在我的简单应用程序上执行单元测试,该应用程序将数据发布到 MySQL 数据库。下面是我尝试运行的单元测试,不确定这是否能成功测试我的代码,但会出现 TypeError: 'Mock' object is not iterable
单元测试.py
from unittest import mock
from unittest.mock import patch, MagicMock
from unittest.mock import Mock
from source.src.scores import *
@mock.patch('source.src.scores.request')
def test_add_scores(self):
columns = ["Match_ID", "Home_Score", "Away_Score"]
values = [1, 1, 1]
expected_score = {columns[i]: values[i] for i in range(len(columns))}
with patch('source.src.scores.mysql.connector') as patch_connector:
cursor = Mock()
cursor.fetchone.return_value = values
cursor.column_names = columns
connect = Mock()
connect.cursor.return_value = cursor
patch_connector.connect.return_value = connect
with patch('source.src.scores.jsonify') as json:
json.return_value = expected_score
json_return, http_code = …Run Code Online (Sandbox Code Playgroud)