Программирование и научные вычисления на языке Python/§5: различия между версиями

Содержимое удалено Содержимое добавлено
Нет описания правки
Нет описания правки
Строка 155:
 
 
Результат выражения <tt>r = eval('1+2')</tt> тот же самый, если бы мы записали <tt>r = 1+2</tt>:
 
 
Строка 166:
 
 
В следующих примерах показано, как функция ''eval'' возвращает число, строку или, список, кортеж и так далее. ОбращайтеВо втором примере обратите внимание на типы кавычек.
 
 
Строка 188:
<type 'list'>
 
>>> r = eval('(-1, 1)')
>>> r
(-1, 1)
>>> type(r)
<type 'tuple'>
 
>>> from math import sqrt
>>> r = eval('sqrt(2)')
>>> r
1.4142135623730951
>>> type(r)
<type 'float'>
</source>
 
 
В общем, с <tt>eval</tt> все понятно, но в чем от нее польза? Вспомним про <tt>raw_input</tt>, которая после разговора с пользователем возвращает его ответ как объект типа ''string''. А функция <tt>eval</tt> такие объекты принимает и выполняет. Этому можно найти множество применений. Вот одно из них: напишем маленькую программу, которая принимает и складывает два значения. Значениями может быть все, что угодно, к чему можно применять операцию сложения: целые и дробные числа, строки, списки и так далее. Поскольку мы не знаем, что именно пользователь складывает, то здесь и будет удобно использовать <tt>eval</tt>:
 
 
<source lang="python">
i1 = eval(raw_input('Give input: '))
i2 = eval(raw_input('Give input: '))
r = i1 + i2
print '%s + %s becomes %s\nwith value %s' % \
(type(i1), type(i2), type(r), r)</source>