py三个面试小问题

1、是否遇到过Python的模块间循环引用的问题,如何避免它?

 

这是代码结构设计的问题,模块依赖和类依赖,如果老是觉得碰到循环引用可能的原因有几点:

 

a.可能是模块的分界线划错地方了

b.可能是把应该在一起的东西硬拆开了

c.可能是某些职责放错地方了

d.可能是应该抽象的东西没抽象

 

总之微观代码规范可能并不能帮到太多,重要的是更宏观的划分模块的经验技巧,推荐uml,脑图,白板等等图形化的工具先梳理清楚整个系统的总体结构和职责分工,采取办法,从设计模式上来规避这个问题,比如:使用 “__all__” 白名单开放接口,尽量避免import。

 

2、Python是如何进行内存管理的?

 

Python内部使用引用计数,来保持追踪内存中的对象,Python内部记录了对象有多少个引用,即引用计数,当对象被创建时就创建了一个引用计数,当对象不再需要时,这个对象的引用计数为0时,它被垃圾回收。所有这些都是自动完成,不需要像C一样,人工干预,从而提高了程序员的效率和程序的健壮性。

 

3、什么是Python自省?

 

Python自省是Python具有的一种能力,使程序员面向对象的语言所写的程序在运行时,能够获得对象的类Python型。Python是一种解释型语言。为程序员提供了极大的灵活性和控制力。

posted @ 2019-03-07 19:40  红领巾***  阅读(162)  评论(0编辑  收藏  举报