函数的参数为​​False和True

时间:2018-08-29 11:09:47

标签: python numpy

我想了解以下代码。在面向对象的部分中,参数之一是one_hot= one_hot。但是,如果我用extract_labels调用函数one_hot=one_hot则不起作用。我必须使用TrueFalse语句。有人可以指导我为什么吗?这些TrueFalse表示什么。在调用one=True函数的同时使用extract_label时,我打印了结果,它打印出一个热矢量。

#Functions
def dense_to_one_hot(labels_dense, num_classes=2):

    num_labels = labels_dense.shape[0]
    index_offset = numpy.arange(num_labels) * num_classes
    labels_one_hot = numpy.zeros((num_labels, num_classes))
    labels_one_hot.flat[index_offset + labels_dense.ravel()] = 1
    return labels_one_hot
def extract_labels(labels, one_hot=False):
    if one_hot :
        return dense_to_one_hot(labels)
    return labels

#Object oriented part
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)

return data_sets

train_label = np.load("./Input/1.5/train_label.npy")
labels = extract_labels(train_label, one_hot=one_hot)
print(labels)

2 个答案:

答案 0 :(得分:2)

函数extract_labels具有2个参数:

  • 标签-必需,没有默认值
  • one_hot-可选,其默认值为False

要像one_hot = one_hot一样调用extract_lablels,您需要在之前指定one_hot变量

答案 1 :(得分:1)

当用户调用时,功能read_data_sets()定义为

def read_data_sets(all_width_dir,width_dir, one_hot=False):

它可能但不需要提供最后一个参数的值,因为它是 keyed参数-带有键one_hot和默认值{ {1}}。在这两种情况下,参数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())。


注意:
有点困惑,在False参数中,的名称相同-左侧-右侧的提供的值


但是在函数定义之后,i。 e。在模块级别,没有名称为one_hot=one_hot的变量-该名称在函数定义中是 local

因此您可以进行函数调用

one_hot

直接(例如,labels = extract_labels(train_label, one_hot=one_hot) )或通过变量间接提供键控参数的值,您预先为其分配了一个值(例如,one_hot=True,然后在函数调用中使用{{ 1}}),或通过完全省略键参数来接受默认值xyz = True):

one_hot=xyz