Когда пользователь вызывает , функция read_data_sets()
определяется как
def read_data_sets(all_width_dir,width_dir, one_hot=False):
может, но не нужно предоставлять значение для последнего параметра, поскольку это ключевой параметр - с ключом one_hot
и значением по умолчанию False
. В обоих случаях параметр one_hot
будет иметь значение - предоставлено или по умолчанию.
Теперь давайте рассмотрим последние две строки в полном определении этой функции:
def read_data_sets(all_width_dir,width_dir, one_hot=False):
class DataSets(object):
pass
data_sets = DataSets()
train_labels = extract_labels(TRAIN_LABELS, one_hot=one_hot)
test_labels = extract_labels(TEST_LABELS, one_hot=one_hot)
Оба они вызывают функцию extract_labels()
, и оба предоставляют значение для параметра с ключом имя ключа one_hot
. Предоставленное значение - это содержимое переменной one_hot
- это параметр (определенной в настоящее время) функции read_data_sets()
, и, как я уже упоминал в начале, оно имеет некоторое значение - предоставляется вызывающим абонентом или по умолчанию one (False
).
Примечание:
Немного сбивает с толку то, что в параметре one_hot=one_hot
одинаковое имя для клавиши - слева - и для предоставленного значения справа.)
Но после определения функций, i. е. на уровне модуля нет переменной с именем one_hot
- это имя было local для определения функции.
Итак, у вас есть вызов функции
labels = extract_labels(train_label, one_hot=one_hot)
предоставляет значение для ключевого параметра либо напрямую (например, one_hot=True
), либо косвенно по переменной, которому вы заранее назначаете значение (например, xyz = True
, а затем в вызове функции используйте one_hot=xyz
), либо принять значение по умолчанию (False
) с помощью , полностью пропуская ключевой параметр:
labels = extract_labels(train_label)