の引数の数を把握するために失敗し、私は、Python 2.7でスクリプトを実行している今日遭遇した奇妙な行動です:Pythonはここに私の機能
コード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)) ]))
が出力:
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)
コード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)) ]))
出力:これらの2つのブロック間の
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)
唯一の違いは、私がtemp_fun
に与える引数の数です。 2番目の出力は感覚的ですが、Pythonが2番目のパラメータで3つのパラメータを認識しているので、最初の出力は理解できません。
誰かが何が起こっているのか考えているなら、私は喜んでそれを取るでしょう。
私の考える問題は、あなたの46行目にもあります。これは 'temp_fun'関数もあり、2の代わりに1つの引数しか取れないようです。 – xbb
実際に、これを追加しなければならなかったことを忘れていました。間違って – Thrastylon