Вопросы по теме 'python-internals'
Как переопределить операции копирования / глубокого копирования для объекта Python?
Я понимаю разницу между copy и deepcopy в модуле копирования. Раньше я успешно использовал copy.copy и copy.deepcopy , но это первый раз, когда я действительно перегрузил методы __copy__ и __deepcopy__ . Я уже погуглил и просмотрел...
71085 просмотров
schedule
05.01.2023
Как определяется переменная __name__ в модуле Python?
Мне известен стандартный пример : если вы выполняете модуль непосредственно, то глобальная переменная __name__ определяется как "__main__" . Однако нигде в документации я не могу найти точного описания того, как __name__ определяется в общем...
21940 просмотров
schedule
22.03.2023
Два экземпляра одного и того же модуля Python?
Я создал модуль Python с одной функцией, которая просто печатает «a!». Я открыл интерпретатор Python и импортировал модуль с двумя разными синтаксисами.
>>> import a
>>> from a import func
>>> func()
a!
>>>...
3661 просмотров
schedule
11.07.2023
Неожиданное значение из sys.getrefcount
Под Python 2.7.5
>>> import sys
>>> sys.getrefcount(10000)
3
Где три рефкаунта?
PS: когда 10000 PyIntObject будет Py_DECREF до 0 ref и освобожден? Не говоря уже о gc, сам счетчик ссылок может работать без gc.
454 просмотров
schedule
19.12.2022
Почему одна переменная класса не определена в понимании списка, а другая?
Я только что прочитал ответ на этот вопрос: Доступ к переменным класса из понимания списка в определении класса
Это помогает мне понять, почему следующий код приводит к NameError: name 'x' is not defined :
class A:
x = 1
data = [0,...
3570 просмотров
schedule
27.06.2023
Почему итерация по небольшой строке выполняется медленнее, чем по небольшому списку?
Я играл с timeit и заметил, что выполнение простого понимания списка для небольшой строки занимает больше времени, чем выполнение той же операции для списка небольших строк с одним символом. Любое объяснение? Это почти в 1,35 раза больше времени....
14575 просмотров
schedule
28.12.2022
Имеет ли оператор Python «in» для списков ранний выход для успешного поиска
Если у меня есть список, я ищу элемент в списке:
alist=[ele1, ele2, ele3, ele4,ele5,...]
if ele3 in alist:
print "found"
Будет ли остановлен поиск из списка на ele3? Или он будет работать через весь оставшийся элемент до конца.
Заранее...
302 просмотров
schedule
31.10.2022
Изменяемость globals() и locals()
В Python globals() возвращает представление глобальной таблицы символов, а locals() возвращает представление локального состояния. Хотя оба возвращают словарь, изменения в globals() вступают в силу в глобальной таблице символов, в то время как...
270 просмотров
schedule
20.06.2022
Гарантировано ли определение __module__ во время создания класса?
Я читал какой-то код, который выглядел примерно так:
class Foo(object):
class_name = __module__.replace('_', '-')
Для меня это выглядело очень странно ( __module__ , что это такое?), поэтому я пошел и посмотрел на модель данных python....
2046 просмотров
schedule
09.05.2022
Как работает интерактивный режим Python?
Я хочу знать, как работает интерактивный режим Python. Обычно, когда вы запускаете скрипт Python на CPython, он проходит через процесс лексического анализа, синтаксического анализа, компилируется в файл .pyc и, наконец, файл .pyc...
571 просмотров
schedule
04.08.2022
Почему строка startwith медленнее, чем in?
Удивительно, но я обнаружил, что startswith медленнее, чем in :
In [10]: s="ABCD"*10
In [11]: %timeit s.startswith("XYZ")
1000000 loops, best of 3: 307 ns per loop
In [12]: %timeit "XYZ" in s
10000000 loops, best of 3: 81.7 ns per loop...
4043 просмотров
schedule
06.08.2023
Почему класс __dict__ является прокси-сервером?
Интересно, почему класс __dict__ — это mappingproxy , а экземпляр __dict__ — это просто dict
>>> class A:
... pass
>>> a = A()
>>> type(a.__dict__)
<class 'dict'>
>>> type(A.__dict__)
<class...
18285 просмотров
schedule
25.11.2022
Почему Python использует исключения для управления итераторами, а другие языки - нет?
В Java итераторы имеют метод hasNext() (если я правильно помню - прошло много времени с тех пор, как я программировал на Java, поэтому подробности могут быть отключены). Когда вы проходите через итератор, вы запрашиваете hasNext() , чтобы узнать,...
133 просмотров
schedule
19.04.2022
Каков исходный код __hash__() и __eq__() объекта в Python?
object является основой для всех новых классов стилей. Где я могу найти исходный код object ? Я хотел бы посмотреть, как определены функции __hash__() и __eq__() .
Обратитесь к этому ответу ( Поиск исходного кода для встроенного Python...
587 просмотров
schedule
12.03.2023
Почему код с промежуточными переменными быстрее, чем код без них?
Я столкнулся с этим странным поведением и не смог его объяснить. Это ориентиры:
py -3 -m timeit "tuple(range(2000)) == tuple(range(2000))"
10000 loops, best of 3: 97.7 usec per loop
py -3 -m timeit "a = tuple(range(2000)); b =...
6125 просмотров
schedule
08.07.2023
Что такое __weakref__ в Python?
Удивительно, но нет явной документации для __weakref__ . Слабые ссылки объясняются здесь . __weakref__ также кратко упоминается в документации __slots__ . Но про сам __weakref__ ничего не нашел.
Что такое __weakref__ ? - Это просто...
19585 просмотров
schedule
23.07.2022
Почему у списков есть специальный метод __reverse__(), а у кортежей нет в Python?
Встроенный в Python reversed(seq) указывает, что seq должен иметь метод __reversed__() или поддерживать протокол последовательности. И списки, и кортежи, очевидно, поддерживают протокол последовательности, но вместо этого в списках...
107 просмотров
schedule
31.01.2023
Почему '() is ()' возвращает True, когда '[] is []', а '{} is {}' возвращает False?
Насколько мне известно, использование [], {} или () для создания экземпляров объектов возвращает новый экземпляр list, dict или tuple соответственно; новый экземпляр объекта с новым идентификатором .
Это было довольно ясно для меня, пока...
3999 просмотров
schedule
21.09.2022
list () использует немного больше памяти, чем понимание списка
Итак, я играл с list объектами и обнаружил небольшую странную вещь, что если list создается с list() , он использует больше памяти, чем понимание списка? Я использую Python 3.5.2
In [1]: import sys
In [2]: a = list(range(100))
In [3]:...
4131 просмотров
schedule
20.04.2024
Почему «новый_файл + = строка + строка» намного быстрее, чем «новый_файл = новый_файл + строка + строка»?
Нашему коду требуется 10 минут для перекачки 68000 записей, когда мы используем:
new_file = new_file + line + string
Однако когда мы делаем следующее, это занимает всего 1 секунду:
new_file += line + string
Вот код:
for line in...
1247 просмотров
schedule
29.07.2022