Спасибо тебе за это! Я читал о списочном понимании, имеющем собственную область, но я не установил связь до сих пор.

от вопрос уже есть ответ здесь:

Python: как я могу запустить eval () в локальной области функции 2 ответа

Рассмотрим следующий гипотетический код:

class B(object):
    def __init__(self):
        self.b = 2

    def foo(self):
        out1 = [eval('self.b')]    # ok
        print(out1)                # prints: [2]
        out2 = [eval(cmd) for cmd in ['self.b']]    # fails
        print(out2)    # NameError: name 'self' is not defined

b = B()
b.foo()

Почему утверждение дляout1 хорошо, но не дляout2, что дает ошибку "Я" не определен "?

Я изучаю Python, и я решил эту проблему, экспериментируя сeval, Да, я знаю использованиеeval в этом примере неуместно, но просто ради того, чтобы взять этот пример за чистую монету, кто-то может объяснить, почему утверждение дляout2 выдает сообщение об ошибке? Кажется, оба утверждения должны работать и давать одинаковый результат.

Спасибо за любые рекомендации.

Ответы на вопрос(0)

Ваш ответ на вопрос