Йордан обнови решението на 29.04.2013 05:55 (преди над 11 години)
+REPOSITORY = 'https://github.com/jordanjambazov/python-retrospective'
+
+# Двадесет неща, които научих.
+#
+# 1. Ако пишеш на Python 3 няма нужда от `# -*- coding: utf-8 -*-`
+# по подразбиране всичко е Unicode.
+# 2. Python е доста експресивен език и като цяло няма нужда от
+# коментари по кода. Коментарите могат да бъдат объркващи и
+# да нарушават четимостта.
+# 3. Built-in функциите any и all могат да бъдат доста полезни
+# и ни помагат да съкратим кода, когато искаме да проверим
+# булеви стойности в масив.
+# 4. В Python 3 функцията reduce е преместена в functools модула.
+# Все пак в 99% от случаите експлицитен for цикъл е по-четим.
+# 5. Новият super() може да бъде извикван без аргументи, класът
+# и обекта, за който се извиква автоматично се определят.
+# 6. Добавена е нова built-in функция next(), която извиква __next__
+# метода на обекта. Доста полезно при работа с итератори.
+# 7. Добра практика е кода да се тества за съвместимост с PEP8
+# конвенцията, което става доста лесно с модула pep8. След това
+# извикваме `python3 -m pep8 test.py` и лесно забелязваме
+# лошите практики.
+# 8. Можем да използваме __new__ за да контролираме създаването
+# на нов обект. Това е метода, който се извиква преди всички
+# останали, и отговаря за създаването на самият обект. След
+# това __init__ прави самата инициализация на данните във вече
+# съществуващия обект на класа.
+# 9. В Python 3 не може да се използват u"..." литерали за
+# създаването на Unicode текст (всички стрингове са Unicode) по
+# подразбиране. Може да се използват b"..." литерали за двоична
+# информация.
+# 10. Можем да използваме Dictonary Comprehension. Например,
+# `{k: v for k, v in stuff}` означава същото като dict(stuff),
+# но е доста по-гъвкаво.
+# 11. Имаме литерален синтаксис за set, например `{1, 2}`. Трябва
+# да се има впредвид, че `{}` ще върне празен речник, а за създаване
+# на празен set трябва да използваме `set()`
+# 12. Изрази от типа на `3/2` в Python 3 връщат float. За да имаме
+# старото поведение, трябва да използваме `3//2`.
+# 13. Можем да правим разширено разпакетиране на итерируеми по следният
+# начин: `a, b, *rest = some_sequence`
+# 14. Добавена е нова резервирана дума, nonlocal, която позволява да
+# променяме стойността на променлива извън локалния scope, но не в
+# глобалния.
+# 15. По-добре е да се използва format() метода за форматиране на
+# текст, отколкото `%` оператора, който е deprecated.
+# 16. Синтаксиса за метакласове в Python 3 е следният:
+# `class C(metaclass=M):`, и __metaclass__ променливата вече не
+# се поддържа.
+# 17. На функцията print() може да й бъде променен разделителят:
+# ` print("There are <", 2**32, "> possibilities!", sep="")`
+# 18. Можем да използваме with-statement и контекстни мениждъри,
+# когато искаме да изпълним код, който трябва да бъде енкапсулиран.
+# 19. Test-driven разработката на софтуер ни помага да пишем по-добър
+# код.
+# 20. Beautiful is better than ugly.
+# Explicit is better than implicit.
+# Simple is better than complex.
+# Complex is better than complicated.
+# Flat is better than nested.
+# Sparse is better than dense.
+# Readability counts.
+# Special cases aren't special enough to break the rules.
+# Although practicality beats purity.
+# Errors should never pass silently.
+# Unless explicitly silenced.
+# In the face of ambiguity, refuse the temptation to guess.
+# There should be one-- and preferably only one --obvious way to do it.
+# Although that way may not be obvious at first unless you're Dutch.
+# Now is better than never.
+# Although never is often better than *right* now.
+# If the implementation is hard to explain, it's a bad idea.
+# If the implementation is easy to explain, it may be a good idea.
+# Namespaces are one honking great idea -- let's do more of those!
Много добре. Само не разбрах #16
къде точно си го ползвал
Не съм го използвал в Python 3 още, но пак е нещо научено в рамките на курса. :)