[英]Python: trying to create a two variable context manager
我是 Python 新手,所以我猜我在做一些“語法上”不正確的事情。 我正在嘗試使用row
和col
作為坐標系遍歷網格。 到目前為止,這是我的代碼:
from contextlib import contextmanager
# this is the behavior I want
for row in range(10):
for col in range(10):
print("row: {}, col: {}".format(row, col))
@contextmanager
def grid_iter():
for row in range(10):
for col in range(10):
yield row, col
# this is my attempt at a context manager so I can reuse this.
with grid_iter() as row, col:
print("row: {}, col: {}".format(row, col))
這是我得到的輸出:
row: 0, col: 0
row: 0, col: 1
row: 0, col: 2
....
row: 9, col: 7
row: 9, col: 8
row: 9, col: 9
Traceback (most recent call last):
File "grid_iterator.py", line 17, in <module>
with grid_iter() as row, col:
AttributeError: __exit__
你應該能夠做到:
def grid_iter():
for row in range(10):
for col in range(10):
yield row, col
for row, col in grid_iter():
print("row: {}, col: {}".format(row, col))
yield
本身的使用使grid_iter
返回一個生成器(你可以通過運行print(type(grid_iter()))
來檢查它,然后你可以像普通的 for-in 循環一樣使用它
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.