Я хочу сослаться на элемент (mem[0]
) списка (mem
) с другим именем (fetch
):
mem = [0]
f = open("File.lx", "rb").read()
for b in f: mem += [b]
size = len(mem)
while mem[0] < size: #using mem[0]
char = (mem[0]*2)+1
source = mem[char]
target = mem[char + 1]
mem[0] += 1
mem[target] = mem[source]
И я попробовал это с with
оператор:
mem = [0]
f = open("File.lx", "rb").read()
for b in f: mem += [b]
size = len(mem)
with mem[0] as fetch: #with statement
while fetch < size: #using mem[0] as fetch
char = (fetch*2)+1
source = mem[char]
target = mem[char + 1]
fetch += 1
mem[target] = mem[source]
Но я получил ошибку:
Traceback (most recent call last):
File "C:\documents\test.py", line 6, in <module>
with mem[0] as fetch:
AttributeError: __enter__
Я подумал, что так будет, потому что так делается с файловыми объектами:
with open("File.lx", "rb") as file:
fileBytes = file.read()
Я прочитал docs для оператора with
и там написано, что загружены методы __exit()__
и __enter()__
.Согласно тому, что я понял после прочтения этого и из AttributeError
, я предполагаю, что элементы последовательности (mem[0]
) не имеют метода __enter()__
.