Параметр функции по умолчанию не инициализирован в Python 3 - PullRequest
0 голосов
/ 24 апреля 2018

Следующий код

def score_track(details, result_details, top_score=200):
    if top_score < 120:
        # do smth
    return None

работает в Python 2, но вызывает исключение в Python 3:

Traceback (most recent call last):
  File "function.py", line 280, in <module>
    search_result.get('score'))
  File "ImportList.py", line 131, in score_track
    if top_score < 120:
TypeError: '<' not supported between instances of 'NoneType' and 'int'

Если я инициализирую top_score явно, он работает нормально.

score_track функция вызывается так:

add_song(details,score_track(details,details))

search_result список строится так:

  search_results = [] 
  dlog('search details: '+str(details)) 

  lib_album_match = False 
  if details['artist'] and details['title'] and search_personal_library:
      lib_results = [item for item in library if s_in_s(details['artist'],item.get('artist')) and s_in_s(details['title'],item.get('title'))] 
      dlog('lib search results: '+str(len(lib_results))) 
      for result in lib_results: 
          if s_in_s(result['album'],details['album']): 
              lib_album_match = True 
          item = {} 
          item[u'track'] = result 
          item[u'score'] = 200 
          search_results.append(item)

Что не так?Я не нашел никакой информации о различном поведении значений параметров по умолчанию в Python3 и Python2.

...