簡體   English   中英

Python:嘗試創建一個兩變量上下文管理器

[英]Python: trying to create a two variable context manager

我是 Python 新手,所以我猜我在做一些“語法上”不正確的事情。 我正在嘗試使用rowcol作為坐標系遍歷網格。 到目前為止,這是我的代碼:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM