Вопросы с тегом «internals»

2117
Почему «1000000000000000 в диапазоне (1000000000000001)» так быстро в Python 3?

Насколько я понимаю, range()функция, которая на самом деле является типом объекта в Python 3 , генерирует свое содержимое на лету, подобно генератору. В этом случае я ожидал, что следующая строка займет неоправданное количество времени, потому что для определения того, находится ли 1 квадриллион в...

2019
Как на самом деле работает PHP 'foreach'?

Позвольте мне поставить префикс этого, сказав, что я знаю, что foreachтакое, что делает и как его использовать. Этот вопрос касается того, как это работает под капотом, и я не хочу никаких ответов в духе «это то, как вы запускаете массив foreach». Долгое время я предполагал, что foreachработал с...

982
Как работает @property декоратор?

Я хотел бы понять, как работает встроенная функция property. Что меня смущает, так это то, что он propertyтакже может быть использован в качестве декоратора, но он принимает аргументы только тогда, когда используется как встроенная функция, а не как декоратор. Этот пример из документации : class...

617
Как bcrypt может иметь встроенные соли?

В статье Coda Hale «Как безопасно хранить пароль» утверждается, что: В bcrypt встроены соли для предотвращения атак с радужного стола. Он цитирует эту статью , в которой говорится, что в реализации OpenBSD bcrypt: OpenBSD генерирует 128-битную соль bcrypt из ключевого потока arcfour (arc4random...

509
Оператор «is» ведет себя неожиданно с целыми числами

На этот вопрос есть ответы на Переполнение стека на русском языке : Присваивание целых (int) в Питоне Почему следующие действия ведут себя неожиданно в Python? >>> a = 256 >>> b = 256 >>> a is b True # This is an expected result >>> a = 257 >>> b = 257...

470
Заказаны ли словари в Python 3.6+?

Словари упорядочены в Python 3.6 (по крайней мере, под реализацию CPython) в отличие от предыдущих воплощений. Это кажется существенным изменением, но это только короткий параграф в документации . Он описывается как подробность реализации CPython, а не как языковая функция, но также подразумевает,...

420
Практическое использование для «внутреннего» ключевого слова в C #

Не могли бы вы объяснить, что практическое использование для internalключевого слова в C #? Я знаю, что internalмодификатор ограничивает доступ к текущей сборке, но когда и при каких обстоятельствах я должен его...

375
Когда Del полезен в Python?

Я не могу придумать причину, по которой python нуждается в delключевом слове (и большинство языков, похоже, не имеют аналогичного ключевого слова). Например, вместо того, чтобы удалить переменную, можно просто присвоить Noneей. И при удалении из словаря, delметод может быть добавлен. Есть ли...

284
Почему некоторые сравнения с плавающей запятой в четыре раза медленнее других?

При сравнении значений с плавающей точкой и целых чисел некоторым парам значений требуется гораздо больше времени для оценки, чем другим значениям схожей величины. Например: >>> import timeit >>> timeit.timeit("562949953420000.7 < 562949953421000") # run 1 million times...

250
Зачем использовать публичный метод во внутреннем классе?

В одном из наших проектов много кода, который выглядит следующим образом: internal static class Extensions { public static string AddFoo(this string s) { if (s == null) { return "Foo"; } return $({s}Foo); } } Есть ли какая-либо явная причина, чтобы сделать это, кроме как «легче сделать тип...

244
Что такое глобальная блокировка интерпретатора (GIL) в CPython?

Что такое глобальная блокировка интерпретатора и почему это проблема? Было много шума вокруг удаления GIL из Python, и я хотел бы понять, почему это так важно. Я никогда не писал ни компилятор, ни интерпретатор, так что не будьте скромны с деталями, мне, вероятно, понадобится их...

174
Доступ к переменным класса из списка понимания в определении класса

Как вы получаете доступ к другим переменным класса из понимания списка в определении класса? Следующее работает в Python 2, но не работает в Python 3: class Foo: x = 5 y = [x for i in range(1)] Python 3.2 выдает ошибку: NameError: global name 'x' is not defined Попытка Foo.xтоже не работает. Любые...

170
Как работает отладчик?

Я продолжаю задаваться вопросом, как работает отладчик? В частности, тот, который можно «прикрепить» к уже запущенному исполняемому файлу. Я понимаю, что компилятор переводит код на машинный язык, но тогда как отладчик «узнает», к чему он...

155
Почему два одинаковых списка имеют разный объем памяти?

Я создал два списка l1и l2, но каждый со своим методом создания: import sys l1 = [None] * 10 l2 = [None for _ in range(10)] print('Size of l1 =', sys.getsizeof(l1)) print('Size of l2 =', sys.getsizeof(l2)) Но результат меня удивил: Size of l1 = 144 Size of l2 = 192 Список, созданный с пониманием...