py三个面试小问题
1、是否遇到过Python的模块间循环引用的问题,如何避免它?
这是代码结构设计的问题,模块依赖和类依赖,如果老是觉得碰到循环引用可能的原因有几点:
a.可能是模块的分界线划错地方了
b.可能是把应该在一起的东西硬拆开了
c.可能是某些职责放错地方了
d.可能是应该抽象的东西没抽象
总之微观代码规范可能并不能帮到太多,重要的是更宏观的划分模块的经验技巧,推荐uml,脑图,白板等等图形化的工具先梳理清楚整个系统的总体结构和职责分工,采取办法,从设计模式上来规避这个问题,比如:使用 “__all__” 白名单开放接口,尽量避免import。
2、Python是如何进行内存管理的?
Python内部使用引用计数,来保持追踪内存中的对象,Python内部记录了对象有多少个引用,即引用计数,当对象被创建时就创建了一个引用计数,当对象不再需要时,这个对象的引用计数为0时,它被垃圾回收。所有这些都是自动完成,不需要像C一样,人工干预,从而提高了程序员的效率和程序的健壮性。
3、什么是Python自省?
Python自省是Python具有的一种能力,使程序员面向对象的语言所写的程序在运行时,能够获得对象的类Python型。Python是一种解释型语言。为程序员提供了极大的灵活性和控制力。