Tag: python 3.x

Странный вывод при записи на stdout в консоли

Я просто играл с sys.stdout.write() в консоли Python, когда заметил, что это дает какой-то странный результат. Для каждого вызова write() количество символов, записанных, переданных функции, соответственно добавляется к выходу. >>> sys.stdout.write('foo bar') например, приводит к foo bar7 . Даже передача пустой строки приводит к выводу 0 . Это действительно происходит только в консоли Python, но […]

Целочисленное деление: есть // b == int (a / b) true для всех целых чисел a, b?

Я знаю, что целочисленное деление всегда будет возвращать тот же ответ, что и усечение результата с плавающей запятой, если числа являются положительными. Это правда, если один или оба из них являются отрицательными? Мне было просто интересно узнать, было ли выражение целочисленного деления, которое вернет те же результаты в Python 2 и Python 3 (и да, […]

Как использовать статический метод в качестве параметра по умолчанию для шаблона проектирования стратегии?

Я хочу создать класс, который использует шаблон стратегии стратегии, подобный этому: class C: @staticmethod def default_concrete_strategy(): print("default") @staticmethod def other_concrete_strategy(): print("other") def __init__(self, strategy=C.default_concrete_strategy): self.strategy = strategy def execute(self): self.strategy() Это дает ошибку: NameError: name 'C' is not defined Замена strategy=C.default_concrete_strategy со strategy=default_concrete_strategy будет работать, но в качестве значения по умолчанию переменная экземпляра стратегии будет […]

Более четкий способ отображения изображений в сетке с numpy

Есть ли более идиоматический способ отображения сетки изображений, как в приведенном ниже примере? import numpy as np def gallery(array, ncols=3): nrows = np.math.ceil(len(array)/float(ncols)) cell_w = array.shape[2] cell_h = array.shape[1] channels = array.shape[3] result = np.zeros((cell_h*nrows, cell_w*ncols, channels), dtype=array.dtype) for i in range(0, nrows): for j in range(0, ncols): result[i*cell_h:(i+1)*cell_h, j*cell_w:(j+1)*cell_w, :] = array[i*ncols+j] return result […]

Разница между кодировкой utf-8 и utf8 в Python 3.5

В чем разница между кодировкой utf-8 и utf8 (если таковая имеется)? В следующем примере: u = u'€' print('utf-8', u.encode('utf-8')) print('utf8 ', u.encode('utf8')) Он производит следующий вывод: utf-8 b'\xe2\x82\xac' utf8 b'\xe2\x82\xac'

Обсуждение побитового оператора оператора

Мне интересно, что такое инструкция python: csum = (N * (N + 1)) >> 1 где N = 5 и csum = 15 . Я не понимаю оператора >> и что происходит в этом утверждении. Что за мыслью за этим действием? csum является совокупной суммой вектора 1: 5. Цените свои мысли по этому поводу.

Как я могу подклассифицировать команду сборки?

Объект является самоописательным: мне нужно подклассифицировать команду setup.py build , чтобы выполнить дополнительные шаги сборки. Однако мне не удалось найти какой-либо класс команды build для наследования. Я пытался: class BuildCommandProxy(setuptools.command.build): pass а также class BuildCommandProxy(distutils.command.build): pass и даже: class BuildCommandProxy(setuptools.distutils.command.build): pass без каких-либо успехов. UPDATE : поиск того, как реализовать что-то подобное с помощью setuptools […]

Python: обновить список кортежей

У меня есть список кортежей: list = [(1, 'q'), (2, 'w'), (3, 'e'), (4, 'r')] и я пытаюсь создать обновление функции обновления (item, num), которые ищут элемент в списке, а затем изменяют число. например, если я использую update (w, 6), результат будет list = [(1, 'q'), (6, 'w'), (3, 'e'), (4, 'r')] Я пробовал этот […]

проблема подклассификации встроенного типа

# Python 3 class Point(tuple): def __init__(self, x, y): super().__init__((x, y)) Point(2, 3) приведет к TypeError: tuple () принимает не более 1 аргумента (2 данных) Зачем? Что мне делать вместо этого?

Почему вы не можете ссылаться на модули, которые автоматически загружаются интерпретатором без дополнительного оператора `import`?

Когда вы начинаете свой интерпретатор Python, кажется, что некоторые модули / пакеты автоматически импортируются в процессе запуска: python Python 2.7.6 (default, Jan 13 2014, 14:59:37) … >>> import sys >>> for key in sys.modules.iterkeys(): … print(key) … os sys abc others … Однако эти модули, похоже, были загружены в другое пространство / пространство имен, потому […]

Python - лучший язык программирования в мире.