Blog Trac Lyrics for music

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

Как я и обещал, пишу продолжение.

Где используется else?


   if test1:
       statement1
   elif test2:
       statement2
   else:
       statement3
   


   try:
       statement1
   except:
       statement2
   else:
       statement3
   finally:
       statement4
   

Всё? Казалось бы - а что ещё может быть? Оказывается, else ещё можно использовать в циклах. Действует он после того, как закончился собственно цикл:


   >>> for a in xrange(3):
   ...     print a
   ... else:
   ...     print 'else'
   ...
   0
   1
   2
   else
   


   >>> a = 0
   >>> while a < 3:
   ...     print a
   ...     a += 1
   ... else:
   ...     print 'else', a
   ...
   0
   1
   2
   else 3
   


   >>> a = 0
   >>> while a > 3:
   ...     print a
   ... else:
   ...     print 'else'
   ...
   else
   

В чём же, в таком случае, состоит его полезность? Некоторая полезность состоит в том, что если в цикле сработал break, то else не выполняется:


   >>> for a in xrange(3):
   ...     print a
   ...     if a == 1:
   ...         print 'break'
   ...         break
   ... else:
   ...     print 'else'
   ...
   0
   1
   break
   

В принципе, иногда такое нужно, но редко :)

Ну и последнее - строки считаются одной строкой, если между ними только пробельные символы:


   >>> def f(s):
   ...     print s
   ...
   >>> f("first " # first
   ... "second " # second
   ... 'third ' # third
   ... '''fourth
   ...  fifth''') # end
   first second third fourth
    fifth
   >>> "first " 'second'
   'first second'
   

Сделано это для того, чтобы уменьшить количество обратных слэшей в строках - комбинировать можно raw-string и обычные, а можно юникодные и ASCII-строки - результат юникодный, если хотя бы один кусочек юникодный:


   >>> r'begin n ' """end"""
   'begin \n end'
   >>> u'unicode ' 'non-unicode'
   u'unicode non-unicode'
   >>> 'non-unicode ' u'unicode'
   u'non-unicode unicode'
   

Ещё одна приятная особенность состоит в том, что складываются они в момент компиляции, а не выполнения.

Add post to: Delicious Reddit Slashdot Digg Technorati Google
Comment

Comments

No comments for this post

Comment form for «Забытые возможности Python 2»

Required. 30 chars of fewer.

Required.