废话不多说,直接上干货
x=111
和x="I'm a string"
这样的代码,程序不会报错。为什么提这个问题: + 如果你应聘的是一个Python开发岗位,你就应该知道这是门什么样的语言,以及它为什么这么酷。以及它哪里不好。
fliter()
,map()
,reduce()
,apply()
函数来支持函数式编程。try...except...finally
语句:当try
语句执行时发生异常,回到try
语句层,寻找后面是否有except
语句。找到except
语句后,会调用这个自定义的异常处理器。except
将异常处理完毕后,程序继续往下执行。finally
语句表示,无论异常发生与否,finally
中的语句都要执行。assert
语句:判断assert
后面紧跟的语句是True
还是False
,如果是True
则继续执行print
,如果是False
则中断程序,调用默认的异常处理器,同时输出assert
语句逗号后面的提示信息。with
语句:如果with
语句或语句块中发生异常,会调用默认的异常处理器处理,但文件还是会正常关闭。copy
是浅拷贝,只拷贝可变对象的父级元素。 deepcopy
是深拷贝,递归拷贝可变对象的所有元素。为了统一类(class)和类型(type),python在2.2版本引进来新式类。在2.1版本中,类和类型是不同的。为了确保使用的是新式类,有以下方法: 1. 放在类模块代码的最前面 metaclass = type 2. 从内建类object直接或者间接地继承 3. 在python3版本中,默认所有的类都是新式类。
new
方法会返回所构造的对象,init
则不会.new
函数必须以cls
作为第一个参数,而init
则以self
作为其第一个参数.1. 引用计数 PyObject是每个对象必有的内容,其中ob_refcnt就是做为引用计数。当一个对象有新的引用时,它的ob_refcnt就会增加,当引用它的对象被删除,它的ob_refcnt就会减少.引用计数为0时,该对象生命就结束了。 优点: 简单 实时性 缺点: 维护引用计数消耗资源 循环引用
2 标记-清除机制 基本思路是先按需分配,等到没有空闲内存的时候从寄存器和程序栈上的引用出发,遍历以对象为节点、以引用为边构成的图,把所有可以访问到的对象打上标记,然后清扫一遍内存空间,把所有没标记的对象释放。
3 分代技术 分代回收的整体思想是:将系统中的所有内存块根据其存活时间划分为不同的集合,每个集合就成为一个“代”,垃圾收集频率随着“代”的存活时间的增大而减小,存活时间通常利用经过几次垃圾回收来度量。 Python默认定义了三代对象集合,索引数越大,对象存活时间越长。
@property
有什么作用?如何实现成员变量的只读属性?@property
装饰器就是负责把一个方法变成属性调用,通常用在属性的get
方法和set
方法,通过设置@property
可以实现实例成员变量的直接访问,又保留了参数的检查。另外通过设置get
方法而不定义set
方法可以实现成员变量的只读属性。
*args
代表位置参数,它会接收任意多个参数并把这些参数作为元组传递给函数。**kwargs
代表的关键字参数,允许你使用没有事先定义的参数名,另外,位置参数一定要放在关键字参数的前面。with statement
吗?它的好处是什么?具体如何实现?with语句适用于对资源进行访问的场合,确保不管使用过程中是否发生异常都会执行必要的清理操作,释放资源,比如文件使用后自动关闭、线程中锁的自动获取和释放等。
本文希望可以为学习Python找工作的伙伴们提供一些帮助,面试过程当中最重要的一点是放平心态,求职过程是双方的,不需要太过紧张,把自己掌握的知识充分表达出来就好。只要你是匹千里马,迟早会被伯乐牵出来遛一遛的。