gpt4 book ai didi

Python 无法识别我的函数的参数数量

转载 作者:行者123 更新时间:2023-11-30 22:55:58 24 4
gpt4 key购买 nike

这是我今天在 Python 2.7 中运行脚本时遇到的奇怪行为:

代码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) ) ]) )

输出:

     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)

这两个 block 之间的唯一区别是我提供给 temp_fun 的参数数量。第二个输出有意义,但我无法理解第一个输出的行为,因为 Python 可以识别第二个输出的 3 个参数。

如果有人知道发生了什么,我很乐意接受。

最佳答案

看起来错误实际上发生在该错误的前一行:

    length.append( temp_fun( max( temp[i].values(),
#^^^^^^^^ here
key = lambda x : len( temp_fun( x, i ) ) ) ) )

len 调用中的 temp_fun 具有正确数量的参数,但 append 中的 temp_fun 没有> 打电话。

关于Python 无法识别我的函数的参数数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37188955/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com