dememax: (скука)
2020-03-29 07:59 pm

Производительность кода на Python из командной строки

Если захотите поиграться с производительностью какого-нибудь кода на питоне прямо из командной строки, вот на примере из предыдущего поста:
$ python -m timeit -s 'a,b,c = "a", "b", "d"' '"%s%s%s" % (a, b, c)'
10000000 loops, best of 3: 0.153 usec per loop
$ python -m timeit -s 'a,b,c = "a", "b", "d"' 'a + b + c'
10000000 loops, best of 3: 0.0818 usec per loop
$ python -m timeit -s 'a,b,c = "a", "b", "d"' 'f"{a}{b}{c}"'
10000000 loops, best of 3: 0.0668 usec per loop
$ python -m timeit -s 'a,b,c = "a", "b", "d"' '"{}{}{}".format(a, b, c)'
1000000 loops, best of 3: 0.286 usec per loop
Модуль timeit входит в стандартную поставку питона.
Параметр -s позволяет задать начальные условия, которые будут использованы на каждой итерации.
P.S.: )
dememax: (сонливость)
2019-12-11 03:34 pm

Русское произношение названий языков программирования

Разговорился тут с одним человеком, для которого было забавно прочитать от меня "Ява" для обозначения языка программирования. По его мнению "ни один разработчик на джаве так никогда не скажет".

Я задумался... Ведь и во Франции люди не произносят это название на английский манер, получается "Жава" с характерным ударением на последний слог, естественно.

А как вы по-русски произносите названия языков программирования "Python"? "C++"? "PHP"?
Записываете ли вы их кириллицей, или исключительно латиницей?
dememax: (Hacker Emblem)
2015-11-03 06:10 pm

Значения по-умолчанию в параметрах определений функций в Питоне: они возвращаются!!!

Блин, вляпался таки! Всеми лапками! Помните дети!
Эти значения - вычисляются и потом эти изменяемые значения продолжают передаваться в том же виде в последующих вызовах. Читаем The Python Language Reference / 8. Compound statements / 8.6. Function definitions:

Default parameter values are evaluated from left to right when the function definition is executed. This means that the expression is evaluated once, when the function is defined, and that the same “pre-computed” value is used for each call. This is especially important to understand when a default parameter is a mutable object, such as a list or a dictionary: if the function modifies the object (e.g. by appending an item to a list), the default value is in effect modified. This is generally not what was intended. A way around this is to use None as the default, and explicitly test for it in the body of the function, e.g.:

def whats_on_the_telly(penguin=None):
    if penguin is None:
        penguin = []
    penguin.append("property of the zoo")
    return penguin

2010-10-25 02:44 pm

Странное упорядочение по-умолчанию в диапазонах символьных классов grep'а.

ASCII Code Chart. Anomie, 29 August 2008

(Натолкнула на размышления вот эта строка из chrome/content/filterClasses.js проекта Adblock Plus. В POSIX API regcomp()/regexec() всё также работает, как и в JavaScript.)


Почему срабатывает следующее выражение?
> echo "a.b" | grep -E '[ -#]'
a.b
Ведь в ASCII и UTF-8 точка находится после диеза.
Поправить легко:
> echo "a.b" | LANG= grep -E '[ -#]'

Оказывается, это устойчивое поведение.
> touch 'a ' ; touch 'a!' ; touch 'a"' ; touch 'a#' ; touch 'a.' ; touch 'a,'
> ls
a   a,  a!  a.  a"  a#
> LANG= ls
a   a!  a"  a#  a,  a.


Братцы, как называется эта Collating sequence для этих знаков, отличная от ASCII/Unicode?

Update: http://www.collation-charts.org/ (Спасибо Яше!)
2005-10-01 02:43 pm

The Zen of Python, by Tim Peters.

Введя в интерактивном режиме в питоне команду "import this", получаем:

Read more... )