zoukankan      html  css  js  c++  java
  • 最近碰到一些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具体的实现机制我还是不太清楚,希望有知道的网友帮忙解答一下。

  • 相关阅读:
    Java 继承和重写
    Java 构造函数和函数重载
    java 面向对象
    for循环和数组例题
    java数组和函数
    java程序流程控制
    CF600C Make Palindrome
    CF600A Extract Numbers
    [NOI2007]社交网络
    SPOJ 6779 GSS7
  • 原文地址:https://www.cnblogs.com/chenjianhong/p/4144869.html
Copyright © 2011-2022 走看看