AttributeError: 'NoneType' object has no attribute 'append'

后端 未结 2 359
天命终不由人
天命终不由人 2020-12-18 14:50

I have a weird problem with python passing a list as parameter to a function. Here is the code:

def foobar(depth, top, bottom, n=len(listTop)):
    print dir         


        
相关标签:
2条回答
  • 2020-12-18 15:26

    You pass in the result of top.append() to your function. top.append() returns None:

    >>> [].append(0) is None
    True
    

    You need to call .append() separately, then pass in just top:

    top.append(listTop[i])
    bottom.append(listBottom[i])
    foobar(depth+1, top, bottom)
    

    Note that the n=len(listTop) argument in the function is both redundant and only ever executed once, namely when you create the function. It won't be evaluated each time you call the function. You can omit it safely from the version you posted here in any case.

    0 讨论(0)
  • 2020-12-18 15:34

    top.append(listTop[i]) works in place and returns None

    0 讨论(0)
提交回复
热议问题