簡體   English   中英

Python無法識別我的函數的參數數量

[英]Python failing to recognize the number of arguments of my function

這是我今天在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)

這兩個塊之間的唯一區別是我給temp_fun的參數temp_fun 第二個輸出使sens,但我無法理解第一個的行為,因為Python識別第二個上的3個參數。

如果有人知道發生了什么,我很樂意接受它。

看起來錯誤實際上發生在該行之前的行上:

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

len調用中的temp_fun具有正確數量的參數,但不temp_fun append調用中的temp_fun

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM