• 夜路破晓
    2019-06-10
    个人认知:感觉会看源码的人都很牛!我也想成人牛人,那么问题来了:
    如何学习看源码?

    作者回复: 根据需求,首先了解每一个block,每一个函数的大概意思,然后看下去,不懂的多去google一下,看多了你的水平自然就提高了

     1
     32
  • SCAR
    2019-06-10
    对于问题四的2而言,是因为python是动态语言,不要求声明变量,但是约定在函数体中赋值的变量是局部变量,所以需要理解的是“赋值”这个动作,不管是常规的完整赋值或是增强赋值,只有函数体内初次出现赋值就认为定义了局部变量。这样你就很好理解了,老师的例子中x+=1,出现了赋值,那么这个x就是局部变量了,而x+=1这个增强赋值的第二步会去找函数体内x的引用,于是就出现了找不到的错误。如果把x+=1改成print(x),则是打印出1,因为函数体没出现赋值,那么这个x是最上面赋值的x,它是全局的。
     3
     18
  • 阿卡牛
    2019-06-10
    over-allocate是什么意思

    作者回复: 会分配比实际元素多的空间,比如一个array实际有5个元素,但是如果是over-allocate的array,可能会分配10个元素的空间大小

    
     7
  • yshan
    2019-06-10
    重新查了下理解了下多态:多态就是多种形态。 有了继承,才有多态了。 继承了就具有父类的方法,然后子类就能够覆写父类方法,子类就能够调用该方法实现自己的需求。
    
     7
  • 小侠龙旋风
    2019-06-13
    1.细看了over-allocated分配空间大小的增长规律,4 4 8 9 10 11 12...不知道这样设计的缘由。
    2."当tuple的大小不超过20时,Python会把它缓存在内部的一个free list中。"这句话突然让我想起了小整数池。
    小整数池的概念:Python提前建立好范围在[-5, 256]的整数对象,且不会被垃圾回收。无论这个整数处于LEGB中的哪个位置,所有位于这个范围内的整数使用的都是同一个对象。
    主要目的是为了避免频繁申请和销毁小整数的内存空间,提高程序的运行效率。
    3.说一下我所理解的新哈希表的设计思想:
    indice下标,entry入口。用下标去寻找对应元素。
    维护一个数据量较小的结构,去访问一个数据量较大的结构。
    同理,也被运用于函数:
    函数的本质是在堆Heap中放置的对象;
    函数名的本质是放在栈Stack中的地址,指向堆中放置的对象。

    以上,思维比较发散,说得不对还望指出。
    展开
    
     3
  • 18646333118
    2019-06-11
    辛苦老师,希望能用更通俗的语言或者例子来帮助我们这帮菜鸟理解哈哈,有的时候感觉老师明白,但是编辑成文字总是差一点 哈
    
     3
  • xavier
    2019-07-11
    对于我这种野生程序员来说,收获颇多。每一篇都是从基础开始,然后循序渐进。感谢老师!
    
     2
  • KaitoShy
    2019-06-10
    怎么得上面的存储方式的?和hash存储有关么?还是python实现的造成的?
    
     1
  • 程序员人生
    2019-06-10
    想问一下Mr King,问题3我在pycharm中执行了一下没报错啊?
    
     1
  • Alery
    2019-11-22
    问题四的第二个问题,全局列表x之所以可以在函数中x.append是因为,x指向的列表不变,但是如果列表中的元素超过了列表预留的空间就会重新开启一个更大的列表x指向这个新的列表,这个时候x不也变了吗?为什么还能在函数中使用?
    
    
  • 追风筝的人
    2019-10-27
    Example 1:

    Input: 121
    Output: true
    Example 2:

    Input: -121
    Output: false
    Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.
    class Solution:
        def isPalindrome(self, x: int) -> bool:
            if (x>=0):
                return x==int(str(x)[::-1])
            else :
                return False
                    
                        
                   
       老师 int(str(x)[::-1]) 这一行可以解释下具体意思吗 从后向前读取元素 最后要把string类型转为int类型 吗?
            
    展开
    
    
  • 追风筝的人
    2019-10-27
    class Solution:
        def isPalindrome(self, x: int) -> bool:
            return str(x) == str(x)[::-1]

    老师:str(x) == str(x)[::-1] 两个::是什么意思
     1
    
  • 隰有荷
    2019-08-23
    不太明白为什么新哈希表的结构是
    Indices
    None | index | None | None | index | None |

    Entries 这种形式?

    None和index的排列有什么规则吗?为什么会有None?
    展开
    
    
  • 静艺
    2019-08-11
    每节的配图都很有feel哈哈
    
    
  • 瞳梦
    2019-07-08
    list的append()并不是一个赋值操作,不会去定义新的变量。而是会根据LEGB规则去寻找list这个变量。
    
    
  • catshitfive
    2019-06-11
    有几个地方不是很懂请老师能否说明一下:
    (1)python中的list数据结构本质上是array,但是list多用来进行增删改的操作,岂不是没有链表结构时间复杂度低?还是说有什么优化?(2)list中存储的是指针(存储每个不可变元素对象的地址),我用id()查看了每个指针内存储的地址,发现是连续的,但是地址都相差32,如何理解32个这个数字,是32bytes? list除了存储的是指针,那么它的空间内还存储了指针指向的那些元素吗?(3)指针本身是一块内存,那么指针对应自己本身的地址如何知晓?
    
    
  • Geek_d848f7
    2019-06-10
    老师,原谅我还是不太理解这2点吧
       1. 列表分配大小时,遵循下面模式:0、4、8…,我看源代码的确这样,但是怎么算都对不上,求指导;
       2. 哈希的存储怎么知道是如图形式呢?尤其是无元素位置,这个位置为啥要分配呢?
    
    
  • 
    2019-06-10
    关于面向对象,看老师有没有机会讲下思路或技巧,我感觉我写面向对象还是有点带面向过程。
    
    
  • Hoo-Ah
    2019-06-10
    我理解的多态是同一种行为,不同的表现形式。
    
    
我们在线,来聊聊吧