Jak dynamikowo wykonuję oświadczenie w Pythonie?

W przypadku ex: Załóżę, że wartość X zawiera następujące wyrażenie (A + B) / 2,

a = 1
b = 3
x = (a+b)/2

Wartość dla X będzie ze stołu

2
user1050619 21 sierpień 2012, 21:31

4 odpowiedzi

Najlepsza odpowiedź

Prawdopodobnie chcesz eval

#!/usr/bin/env python

a = 1
b = 3
x = "(a+b)/2"
print eval(x)

Ale zwykle uważa się za a Zła praktyka (kliknij Oto dla bardziej wyszukanego i funnier Wyjaśnienie)

2
Community 23 maj 2017, 12:12

Możesz to zrobić:

a = 1
b = 3
x = '(a+b)/2'

print eval(x)

Należy pamiętać, że wartość dla x jest zamknięta w cytatach, ponieważ eval wymaga obiektu ciąg lub kodu.

Również być może przeczytać To, aby upewnić się, że używasz go bezpiecznie (jak często może być problemem Nie udaję, że jest ekspertem w jego wadach :)).

0
RocketDonkey 21 sierpień 2012, 17:34

Chociaż Python ma zarówno "Exec ()", jak i "Eval ()", wierzę, że będziesz korzystać z tego ostatniego w tym przypadku:

>>> a = 1
>>> b = 3
>>> x = "(a + b)/2"
>>> eval(x)
2
0
D.C. 21 sierpień 2012, 17:35

Możesz użyć eval, jak w

eval(x)

Właściwie możesz użyć

x=eval('(a+b)/2')

Aby uzyskać wynik (Eval zwraca wynik obliczeń w tym przypadku).

0
hochl 21 sierpień 2012, 17:37