Чтобы использовать метод random.randint, я могу использовать следующие два варианта:

import random

# one way to use random
random.randint(1,10)

# second way with instanciating first
instance = random.Random()
instance.randint(1,10)

Почему я могу использовать первый способ, хотя я еще не создал экземпляр?

1
simon16 23 Июл 2020 в 12:59

1 ответ

Лучший ответ

Импорт random создает экземпляр Random в частной переменной.

На строке 786 из random.py.

_inst = Random()

И затем по строке 791.

randint = _inst.randint

random.py находится в папке Lib вашей установки Python, если вы хотите проверить это самостоятельно.

Строки 786–808 представляют интерес. Они в основном устанавливают все методы этого частного экземпляра random на переменные, чтобы их можно было вызывать таким образом.

Из документации.

Функции, предоставляемые этим модулем, на самом деле являются связанными методами скрытого экземпляра класса random.Random. Вы можете создавать свои собственные экземпляры Random, чтобы получить генераторы, которые не разделяют состояние.

https://docs.python.org/3/library/random.html

2
Axe319 23 Июл 2020 в 10:16