The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  вход/выход  слежка  RSS
"Выпуск языка программирования Python 3.6"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Выпуск языка программирования Python 3.6"  +2 +/
Сообщение от opennews (ok) on 24-Дек-16, 00:39 
После 15 месяцев разработки представлен (http://blog.python.org/2016/12/python-360-is-now-available.html) значительный релиз языка программирования Python 3.6 (https://www.python.org/downloads/release/python-360/).

Среди добавленных новшеств (https://docs.python.org/3.6/whatsnew/3.6.html):

-  Добавлена поддержка форматируемых строковых литералов, позволяющих определить строку, содержащую подстановки. Заданные в фигурных скобках выражения вычисляются и подставляются в текст строки во время выполнения программы и форматируются с использованием протокола format(). Например:


   >>> name = "Fred"
   >>> f"He said his name is {name}."
   'He said his name is Fred.'
   >>> width = 10
   >>> precision = 4
   >>> value = decimal.Decimal("12.34567")
   >>> f"result: {value:{width}.{precision}}"  # nested fields
   'result:      12.35'


-  Возможность использования символов подчёркивания для улучшения читаемости чисел, например, теперь можно указывать 1_000_000 или 0x_FF_FF_FF;


-  Определён синтаксис аннотаций  для переменных, позволяющий передать интерпретатору информацию о типах переменных. Аннотации сохраняются в атрибуте __annotations__ класса или модуля,  но в отличие от языков со статической типизацией не накладывают каких-либо ограничений, а  служат для структурирования метаданных, которые могут использоваться сторонними инструментами и библиотеками. Например:

   primes: List[int] = []

   captain: str  # Note: no initial value!

   class Starship:
      stats: Dict[str, int] = {}

-  Возможность определения асинхронных генераторов. В прошлой ветке Python 3.5 был реализован новый синтаксис async / awai для определения сопрограмм, но в теле одной функции невозможно было одновременно использовать await и yield. В Python 3.6 данное ограничение снято, что позволяет определять генераторы, работающие в асинхронном режиме:


   async def ticker(delay, to):
       """Yield numbers from 0 to *to* every *delay* seconds."""
       for i in range(to):
           yield i
           await asyncio.sleep(delay)


-  Добавлена возможность асинхронной обработки списковых включений (https://ru.wikipedia.org/wiki/%D0%A1%D0%...) (comprehensions) через использование выражения  "async for" для списков, множеств и словарей. Также допускается применение выражений await для всех видов списковых включений. Например:


   result = [i async for i in aiter() if i % 2]
   result = [await fun() for fun in funcs if await condition()]


-  Переработана реализация типа  dict, которая переведена на более компактное представление, похожее на реализацию от проекта PyPy. В итоге удалось сократить потребление словарями памяти на 20-25%;

-  Представлен новый метод "__init_subclass__", упрощающий настройку подкласса без использования метакласса;

-  Обеспечено сохранение порядка определения атрибутов класса (прядок можно отследить через новый атрибут  "__dict__");

-  Порядок определения аргументов ключевых слов, передаваемых в функцию, теперь соответствует порядку элементов в **kwargs;
-  Добавлена поддержка контрольных вызовов (probe) DTrace и SystemTap. При сборке с  опцией "--with-dtrace" Python может устанавливать маркеры для таких событий, как вызов и выход из функции, начало/завершение сборки мусора и выполнение строки кода;

-  Представлена новая переменная окружения  PYTHONMALLOC, через которую можно выбрать механизм распределения памяти для Python или включить отладочные хуки. Например, при указании "PYTHONMALLOC=debug" добавляются средства определения выхода за границы буфера, применяется специально заполнение новых и освобождённых блоков и т.п.

-  Стабилизирован API модуля asyncio (https://docs.python.org/3.6/library/asyncio.html#module-asyncio), значительно увеличена производительность и расширена функциональность;
-  Добавлен протокол для определения путей в файловой системе в виде отдельных объектов pathlib. Например:


   >>> import pathlib
   >>> with open(pathlib.Path("README")) as f:
   ...     contents = f.read()


-  В функции datetime.datetime и datetime.time из модуля datetime (https://docs.python.org/3.6/library/datetime.html#module-dat...)   добавлен атрибут fold, информирующий о вхождении в неоднозначные промежутки времени, например в промежуток, возникающий при переводе часов на час назад;

-  В разряд стабильных переведён модуль typing (https://docs.python.org/3.6/library/typing.html#module-typing);

-  Значительно переработан модуль tracemalloc (https://docs.python.org/3.6/library/tracemalloc.html#module-...), расширены средства диагностики ошибок при распределении памяти;
-  В состав стандартной библиотеки включён новый модуль secrets (https://docs.python.org/3.6/library/secrets.html#module-secrets), предоставляющий средства для генерации криптографически надёжных псевдослучайных чисел, пригодных для формирования различных ключей и токенов;
-  На платформе Linux при вызове os.urandom() обеспечено ожидание завершения инициализации энтропии для генератора urandom;
-  В модулях  hashlib и ssl добавлена поддержка OpenSSL 1.1.0 (https://www.opennet.me/opennews/art.shtml?num=45027).
-  Улучшен набор настроек по умолчанию для модуля ssl (https://docs.python.org/3.6/library/ssl.html#module-ssl);
-  В модуль hashlib (https://docs.python.org/3.6/library/hashlib-blake2.html#modu...) добавлена поддержка алгоритмов хэширования BLAKE2, SHA-3 и SHAKE, реализована функция формирования ключа  scrypt() (https://ru.wikipedia.org/wiki/Scrypt);

-  Представлена большая порция улучшений, связанных с работой на платформе Windows.


URL: http://www.mail-archive.com/python-announce-list@python...
Новость: http://www.opennet.me/opennews/art.shtml?num=45755

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


6. "Выпуск языка программирования Python 3.6"  +/
Сообщение от chinarulezzz (ok) on 24-Дек-16, 01:00 
Аннотация типов... ммм, представляю сколько костылей навтыкают, прежде чем скажут "готовится python4".
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

86. "Выпуск языка программирования Python 3.6"  +/
Сообщение от ADR email(ok) on 28-Дек-16, 01:53 
А что с ней не так?
Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

10. "Выпуск языка программирования Python 3.6"  –6 +/
Сообщение от Аноним (??) on 24-Дек-16, 02:40 
> >>> name = "Fred"
   >>> f"He said his name is {name}."

   'He said his name is Fred.'

не прошло и 20 лет.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

17. "Выпуск языка программирования Python 3.6"  –5 +/
Сообщение от Гость (??) on 24-Дек-16, 05:46 
Да уж. Вспомним этот пример из главы 1.2 Кернигана-Ричи:

     PRINTF("%4.0F %6.1F\N", FAHR, CELSIUS);

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

22. "Выпуск языка программирования Python 3.6"  +7 +/
Сообщение от анон on 24-Дек-16, 09:35 
Спецы по питону набигают
Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

36. "Выпуск языка программирования Python 3.6"  +9 +/
Сообщение от angra (ok) on 24-Дек-16, 11:33 
Это давно есть в питоне. Кто-то явно не понял в чем новшество.
Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

45. "Выпуск языка программирования Python 3.6"  +4 +/
Сообщение от Имя on 24-Дек-16, 12:57 
оно и раньше было, просто писалось как
"He said his name is {}.".format (name)
в фиг. скобках указывается спец. формата.

или для второго питона
"He said his name is %s." % name

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

84. "Выпуск языка программирования Python 3.6"  +/
Сообщение от Nas_tradamus (ok) on 27-Дек-16, 12:51 
[btr@mb:~] $ python2.7
Python 2.7.10 (default, Sep 23 2015, 04:34:14)
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.72)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> name = 'Fred'
>>> "He said his name is {}.".format(name)

'He said his name is Fred.'
>>>

Ответить | Правка | ^ к родителю #45 | Наверх | Cообщить модератору

69. "Выпуск языка программирования Python 3.6"  +2 +/
Сообщение от oopsy on 25-Дек-16, 13:25 
Cовершенно c Вами согласен, коллега.
Не прошло и 20 лет как неосиляторы продавили ненужную на первый взгляд фичу.

в python 2.7 (у меня нет более старой версии чтобы проверить) работает и

name = "Fred"
print "%(name)s" % locals()

и (по документации - должно работать с 2.6):

name = "Fred"
print "{name}".format(**locals())

т.е. f'' противоречит dao python в части «There should be one-- and preferably only one --obvious way to do it.». И это настоящий позор.

Ладно, понизим градус радикализма - эта фича не нужна конкретно мне,
мне никогда не хотелось писать и не случалось видеть «% locals()» или «.format(**locals())»

Возможно, что у кого-то это нужно писать в каждой строке. Типа «Although practicality beats purity.»

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

16. "Выпуск языка программирования Python 3.6"  –6 +/
Сообщение от not inkognito (ok) on 24-Дек-16, 05:31 
Как по мне Разделение символов подчеркиванием Ниочень совсем :(Вроде всегда  везде ставились точки (не  имеюв виду код). 1.000.000.000 выглядит намного лучше чем вырвиглазное 1_000_000_000 и даже вроде меньше места занимает хотябы визуально. Если точки/запятые никак нельзя использовать то лучше уж вообщеникак тогда по моему.
а вообще всегда  считал символы выделением или разделением с права  на лево по 3 символа :p
пример - 61998536
Выделяем  635+899+16=3+3+2=8 знаков от 7 до 9 знаков у нас миллионы значит имеем 61 млн 998 тыс 536 р.
:p
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

20. "Выпуск языка программирования Python 3.6"  +7 +/
Сообщение от Blind Vic (ok) on 24-Дек-16, 09:30 
>  вообще всегда  считал символы выделением или разделением с права  на лево по 3 символа

То, что ты любишь боль, не обязывает других ни к чему

> даже вроде меньше места занимает хотябы визуально

Серьезно?

Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

23. "Выпуск языка программирования Python 3.6"  +7 +/
Сообщение от Аноним (??) on 24-Дек-16, 09:46 
Он просто не в курсе про моноширинные шрифты.
Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору

28. "Выпуск языка программирования Python 3.6"  +6 +/
Сообщение от Аноним (??) on 24-Дек-16, 10:12 
> ... 1.000.000.000 выглядит намного лучше чем вырвиглазное 1_000_000_000 и даже ...

Так и сколько Вы это хотели указать 1.0, 1000.0, где там плавающая точка-то стоит? Вы вводите такой записью всех в заблуждение, а это точно не то чего хотят авторы языка и программисты.

С подчеркиванием конечно компромис, но он никого не вводит в заблуждение.

Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

34. "Выпуск языка программирования Python 3.6"  +1 +/
Сообщение от Anonisimus on 24-Дек-16, 11:13 
Точки? А как тогда целые от чисел с плавающей запятой парсер различать должен?
Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

41. "Выпуск языка программирования Python 3.6"  –1 +/
Сообщение от анонимусимус on 24-Дек-16, 12:24 
>[оверквотинг удален]
> везде ставились точки (не  имеюв виду код). 1.000.000.000 выглядит намного
> лучше чем вырвиглазное 1_000_000_000 и даже вроде меньше места занимает хотябы
> визуально. Если точки/запятые никак нельзя использовать то лучше уж вообщеникак тогда
> по моему.
> а вообще всегда  считал символы выделением или разделением с права  
> на лево по 3 символа :p
> пример - 61998536
> Выделяем  635+899+16=3+3+2=8 знаков от 7 до 9 знаков у нас миллионы
> значит имеем 61 млн 998 тыс 536 р.
> :p

Ужас. Что я только что прочитал? Ни в зуб ногой... а порассуждать своим пустым котелком любитель я смотрю.

Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

47. "Выпуск языка программирования Python 3.6"  –1 +/
Сообщение от adminlocalhost (ok) on 24-Дек-16, 14:48 
>  Как по мне Разделение символов подчеркиванием Ниочень совсем :(Вроде всегда  
> везде ставились точки (не  имеюв виду код). 1.000.000.000 выглядит намного
> лучше чем вырвиглазное 1_000_000_000 и даже вроде меньше места занимает хотябы
> визуально. Если точки/запятые никак нельзя использовать то лучше уж

Лучше всего стандартный разделитель "штрих" использовать.

1`000`000`000

Который вводится если нажать шифт и ту клавишу, что у тебя на клавиатуре в цифровом ряду самым первым слева, ошибочно отмеченная как "Ё".

Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

65. "Выпуск языка программирования Python 3.6"  –2 +/
Сообщение от Аноним (??) on 25-Дек-16, 02:38 
Нажимаю Shift+Ё, получаю тильду. ЧЯДНТ?
И сам же использовал одиночный штрих, что на "Э", а не backtick (`), лживый анон.
Ответить | Правка | ^ к родителю #47 | Наверх | Cообщить модератору

75. "Выпуск языка программирования Python 3.6"  –1 +/
Сообщение от Аноним (??) on 26-Дек-16, 12:20 
Запятая же - 1,000,000.00 (c) Англосаксы.
"Большинство стран выбрали в качестве десятичного символа запятую. Однако англоязычные страны предпочли точку, а запятую стали использовать как разделитель групп разрядов."
Ответить | Правка | ^ к родителю #47 | Наверх | Cообщить модератору

48. "Выпуск языка программирования Python 3.6"  +/
Сообщение от Аноним (??) on 24-Дек-16, 15:10 
В информатике точка является разделителем целой и дробной частей числа. Может, конечно, в вашем вижуальном васике это иначе, а в остальных ЯП это так.
Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

85. "Выпуск языка программирования Python 3.6"  +/
Сообщение от Аноним (??) on 27-Дек-16, 23:23 
В визуальном васике тоже точка, а про остальные языки вы не правы, среди них есть с другими разделителями.
Ответить | Правка | ^ к родителю #48 | Наверх | Cообщить модератору

19. "Выпуск языка программирования Python 3.6"  +2 +/
Сообщение от Blind Vic (ok) on 24-Дек-16, 09:27 
Не упомянули, что словари теперь упорядочены

> The order-preserving aspect of this new implementation is considered an implementation detail and should not be relied upon (this may change in the future, but it is desired to have this new dict implementation in the language for a few releases before changing the language spec to mandate order-preserving semantics for all current and future Python implementations; this also helps preserve backwards-compatibility with older versions of the language where random iteration order is still in effect, e.g. Python 3.5).

https://docs.python.org/3.6/whatsnew/3.6.html#new-dict-imple...

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

25. "Выпуск языка программирования Python 3.6"  +2 +/
Сообщение от Аноним (??) on 24-Дек-16, 10:06 
А вот это уже серьезное изменение. В целом конечно всем ... как обычно, но я бы не стал так резко менять поведение системных структур. Можно было бы добавить просто новый какой-то подход к записи, что то на подобии <> например или (a. b) как в Lisp... В целом из фичи сделали треш. Про asyncio нужна нормальная документация, так как в 3.5 почти нихрена непонятно было и приходилось смотреть код ... Упоминание про event_loop появилось в целом сравнительно недавно в документации, что реально грустно.
Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

87. "Выпуск языка программирования Python 3.6"  +/
Сообщение от ADR email(ok) on 28-Дек-16, 01:58 
Всегда есть collections.OrderedDict.
Ответить | Правка | ^ к родителю #25 | Наверх | Cообщить модератору

32. "Выпуск языка программирования Python 3.6"  +1 +/
Сообщение от Аноним (??) on 24-Дек-16, 10:49 
"new implementation is considered an implementation detail and should not be relied upon"

Т.е. по сути пока недокументированная возможность, которая может измениться в будущих выпусках.

Ответить | Правка | ^ к родителю #19 | Наверх | Cообщить модератору

60. "Выпуск языка программирования Python 3.6"  +1 +/
Сообщение от Blind Vic (ok) on 24-Дек-16, 23:07 
Я уверен, что это станет стандартом. Например, class attribute definition order завязан на новом dict:

> Since compact dict has landed in 3.6, __definition_order__ has been removed. cls.__dict__ now mostly accomplishes the same thing instead.

https://www.python.org/dev/peps/pep-0520/


И **kwargs:

> Note: in Python 3.6 dict is order-preserving. This virtually eliminates performance concerns.

https://www.python.org/dev/peps/pep-0468/

Ответить | Правка | ^ к родителю #32 | Наверх | Cообщить модератору

21. "Выпуск языка программирования Python 3.6"  +/
Сообщение от Аноним (??) on 24-Дек-16, 09:31 
Питон становится похож на perl. К чему бы это?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

27. "Выпуск языка программирования Python 3.6"  +1 +/
Сообщение от Аноним (??) on 24-Дек-16, 10:09 
> Питон становится похож на perl. К чему бы это?

Ну в целом небольшие скриптики уже можно будет переписать с Perl на Python ;-)

Ответить | Правка | ^ к родителю #21 | Наверх | Cообщить модератору
Часть нити удалена модератором

31. "Выпуск языка программирования Python 3.6"  +/
Сообщение от анон9 on 24-Дек-16, 10:42 
> Ну и да, классы там это просто синтаксический сахар для функции-конструктора,
> в таком виде они были давно.

Были-то они давно, только вот кто-то делал методы через прототип, кто-то через конструктор, кто-то смешивал (приватные в конструктор, публичные в прототип). Реализации наследования, опять же, везде разные были.
С введением этого "сахара" все стали делать однообразно, разве что модификаторов доступа не хватает

Ответить | Правка | ^ к родителю #60 | Наверх | Cообщить модератору

50. "Выпуск языка программирования Python 3.6"  +2 +/
Сообщение от leap42 (ok) on 24-Дек-16, 15:24 
зачем? чтобы стали большими? perl был и будет чемпионом в категории "быстрый и 'грязный' скрипт" из-за своей гибкости, лаконичности, мощности и "неприхотливости", а у python другие ниши.
Ответить | Правка | ^ к родителю #27 | Наверх | Cообщить модератору

73. "Выпуск языка программирования Python 3.6"  –2 +/
Сообщение от Аноним (??) on 26-Дек-16, 03:35 
Это не тебя "всегда посылают на грязную работу", просто ты выполняешь любую работу грязно. ©
Ответить | Правка | ^ к родителю #50 | Наверх | Cообщить модератору

62. "Выпуск языка программирования Python 3.6"  –1 +/
Сообщение от Вы забыли заполнить поле Name on 24-Дек-16, 23:55 
> становится похож на perl

В чем? Увидел знакомые символы подчеркивания в числах?

Ответить | Правка | ^ к родителю #21 | Наверх | Cообщить модератору

33. "Выпуск языка программирования Python 3.6"  +/
Сообщение от Аноним (??) on 24-Дек-16, 10:59 
На сколько в этот раз разжиреют дистрибутивы вроде убунты? На сколько помню, каждая версия прибавляет сотню другую.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

35. "Выпуск языка программирования Python 3.6"  +4 +/
Сообщение от Аноним (??) on 24-Дек-16, 11:27 
> На сколько помню

Насколько помню, "на сколько помню" пишется несколько иначе.

Ответить | Правка | ^ к родителю #33 | Наверх | Cообщить модератору

37. "Выпуск языка программирования Python 3.6"  +1 +/
Сообщение от Аноним (??) on 24-Дек-16, 11:34 
"На сотню-другую" еще, раз на то пошло.
Ответить | Правка | ^ к родителю #35 | Наверх | Cообщить модератору

39. "Выпуск языка программирования Python 3.6"  +2 +/
Сообщение от pda on 24-Дек-16, 12:21 
Прибавляю сотню-другую чего? Килобайт? Нефти? Прибавляют за счёт чего? Новых пакетов точно нет?
Ответить | Правка | ^ к родителю #33 | Наверх | Cообщить модератору

46. "Выпуск языка программирования Python 3.6"  +/
Сообщение от Аноним (??) on 24-Дек-16, 13:39 
По моим наблюдениям речь идет о мегабайтах. В убунте пакеты питона вместе с морем зависимостей сейчас занимают ~1 гиг.
Ответить | Правка | ^ к родителю #39 | Наверх | Cообщить модератору

52. "Выпуск языка программирования Python 3.6"  +2 +/
Сообщение от Аноним (??) on 24-Дек-16, 16:39 
> На сколько в этот раз разжиреют дистрибутивы вроде убунты? На сколько помню,
> каждая версия прибавляет сотню другую.


% pkg rquery %n-%sh python27 python33 python34 python35
python27-66.7MiB
python33-80.7MiB
python34-78.6MiB
python35-101MiB

% pkg rall-depends python35
python35 depends: libffi
python35 depends: readline
python35 depends: gettext-runtime
libffi depends: indexinfo
readline depends: indexinfo
gettext-runtime depends: indexinfo

% pkg rquery %n-%sh libffi readline gettext-runtime indexinfo
libffi-124KiB
readline-1.52MiB
gettext-runtime-802KiB
indexinfo-11.5KiB


То ли память у вас дырявая, то ли в убунте, как обычно, неосилили ...


Ответить | Правка | ^ к родителю #33 | Наверх | Cообщить модератору

38. "Выпуск языка программирования Python 3.6"  –2 +/
Сообщение от saahriktu (ok) on 24-Дек-16, 12:20 
Не хватает поддержки переменной окружения $PYTHONPATH3 из коробки. А то всё заточено на $PYTHONPATH, а об неё спотыкается Python 2, который её тоже знает (а заодно и $PYTHONPATH2). Не из коробки Python 3, конечно, можно и сейчас переучить на $PYTHONPATH3, но неофициальными патчами, ломая совместимость с документированным поведением: "sed -i 's/\"PYTHONPATH\"/\"PYTHONPATH3\"/' PC/getpathp.c && sed -i 's/\"PYTHONPATH\"/\"PYTHONPATH3\"/' Modules/getpath.c && sed -i 's/\"PYTHONPATH\"/\"PYTHONPATH3\"/' Mac/IDLE/IDLE.app/Contents/MacOS/IDLE".
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

40. "Выпуск языка программирования Python 3.6"  –2 +/
Сообщение от анонимусимус on 24-Дек-16, 12:22 
Ты на всех форумах об этом уже отписался или еще нет?
Ответить | Правка | ^ к родителю #38 | Наверх | Cообщить модератору

42. "Выпуск языка программирования Python 3.6"  +/
Сообщение от saahriktu (ok) on 24-Дек-16, 12:26 
Как будто что-то плохое. Плохо, наоборот, когда люди приобретают знания и умения, но не хотят ни с кем делиться.
Ответить | Правка | ^ к родителю #40 | Наверх | Cообщить модератору

44. "Выпуск языка программирования Python 3.6"  +1 +/
Сообщение от Аноним (??) on 24-Дек-16, 12:40 
Патчить седом - сурово, сурово.
Ответить | Правка | ^ к родителю #42 | Наверх | Cообщить модератору

49. "Выпуск языка программирования Python 3.6"  +2 +/
Сообщение от leap42 (ok) on 24-Дек-16, 15:19 
питонисты редко пользуются vi и ещё реже perl'ом, чем им ещё "патчить" если не sed'ом?
Ответить | Правка | ^ к родителю #44 | Наверх | Cообщить модератору

51. "Выпуск языка программирования Python 3.6"  –2 +/
Сообщение от saahriktu (ok) on 24-Дек-16, 16:22 
Сразу видно человека, который ни разу не читал LFS Book. В ней активно используется sed для наложения патчей. Наверняка, многие маинтейнеры тоже используют sed. Гораздо удобнее чем таскать кругом полноразмерные патчи. Другой вопрос, что далеко не всё можно загнать в правила sed'а, да (поскольку нет смысла). Вот там полноразмерные патчи и используются.

Ответить | Правка | ^ к родителю #49 | Наверх | Cообщить модератору

57. "Выпуск языка программирования Python 3.6"  –1 +/
Сообщение от Crazy Alex (ok) on 24-Дек-16, 19:19 
Питоном?
Ответить | Правка | ^ к родителю #49 | Наверх | Cообщить модератору

43. "Выпуск языка программирования Python 3.6"  –1 +/
Сообщение от Аноним (??) on 24-Дек-16, 12:39 
   >>> name = "Fred"
   >>> f"He said his name is {name}."

   'He said his name is Fred.'

Теперь придется ещё тщательнее проверять пользовательский ввод в приложениях.
Или не пользоваться этой фичей.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

53. "Выпуск языка программирования Python 3.6"  +4 +/
Сообщение от Ordu email(ok) on 24-Дек-16, 17:16 
Засовывать пользовательский ввод в функции типа printf в качестве _форматной_ строки -- это вообще катастрофически плохая идея, даже если она прикрыта проверкой пользовательского ввода. Это почти так же плохо, как выполнять eval на пользовательском вводе, даже если этот ввод тщательно проверен.
Ответить | Правка | ^ к родителю #43 | Наверх | Cообщить модератору

56. "Выпуск языка программирования Python 3.6"  +1 +/
Сообщение от FrBrGeorge (ok) on 24-Дек-16, 18:57 
> Теперь придется ещё тщательнее проверять пользовательский ввод

Вы не можете ввести строку типа f"", только обычный str

Ответить | Правка | ^ к родителю #43 | Наверх | Cообщить модератору

54. "Выпуск языка программирования Python 3.6"  +/
Сообщение от chinarulezzz (ok) on 24-Дек-16, 18:08 
Хорошо что удалили сообщение о аннотации типов и питон4.

В php это привело к 7+, в perl к 6 версиям.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

58. "Выпуск языка программирования Python 3.6"  +1 +/
Сообщение от Crazy Alex (ok) on 24-Дек-16, 19:22 
А куда деваться - с ростом сложности проектов явная типизация становится необходимостью - не только ради отлова ошибок, нои как вариант документации, которая всегда соответствует коду.

Все там будем :-)

Ответить | Правка | ^ к родителю #54 | Наверх | Cообщить модератору

61. "Выпуск языка программирования Python 3.6"  +/
Сообщение от chinarulezzz (ok) on 24-Дек-16, 23:51 
Насчёт документации, Ларри как-то сказал, емнип, что старался насколько это можно, облегчить программерам написание документации. Вместо того, чтобы принуждать их подстраиваться под правила документирования, лучше как можно проще сделать для них документирование прямо в коде. И глянь на результат, у perl-коммюнити отличная документация.

Так что, имхо, явная типизация не будет серебряной пулей. А вот отлов ошибок - да.

>Все там будем :-)

А как же прототипирование?)

Ответить | Правка | ^ к родителю #58 | Наверх | Cообщить модератору

63. "Выпуск языка программирования Python 3.6"  –2 +/
Сообщение от Вы забыли заполнить поле Name on 25-Дек-16, 00:05 
> у perl-коммюнити отличная документация.

Это вы про простыни документации в перемшку с write-only perl кодом? Фигня это все. Кинул вас Ларри с вашими проблемами и 5-ым перлом.


Ответить | Правка | ^ к родителю #61 | Наверх | Cообщить модератору

64. "Выпуск языка программирования Python 3.6"  +1 +/
Сообщение от chinarulezzz (ok) on 25-Дек-16, 00:13 
>> у perl-коммюнити отличная документация.
> Это вы про простыни документации в перемшку с write-only perl кодом? Фигня
> это все. Кинул вас Ларри с вашими проблемами и 5-ым перлом.

Документацию можно выделить в отдельный pod, можно после кода, можно вместе с кодом. Смотреть и искать документацию можно perldoc'ом, где нет никакого кода. Писать можно с фолдингом, и ничего не мешает.

P.S. Понимаю, что для новичков любой код на перле writeonly, но тот же DCONWAY, да и многие кто входит в top rated distributions пишут хороший код.

P.P.S. Если такая уж и проблема, perltidy может перелопатить исходник в тот вид, в котором глазу будет приятно.


Ответить | Правка | ^ к родителю #63 | Наверх | Cообщить модератору

67. "Выпуск языка программирования Python 3.6"  –2 +/
Сообщение от freehck email(ok) on 25-Дек-16, 11:31 
Да что Вы распинаетесь перед ним? Он же вполне ясно дал понять, что с Perl он знаком на уровне "одна бабка во дворе сказала":
> Это вы про простыни документации в перемшку с write-only perl кодом?

Чёртовы толстые тролли, позор зелёного братства.

Ответить | Правка | ^ к родителю #64 | Наверх | Cообщить модератору

59. "Выпуск языка программирования Python 3.6"  +1 +/
Сообщение от Blind Vic (ok) on 24-Дек-16, 22:59 
> Обеспечено сохранение порядка определения атрибутов класса (прядок можно отследить через новый атрибут "__dict__");

Неверный перевод. Атрибут __dict__ совсем не новый.

> This order is now preserved in the new class’s __dict__ attribute.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

66. "Выпуск языка программирования Python 3.6"  +/
Сообщение от freehck email(ok) on 25-Дек-16, 11:07 
>>> width = 10
>>> precision = 4
>>> value = decimal.Decimal("12.34567")
>>> f"result: {value:{width}.{precision}}"  # nested fields
> 'result:      12.35'

Офигеть, какой очевидный пример. Нет, оно что-то делает, очевидно, но вот что - не понимаю в упор. :)

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

68. "Выпуск языка программирования Python 3.6"  +/
Сообщение от Andrey Mitrofanov on 25-Дек-16, 12:54 
>>>> width = 10
>>>> precision = 4
>>>> value = decimal.Decimal("12.34567")
>>>> f"result: {value:{width}.{precision}}"  # nested fields
>> 'result:      12.35'
> Офигеть, какой очевидный пример. Нет, оно что-то делает, очевидно, но вот что
> - не понимаю в упор. :)

sprintf( "result: %*.*f", width, precision, value) какой-нибудь, наверное. Да, sprintf(), как типа синтаксическая фича языка это надо...  Означаетли это что в _языке_ не достаточно средств композиции, синтеза, абстрацкции или чето там? Есть в зале CS-учёные, ну, хотя в объёме 3ёх курсов??---

Ответить | Правка | ^ к родителю #66 | Наверх | Cообщить модератору

70. "Выпуск языка программирования Python 3.6"  +4 +/
Сообщение от Stax (ok) on 25-Дек-16, 14:50 
Причем тут вообще композиция и прочее?? Форматированию по имени, а не позиции сто лет в обед, это с каких-то древнейших вторых (если вообще не первых, но тут уже не помню) версий питона работает. И доступ к атрибутам всегда был. См. "Accessing arguments by name" и "Accessing arguments’ attributes" примеры: https://docs.python.org/2/library/string.html#format-examples

По самой фиче - они просто добавили возможность обращаться к этим аргументам без явной передачи их в format() и синтаксический сахар f"строка" для замены "строка".format(). Путем некого извращения (и это довольно неэффективно с точки зрения того, как это в данном примере выполняется) это можно эмулировать вообще в любом питоне, как третьем, так и втором:

>>> num=123
>>> "num={num}".format(**locals())

'num=123'
>>> 'num=%(num)d' % locals()

'num=123'

Ну а с атрибутами (в примере с Decimal) оно автоматически получилось, т.к. эта возможность существовала и ранее.

Ответить | Правка | ^ к родителю #68 | Наверх | Cообщить модератору

74. "Выпуск языка программирования Python 3.6"  +/
Сообщение от Аноним (??) on 26-Дек-16, 07:32 
Да это же Сишники, что с них взять.
Ответить | Правка | ^ к родителю #70 | Наверх | Cообщить модератору

76. "Выпуск языка программирования Python 3.6"  –1 +/
Сообщение от freehck email(ok) on 26-Дек-16, 12:33 
>>>>> f"result: {value:{width}.{precision}}"  # nested fields
>> Офигеть, какой очевидный пример. Нет, оно что-то делает, очевидно, но вот что
>> - не понимаю в упор. :)
> sprintf( "result: %*.*f", width, precision, value) какой-нибудь, наверное.

О, и правда, похоже на то. Спасибо.

Ответить | Правка | ^ к родителю #68 | Наверх | Cообщить модератору

77. "Выпуск языка программирования Python 3.6"  +/
Сообщение от Аноним (??) on 26-Дек-16, 12:33 
>>>> width = 10
>>>> precision = 4
>>>> value = decimal.Decimal("12.34567")
>>>> f"result: {value:{width}.{precision}}"  # nested fields
>> 'result:      12.35'
> Офигеть, какой очевидный пример. Нет, оно что-то делает, очевидно, но вот что
> - не понимаю в упор. :)

Тут скорее забавен сам метод "float to string", когда pecision это количество цифр(значащих) а не количество после запятой :)
Мне почему-то казалось что логически верным было бы приведение типа:
'result:    12.3457' либо 'result: 1.2346e-1'

Ответить | Правка | ^ к родителю #66 | Наверх | Cообщить модератору

83. "Выпуск языка программирования Python 3.6"  +1 +/
Сообщение от oopsy on 26-Дек-16, 23:19 
Так получилось потому, что используется формат по умолчанию. А формат по умолчанию в данном случае будет g.

Укажите явно f или e (например, "result: {value:{width}.{precision}f}" )
будет как привычно со времён FORTRAN-IV
'result:    12.3457' или 'result:  1.2346e+1'

Впрочем, поведение формата g в python соответствует поведению в C.

Ответить | Правка | ^ к родителю #77 | Наверх | Cообщить модератору

72. "Выпуск языка программирования Python 3.6"  –3 +/
Сообщение от Аноним (??) on 26-Дек-16, 03:06 
> Возможность использования символов подчёркивания для улучшения читаемости чисел, например, теперь можно указывать 1_000_000 или 0x_FF_FF_FF;

Обкурились что-ли?
Было
grep "0xFFFFFF" -nR .

Стало
find . | xargs grep '0xFFFFFF' -nR


Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

78. "Выпуск языка программирования Python 3.6"  +/
Сообщение от Аноним (??) on 26-Дек-16, 12:34 
>> Возможность использования символов подчёркивания для улучшения читаемости чисел, например, теперь можно указывать 1_000_000 или 0x_FF_FF_FF;
> Обкурились что-ли?
> Было
> grep "0xFFFFFF" -nR .
> Стало
> find . | xargs grep '0xFFFFFF' -nR

Питонисты никогда не страдали заботой о других :)

Ответить | Правка | ^ к родителю #72 | Наверх | Cообщить модератору

79. "Выпуск языка программирования Python 3.6"  +/
Сообщение от freehck email(ok) on 26-Дек-16, 12:36 
>> Возможность использования символов подчёркивания для улучшения читаемости чисел, например, теперь можно указывать 1_000_000 или 0x_FF_FF_FF;
> Обкурились что-ли?

Да ладно. Это было ещё в perl5, это есть в bash... :)

Ответить | Правка | ^ к родителю #72 | Наверх | Cообщить модератору

80. "Выпуск языка программирования Python 3.6"  +/
Сообщение от Аноним (??) on 26-Дек-16, 15:15 
Мда... Ушел дальше программировать на LISP...
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

81. "Выпуск языка программирования Python 3.6"  +2 +/
Сообщение от Аноним (??) on 26-Дек-16, 17:52 
Не ясно только, чего заходил.
Ответить | Правка | ^ к родителю #80 | Наверх | Cообщить модератору

82. "Выпуск языка программирования Python 3.6"  –1 +/
Сообщение от Lisp on 26-Дек-16, 18:53 
Посмотреть на мучения хомячков всегда приятно )
Ответить | Правка | ^ к родителю #81 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру