#1
python有哪几种数据结构?
#2
python是脚本语言么?
#3
python2.x和python3.x有哪些差别?随便讲讲
#4
python的类有public, private, protected之分么?
无。全靠自己自觉。
#5
python列表list的底层实现方式是?
over allocated array
#6
什么是Python生成器?
有哪几种存在方式?
1.函数中有yield的
2.(i for i in range(10001))
#7
什么是Python迭代器?
简而言之:
迭代器就是 iter(容器),使得可以用next遍历,直到StopIteration。
迭代器是有限的集合,而生成器可以是无限的集合。
#8
list和tuple有什么区别?
动静之分
可变与不可变之分
#9
Python中的list和dict是怎么实现的?
dict是哈希实现
list是array实现
#10
Python中使用多线程可以达到多核CPU一起使用吗?
cpython有全局解释锁,GIL。
python通过 引用 计数 来管理内存。每一次创建或者引用都会计数+1,如果引用计数=0,则自动释放内存。
#11
为什么引入GIL?
1.设计者为了规避类似于内存管理的复杂竞争问题。
2. cpython大量使用c语言库,但是大部分的c语言都不是原生线程安全。(线程安全会降低性能和增加复杂度)
#12
GIL怎么工作?
每个线程(程序员)开始工作时候,会锁住GIL(类比电脑)。阻止别的进程执行;
工作了一会儿,需要休息,就主动释放GIL,让别人用。
那,一会儿是多久?
一会儿就是python里有计时器,check_interval,轮巡察看GIL的是否锁住情况。一般是15ms,休息一次。
实际上,虽然只允许同时一个人用电脑,但是还是需要休息的抢占机制,也就是还是需要自己对临界的资源加锁。这是另外一个话题了。
#13
那如何绕过GIL?
如果你实在看不下去,那就用其他的语言实现的解释器呗,比如Jpython(java实现的)。
或者呢,把关键性的代码,放到比如C++中实现,别用py了。。。。
#14
什么是装饰器?
#15
Python如何进行内存管理?
如上述,引用计数呗。就这样?计数=0时候回收?
诶,不对,思考一下,如果循环引用或者引用环呢?
有算法:标记清除图算法,分代算法。
#16
Python中的垃圾回收机制?
py一般自动回收。如果咱们非要手动,就先del a来删除引用;然后gc.collec()
#17
•什么是lambda表达式?
#18
•什么是深拷贝和浅拷贝?
#19
•双等于和is有什么区别?

本文介绍了Python的数据结构,如列表、元组和字典,以及其作为脚本语言的特点。详细阐述了Python2.x与3.x的主要差异,包括语法和内置函数的变化。探讨了Python的面向对象编程,说明了类的访问控制没有严格区分。深入讨论了Python列表的底层实现为overallocatedarray,以及生成器和迭代器的概念和用法。此外,文章还分析了Python的内存管理和垃圾回收机制,特别是引用计数和GIL(全局解释器锁)对多线程的影响。最后,提到了Python中的装饰器、深拷贝与浅拷贝、双等于和is的区别等核心概念。
1263

被折叠的 条评论
为什么被折叠?



