Hier ist ein seltsames Verhalten in Python begegnete ich ein Skript heute zu erkennen, läuft 2.7:Python andernfalls die Anzahl der Argumente meiner Funktion
Code 1:
def pprint_compare_titles (self, ts_numbers = [1], **kwargs) :
temp = self.compare_titles (ts_numbers, **kwargs)
length = [ len(max(temp[0].keys(), key = len)) ]
def temp_fun (x, i) :
try :
return self.ts[ts_numbers[i]].titles[x[0]]
except IndexError :
return ''
for i in range(0, len(temp)) :
length.append(temp_fun(max(temp[i].values(),
key = lambda x : len(temp_fun(x, i)))))
for k in temp[0].keys() :
print('| {t: <{l}} |'.format(t = k, l = length[0])
+ ''.join([ ' {t: <{l}} |'.format(
t = temp_fun(temp[i][k], i),
l = length[i+1])
for i in range(0, len(temp)) ]))
Ausgang:
45 for i in range(0, len(temp)) :
46 length.append(temp_fun(max(temp[i].values(),
---> 47 key = lambda x : len(temp_fun(x, i)))))
48 for k in temp[0].keys() :
49 print('| {t: <{l}} |'.format(t = k, l = length[0])
TypeError: temp_fun() takes exactly 2 arguments (1 given)
Code 2:
def pprint_compare_titles (self, ts_numbers = [1], **kwargs) :
temp = self.compare_titles (ts_numbers, **kwargs)
length = [ len(max(temp[0].keys(), key = len)) ]
def temp_fun (x, i) :
try :
return self.ts[ts_numbers[i]].titles[x[0]]
except IndexError :
return ''
for i in range(0, len(temp)) :
length.append(temp_fun(max(temp[i].values(),
key = lambda x : len(temp_fun(x, i, 42)))))
for k in temp[0].keys() :
print('| {t: <{l}} |'.format(t = k, l = length[0])
+ ''.join([ ' {t: <{l}} |'.format(
t = temp_fun(temp[i][k], i),
l = length[i+1])
for i in range(0, len(temp)) ]))
Ausgang:
45 for i in range(0, len(temp)) :
46 length.append(temp_fun(max(temp[i].values(),
---> 47 key = lambda x : len(temp_fun(x, i, 42)))))
48 for k in temp[0].keys() :
49 print('| {t: <{l}} |'.format(t = k, l = length[0])
TypeError: temp_fun() takes exactly 2 arguments (3 given)
Der einzige Unterschied zwischen diesen beiden Blöcken ist die Anzahl der Argumente, die ich zu temp_fun
geben. Die zweite Ausgabe macht sens, aber ich kann das Verhalten der ersten nicht verstehen, da Python 3 Parameter auf der zweiten erkennt.
Wenn jemand eine Vorstellung davon hat, was vor sich geht, würde ich es gerne nehmen.
Das Problem, das ich denke, ist auf Ihrer Linie 46, die auch eine 'temp_fun' Funktion hat und das scheint nur 1 Argument anstelle von 2 zu nehmen. – xbb
Tatsächlich vergaß ich, dass ich diesen hinzufügen musste, und die Pfeilposition schickte mich auf dem falschen. – Thrastylon