Забытые возможности 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'
Ещё одна приятная особенность состоит в том, что складываются они в момент компиляции, а не выполнения.
Comments
Comment form for «Забытые возможности Python 2»