Запуск exec внутри функции - PullRequest
3 голосов
/ 13 апреля 2010

Как вы можете использовать ключевое слово python exec внутри функций?

Ответы [ 3 ]

13 голосов
/ 13 апреля 2010

Это повредит производительности вашей функции, а также ее удобству обслуживания, но если вы действительно хотите сделать свой собственный код намного хуже, Python предоставит вам «достаточно веревки, чтобы выстрелить себе в ногу» (; -):

>>> def horror():
...   exec "x=23"
...   return x
... 
>>> print horror()
23

Чуть менее ужасно, конечно, было бы exec в конкретном диктанте:

>>> def better():
...   d = {}
...   exec "x=23" in d
...   return d['x']
... 
>>> print better()
23

Это, по крайней мере, позволяет избежать загрязнения пространства имен при первом подходе.

2 голосов
/ 30 сентября 2018

Алекс отвечает немного иначе в Python 3.

Поскольку exec () является функцией в Python 3, используйте следующий шаблон:

def better():
    d = {}
    exec("x=23", d)
    return d['x']

print better()
23

См. Этот вопрос для более подробной информации- Поведение функции exec в Python 2 и Python 3

0 голосов
/ 13 апреля 2010

Да.

class A:
    def __init__(self):
        self.a1 = ''
        self.a2 = ''

def populate():
    att1 = raw_input("enter a1: ")
    att2 = raw_input("enter a2: ")
    my_object = A()
    eval("my_obj.a1 = att1")
    eval("my_obj.a2 = att2")
    if eval("my_obj.a2") == 2:
    print "Hooray! the value of a2 in my_obj is 2"

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...