Python имеет что-то как ключевое слово использования C++?

Код, который вы показали, не является причиной сбоя. Полное определение _Shift:

template
          (std::numeric_limits<_UIntType>::digits)>
  struct _Shift
  { static const _UIntType __value = 0; };

template
  struct _Shift<_UIntType, __w, true>
  { static const _UIntType __value = _UIntType(1) << __w; };

При этом используется специализация шаблона для проверки размера _UIntType во время компиляции. Первая версия используется, когда __w больше или равно std::numeric_limits<_UIntType>::digits, что имеет место в данном случае. Таким образом, результирующее значение равно 0, и сдвиг влево не выполняется.

Что касается самого сбоя: по-видимому, std::random_device не работает в Windows GCC и дает детерминированные результаты (как вы сами видели). Это также может быть связано с причиной аварии. Этот вопрос столкнулся с аналогичным сбоем, также с GCC 8.2 на Windows.

В качестве обходного пути вы можете использовать библиотеку Boost.Random , которая реализует тот же API.

8
задан Doug T. 15 February 2009 в 01:50
поделиться

4 ответа

Как Bill сказал, Python действительно имеет конструкцию

from X import *

но можно также явно указать, какие имена Вы хотите импортированный из модуля (пространство имен):

from X import foo, bar, blah

Это имеет тенденцию делать код еще более читаемым/легче для понимания, начиная с кого-то видящего, что идентификатор в источнике не должен искать через все импортированные модули для наблюдения, куда он прибывает из. Вот связанный вопрос: Спецификация Пространства имен В Отсутствие Ambuguity

Править: в ответ на комментарий Мира я упомяну, что можно также записать вещи как

import X.foo

но затем необходимо будет записать

X.foo.moo()

вместо просто

foo.moo()

Это - не обязательно плохая вещь, конечно. Я обычно использую смесь from X import y и import X.y формы, независимо от того, что я чувствую, делают мой код самым четким. Это - конечно, субъективная вещь в некоторой степени.

19
ответ дан 5 December 2019 в 05:13
поделиться
import X

или

from X import *

или

from X import a, b, c

Где X модуль Python, Вы хотите использовать.

Это было бы полезно, чтобы Вы дали нам пример кода Python, что Вы думаете очищенные потребности.

6
ответ дан 5 December 2019 в 05:13
поделиться

Несомненно, динамизм Python делает это тривиальным. Если у Вас был класс, проложенный под землей глубоко в пространстве имен: foo.bar.baz.blah, можно сделать:

def foo:
    f = foo.bar.baz.blah
    f1 = f()
6
ответ дан 5 December 2019 в 05:13
поделиться

Отметьте это

from foo import bar

работы, даже если bar модуль в foo пакет. Это позволяет Вам ограничить свое загрязнение пространства имен, не имея необходимость называть каждую функцию/класс в foo.bar то, что Вы могли бы хотеть использовать. Это также помогает читателям Вашего кода, потому что они будут видеть вызов к bar.baz() и имейте лучшую идею где baz прибыл из.

0
ответ дан 5 December 2019 в 05:13
поделиться
Другие вопросы по тегам:

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