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

Эталонная реализация языка программирования Python. Используйте этот тег для вопросов, относящихся к этой реализации, общие вопросы Python должны быть просто помечены тегом «python».

3
Почему код Python работает быстрее в функции?
def main(): for i in xrange(10**8): pass main() Этот фрагмент кода на Python выполняется (Примечание: синхронизация выполняется с помощью функции времени в BASH в Linux.) real 0m1.841s user 0m1.828s sys 0m0.012s Тем не менее, если цикл не помещается в функцию, for i in xrange(10**8): pass тогда он работает намного дольше: …

12
Почему я не должен использовать PyPy поверх CPython, если PyPy работает в 6,3 раза быстрее?
Я много слышал о проекте PyPy . Они утверждают, что это в 6,3 раза быстрее, чем интерпретатор CPython на их сайте . Всякий раз, когда мы говорим о динамических языках, таких как Python, скорость является одной из главных проблем. Чтобы решить эту проблему, говорят, что PyPy работает в 6,3 раза …

9
Python против Cpython
Что это за шум вокруг Python и CPython (Jython, IronPython) , я не понимаю: python.org упоминает, что CPython это: «Традиционная» реализация Python (по прозвищу CPython) еще один вопрос переполнения стека упоминает, что: CPython является интерпретатором байт-кода по умолчанию Python, который написан на C. Честно говоря, я не понимаю, что оба …
447 python  cpython 

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

5
Как реализовано set ()?
Я видел, как люди говорят, что setобъекты в Python имеют O (1) проверку членства. Как они реализованы внутри, чтобы позволить это? Какую структуру данных он использует? Какие еще последствия имеет эта реализация? Каждый ответ здесь был действительно поучительным, но я могу принять только один, поэтому я пойду с самым близким …

3
Что вызывает [* a] перераспределение?
По-видимому list(a), не перераспределяет, [x for x in a]перераспределяет в некоторых точках, и [*a]перераспределяет все время ? Вот размеры n от 0 до 12 и результирующие размеры в байтах для трех методов: 0 56 56 56 1 64 88 88 2 72 88 96 3 80 88 104 4 88 …

3
Почему перебор небольшой строки медленнее, чем перебора небольшого списка?
Я играл с timeit и заметил, что выполнение простого понимания списка для небольшой строки занимает больше времени, чем выполнение той же операции со списком небольших односимвольных строк. Любое объяснение? Это почти в 1,35 раза больше времени. >>> from timeit import timeit >>> timeit("[x for x in 'abc']") 2.0691067844831528 >>> timeit("[x …

1
Почему tuple (set ([1, «a», «b», «c», «z», «f»])) == tuple (set ([«a», «b», «c», «Z», «f», 1])) 85% времени с включенной рандомизацией хэша?
Учитывая ответ Нуля Пирея на другой вопрос , мы имеем x = tuple(set([1, "a", "b", "c", "z", "f"])) y = tuple(set(["a", "b", "c", "z", "f", 1])) print(x == y) Печатает Trueпримерно 85% времени с включенной случайностью хеширования . Почему 85%?

10
IronPython против Python .NET
Я хочу получить доступ к некоторым сборкам .NET, написанным на C #, из кода Python. Небольшое исследование показало, что у меня есть два варианта: IronPython с возможностью интерфейса .NET / встроенной поддержкой Python с пакетом Python .NET Каковы компромиссы между обоими решениями?

2
list () использует немного больше памяти, чем понимание списка
Итак, я играл с listобъектами и обнаружил небольшую странную вещь, которая, если listсоздается с list()ее помощью, использует больше памяти, чем понимание списка? Я использую Python 3.5.2 In [1]: import sys In [2]: a = list(range(100)) In [3]: sys.getsizeof(a) Out[3]: 1008 In [4]: b = [i for i in range(100)] In …

2
Почему наборы Python не сохраняют порядок вставки?
Недавно я с удивлением обнаружил, что, хотя dicts гарантированно сохраняет порядок вставки в Python 3.7+, наборы не являются: >>> d = {'a': 1, 'b': 2, 'c': 3} >>> d {'a': 1, 'b': 2, 'c': 3} >>> d['d'] = 4 >>> d {'a': 1, 'b': 2, 'c': 3, 'd': 4} >>> …
12 python  set  cpython 

4
Разрезание кортежей не возвращает новый объект, в отличие от разрезания списка
В Python (2 и 3). Всякий раз, когда мы используем нарезку списка, он возвращает новый объект, например: l1 = [1,2,3,4] print(id(l1)) l2 = l1[:] print(id(l2)) Вывод >>> 140344378384464 >>> 140344378387272 Если то же самое повторяется с кортежем, возвращается тот же объект, например: t1 = (1,2,3,4) t2 = t1[:] print(id(t1)) print(id(t2)) …
12 python  list  tuples  slice  cpython 

2
Почему установка дескриптора для класса перезаписывает дескриптор?
Простое воспроизведение: class VocalDescriptor(object): def __get__(self, obj, objtype): print('__get__, obj={}, objtype={}'.format(obj, objtype)) def __set__(self, obj, val): print('__set__') class B(object): v = VocalDescriptor() B.v # prints "__get__, obj=None, objtype=<class '__main__.B'>" B.v = 3 # does not print "__set__", evidently does not trigger descriptor B.v # does not print anything, we overwrote …
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.