Які проблеми вирішують нові функції python 3? [зачинено]


18

Нові функції Python 3 кажуть:

ми в основному виправляємо відомі роздратування та бородавки та видаляємо багато старої крихти

У ньому йдеться про те, що відрізняється (виправлення), а не чому (проблеми). Я не знайшов, у чому були проблеми. Які проблеми вирішували виправлення?


1
Однак одна бородавка, яку вони не видалили, є причиною того, що потрібно передати «я» класному методу. Невдалий потяг.
Риг

Відповіді:


11

Я просто назву тих, які приходять на думку негайно.

  • Аргументи, що стосуються лише ключових слів: Описані в обґрунтуваннях ПЕП.
  • nonlocal: Без цього закриття не можуть перезаписати змінені закриті. Ця потреба виникає час від часу в декораторах та інших функціях вищого порядку. Єдине розумне рішення (без переключення зовнішнього API), зберігання будь-якого змінного стану, який ви хочете, в об'єкт, що змінюється, є надто негарним.
  • Словник та встановлення розумінь: Створення словників та наборів подібним до розуміння списків менш гарне та дещо повільніше, коли це робиться через розуміння генератора. Це дозволяє нам використовувати ці типи там, де вони доречні, без зайвих витрат. Ditto для встановлених літералів, особливо для inтестів (станом на Python 3.2, вони також оптимізовані оптимізатором вивірки).
  • Восьмі літерали існували в Python 2, але 0777позначення є непростим для тих, хто до цього не звик (в інших контекстах, додаючи провідні нульові зміни, ні значення, ні база).
  • Бінарні літерали корисні для біт-фідінгу, навіть більше, ніж шістнадцяткові.
  • Байтові літерали є симптомом примусового розмежування між рядками unicode і рядками байтів, а рядкові літерали є unicode. Ці зміни змушують задуматися про різницю між текстовими та неінтерпретованими бінарними даними та про кодування. Це важливо, тому що в іншому випадку вам потрібно провести обширне тестування (з інформацією про нас, які говорять про дурнів, орієнтованих на Європу / Америку, дуже рідко), щоб знайти помилки, пов'язані з кодуванням.
  • except ex, var-> except ex as varвиправляє загальну помилку except ValueError, IndexError(слід ловити обидва, але тільки ловить першу та перезаписує ім'я IndexErrorз винятим винятком).
  • Оцінка рівня розуміння списку: уникайте забруднювальних просторів імен та дозволяйте розмірковувати про них через вирази генераторів.
  • Видалений синтаксис та модулі: наблизити нас до "Має бути один-- і бажано лише один - очевидний спосіб зробити це". і уникає людей з поганими підручниками, що дотримуються старого та розбитого способу виправлення речей.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.