• 最近碰到一些python的小知识点,容易错的地方


    1.第一个问题

    def getParents(child,parents=[]):
        if child:
            parents.append(child)
            return getParents(child-1,parents)
        else:
            return parents
                
    # import pdb
    # pdb.set_trace()
                
    print getParents(5)


     

    结果是:[5, 4, 3, 2, 1]

    2.加上一行:

    def getParents(child,parents=[]):
        if child:
            parents.append(child)
            return getParents(child-1,parents)
        else:
            return parents
                
    # import pdb
    # pdb.set_trace()
                
    print getParents(5)
    print getParents(3)


     

    结果是:

    [5, 4, 3, 2, 1]
    [5, 4, 3, 2, 1, 3, 2, 1]

    我觉得原因是:

    parent=[],这里的parent保存的是[]这个列表list的一个引用。当我们执行一次函数后,parents所引用的内存中的值会发生改变。

    python具体的实现机制我还是不太清楚,希望有知道的网友帮忙解答一下。

  • 相关阅读:
    uva1610 Party Games
    uva1442 Cav
    uva1609 Foul Play
    uva1608 Non-boring sequences
    uva12174 滑动窗口+预处理
    uva 1451 数形结合
    light oj 1336 sigma function
    找常用词(字符串处理)问题
    指定排序问题
    完数问题
  • 原文地址:https://www.cnblogs.com/chenjianhong/p/4144869.html
Copyright © 2020-2023  润新知