Blog Trac Lyrics for music

Archive for July 07, 2007

Забытые возможности Python

У всех на слуху и часто используются такие возможности Python, как генераторы, декораторы, list comprehensions, оператор with… Но есть в Питоне и некоторые возможности, которые достаточно мало кому известны.

Например, то что в list comprehensions можно использовать “вложенные” циклы:


   >>> [a + b for a in 'abc' for b in 'de']
   ['ad', 'ae', 'bd', 'be', 'cd', 'ce']
   

Или вот другая возможность - сравнения цепочкой Питон трактует в математическом смысле, а не в программистском. То есть, x < y <= z интерпретируется как x < y and y <= z, не учитывая того, что в первом варианте y вычисляется единожды, а во втором - дважды. Примеры использования:


   >>> 'a' in 'ab' in 'abc'
   True
   >>> 5 in [5] in [[5]]
   True
   >>> 'a' in 'abcd' in ['abcd', 'adf']
   True
   >>> a = 5
   >>> a == 5 != 234
   True
   

Понятное дело, что использовать можно любые комбинации операций, как бы они неприглядно не выглядели:


   >>> 5 < 20 in (20,30)
   True
   >>> 5 > 1 < 5
   True
   >>> 5 is not None < 20
   True
   >>> 1 < 2 < 3 < 4 < 5 < 6 < 7 < 8
   True
   

P.S.Есть ещё пару вещей, про них я чуть позже расскажу.