Как подавить продукцию пульта в Пайтоне?

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

Кроме того, однако, маскировки служат для написания более сжатого кода, как описано в следующем документе в документе, который вы упомянули:

Общие методы позволяют использовать параметры типа для выражения зависимостей между типами одного или нескольких аргументов метода и / или его возвращаемого типа. Если нет такой зависимости, общий метод не должен использоваться.

[...]

Использование подстановочных знаков более четкое и краткое, чем объявление явных параметров типа, и должен быть предпочтительным, когда это возможно.

[...]

Подстановочные знаки также имеют то преимущество, что их можно использовать вне сигнатур методов, поскольку типы полей, локальные переменные и массивы.

28
задан tankadillo 24 January 2010 в 04:22
поделиться

5 ответов

Вот соответствующий блок код от Joystick.c (через SVN в http://svn.seul.org/viewcvs/viewvc.cgi/trunk/src/joystick.c ? Просмотр = markup & Revision = 2652 & root = pygame )

    value = SDL_JoystickGetHat (joy, _index);
#ifdef DEBUG
    printf("SDL_JoystickGetHat value:%d:\n", value);
#endif
    if (value & SDL_HAT_UP) {

выглядит как проблема с включенной защитой.

5
ответ дан 28 November 2019 в 02:53
поделиться

Вы можете обойти это, назначив стандартный out / error (я не знаю, к какому из них это приведет) к нулевому устройству. В Python стандартными файлами out / error являются sys.stdout / sys.stderr, а нулевым устройством является os.devnull, поэтому вы делаете

sys.stdout = open(os.devnull, "w")
sys.stderr = open(os.devnull, "w")

. Это должно полностью отключить эти сообщения об ошибках. К сожалению, это также отключит весь вывод консоли. Чтобы обойти это, отключите вывод непосредственно перед вызовом get_hat() метода, а затем восстановите его, выполнив

sys.stdout = sys.__stdout__
sys.stderr = sys.__stderr__

, который восстанавливает стандартное значение и ошибку до их первоначального значения.

15
ответ дан Sam Arthur Gillam 14 October 2019 в 10:31
поделиться

Чтобы завершить ответ Чарльза, в python встроены два менеджера контекста, redirect_stdout и redirect_stderr, которые можно использовать для перенаправления и / или подавления вывода команд в файл или переменную StringIO.

import contextlib

with contextlib.redirect_stdout(None):
    do_thing()

Для более полного объяснения прочитайте документы

.
9
ответ дан CharlesB 14 October 2019 в 10:31
поделиться

Я использую pythonw.exe (в Windows) вместо python.exe. В других ОС вы также можете перенаправить вывод в / dev / nul. И для того, чтобы все еще видеть мои выходные данные отладки, я использую модуль регистрации.

1
ответ дан Henning 14 October 2019 в 10:31
поделиться

Как Демолишун упоминает в ответе на закрытый дублирующий вопрос, существует ветка , в которой говорится об этой проблеме. Поток создан в августе 2009 года, и один из разработчиков говорит , что код отладки был оставлен случайно . Я установил Pygame 1.9.1 из pip, и выходные данные отладки все еще присутствуют.

Чтобы обойти это сейчас, я скачал исходник с pygame.org, удалил операторы печати из src / joystick.c и скомпилировал код.

Я нахожусь на OS X 10.7.5 для того, что это стоит.

1
ответ дан Community 14 October 2019 в 10:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: