Python面试解析-03

一、什么是Pillow库?

Pillow是PIL(Python图形库)的一个友好分支。对于用户比PIL更加友好,对于任何在图形领域工作的人是必备的库。

二、如何使用Pillow实现图像缩放?

在Pillow中图片的缩放有以下两种方式。

(1)使用resize函数。

(2)使用thumbnail函数。

resize函数可以缩小,也可以放大。

thumbnail只能缩小,不能放大,所以如果只打开一次图片,要存出多个尺寸的话,要么从大到小开始缩放。

或者使用resize从大到小开始缩放,因为用resize放大的话,可以想象那个马赛克。

当然,也可以设置缩放图片的质量(PIL.Image.NEAREST:最低质量;PIL.Image.BILINEAR:双线性;PIL.Image.BICUBIC:三次样条插值;Image.ANTIALIAS:最高质量)。

三、什么是正则表达式?谈谈你对正则表达式的理解。

正则表达式(Regular Expression, RE)又称为正规表示法或常规表示法,常常用来检索、替换那些符合某个模式的文本。它首先设定好了一些特殊的字及字符组合,通过组合的“规则字符串”来对表达式进行过滤,从而获取或匹配想要的特定内容。它具有灵活、逻辑性和功能性强,能迅速地通过表达式从字符串中找到所需信息的优点,但对于刚接触的人来说,比较晦涩难懂。

四、如何用Python来进行查询和替换一个文本字符串?Python中re模块函数里面search()和match()函数有何区别?

可以使用sub()方法来进行查询和替换,sub方法的格式为:

replacement是被替换成的文本;

string是需要被替换的文本;

count是一个可选参数,指最大被替换的数量。

match()函数只检测RE是不是在string的开始位置匹配,search()会扫描整个string查找匹配,也就是说match()只有在0位置匹配成功的话才有返回,如果不是开始位置匹配成功的话,match()就返回None。

五、Python中如何实现多线程?

线程是轻量级的进程,多线程允许一次执行多个线程。众所周知,Python是一种多线程语言,它有一个多线程包。

GIL(全局解释器锁)确保一次执行单个线程。一个线程保存GIL并在将其传递给下一个线程之前执行一些操作,这就产生了并行执行的错觉。但实际上,只是线程轮流在CPU上。当然,所有传递都会增加执行的开销。

六、创建两个线程,其中一个输出1~52,另外一个输出A~Z。输出格式要求:

12A 34B 56C 78D。

七、介绍一下except的用法和作用。

Python的except用来捕获所有异常,因为Python里面的每次错误都会抛出一个异常,所以每个程序的错误都被当作一个运行时错误。

八、Python如何捕获异常?

Python中捕获异常可以有三种方式。

(1)使用try和except语句来捕获异常,具体代码如下。

捕获到的IOError错误的详细原因会被放置在对象e中,然后运行该Python异常处理的except代码块捕获所有的异常。

(2)用raise语句手动引发一个异常,具体代码如下。

(3)采用sys模块回溯最后的异常,具体代码如下。

九、Python到底是什么样的语言?你可以比较其他技术或者语言来回答你的问题。

Python是解释型语言。这意味着不像C和其他语言,Python运行前不需要编译。其他解释型语言包括PHP和Ruby。Python是动态类型的,这意味着你不需要在声明变量时指定类型。Python是面向对象语言,所以允许定义类并且可以继承和组合。Python没有访问标识,如在C++中的public、private,在Python中,函数是一等公民。这就意味着它们可以被赋值,从其他函数返回值,并且传递函数对象。类不是一等公民。写Python代码很快,但是跑起来会比编译型语言慢。Python允许使用C扩展程序,所以瓶颈可以得到处理。Numpy库就是一个很好的例子,因为很多代码不是Python直接写的,所以运行很快。Python使用场景很多:Web应用开发、自动化、科学建模、大数据应用等。它也经常被看作“胶水”语言,使得不同语言间可以衔接上。Python能够简化工作,使得程序员能够关心如何重写代码而不是详细看一遍底层实现。

十、单元测试是什么?单元测试有什么好处?

单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或场景)下某个特定函数的行为。单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作。

单元测试从长期来看,可以提高代码质量,减少维护成本,降低重构难度。通过单元测试我们能快速熟悉代码,不需要深入地阅读代码,便能知道这段代码做什么工作,有哪些特殊情况需要考虑,包含哪些业务。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容