代码如下:
CSV_COLUMNS = ['survived', 'sex', 'age', 'n_siblings_spouses', 'parch',
'fare', 'class', 'deck', 'embark_town', 'alone']
dataset = tf.data.experimental.make_csv_dataset(..., column_names=CSV_COLUMNS, ...)当我在我的tensorflow对象上运行这段代码时,我得到了一个类型错误:位置参数跟随关键字参数。
当我尝试调试它时,如下所示
CSV_COLUMNS = ['survived', 'sex', 'age', 'n_siblings_spouses', 'parch', 'fare', 'class', 'deck', 'embark_town', 'alone']
dataset = tf.data.experimental.make_csv_dataset(..., ..., column_names=CSV_COLUMNS)然后我得到了另一个类型错误: make_csv_dataset_v2()缺少一个必需的位置参数:'batch_size‘
最后,我再次更改了它
CSV_COLUMNS = ['survived', 'sex', 'age', 'n_siblings_spouses', 'parch', 'fare', 'class', 'deck', 'embark_town', 'alone']
dataset = tf.data.experimental.make_csv_dataset(..., column_names=CSV_COLUMNS, batch_size = 64)另一个类型错误:“省略号”对象不可迭代
我要疯了!
发布于 2020-10-09 08:55:38
错误"SyntaxError: positional argument follows argument“(我不认为这是您建议的TypeError )意味着您正在像这样使用函数调用的参数:
some_function(10, b=20, 30)请注意,中间参数是如何使用关键字'b‘显式命名的,但第一个和第三个参数不是,它们依赖于正确的位置。
这样做是不允许的,在赋值所有需要的位置参数之前使用关键字参数。由于Python确实允许按位置使用关键字参数,因此有几种方法可以解决这个问题。例如:
def some_function(a, b, c=0, d=1):
pass
# these are OK
some_function(10, 20)
some_function(10, b=20)
some_function(10, 20, 30)
some_function(10, 20, d=40)
# this is not OK
some_function(10, b=20, 30)
# this is the fix:
some_function(10, b=20, c=30)对于相同的示例函数,如果您像这样调用它:
some_function(10, c=30)你会得到你提到的第二个错误:"TypeError: some_function()缺少1个必需的位置参数“。这是有道理的,因为b现在有什么价值?
最后一条错误消息“‘省略号’对象不可迭代”要具体得多。Python语言中有一个特殊的对象,叫做Ellipsis,也被写成...。它不是可迭代的(例如,你不能做像for x in ...这样的事情),你得到的错误可能意味着它被赋值给某个参数,该参数期望传递一个可迭代。
您可能应该非常仔细地检查您传递的是什么参数,以及您希望将这些参数分配给哪些参数,一旦修复了这些参数,这个错误也不会再出现。要探究为什么会导致这种情况,实在是太离谱了。
您可能实际上想要或需要使用省略号,以告诉对象或函数自动填充某些参数并避免传递大量参数,但在这种情况下,您需要非常详细地说明您正在使用的库,因为这不是标准的Python行为,而是特定于这些库中发生的事情,您可能应该参考它们的文档。
https://stackoverflow.com/questions/64255034
复制相似问题