原 python面试题整理(一)
前言
Python 是一门兼具简单与功能强大的编程语言。你无须浪费时间去造轮子,它会让我们专注于如何去解决问题。它的灵活性、易用性、简洁性、丰富的资源使得它广泛应用在不同领域。近年来,随着人工智能的浪潮汹涌来袭,python当之无愧成了大家的宠儿,当然,在你简历上如果写着你会python,那么,面试官就会问你很多有关python语言的小问题,为了便于自己复习,笔者特意整理了python面试题系列(习题难易程度和顺序无关),希望在帮到自己的同时也帮到广大编程爱好者或者求职者。
话不多说,直接上题:
面试题
1.Python里面search()和match()的区别?
match()函数只检测RE是不是在string的开始位置匹配,search()会扫描整个string查找匹配, 也就是说match()只有在0位置匹配成功的话才有返回,如果不是开始位置匹配成功的话,match()就返回none。
2.Python里面如何生成随机数?
import random
random.random()
它会返回一个随机的0和1之间的浮点数
3.python中如何在一个function里面设置一个全局的变量?
global
语句被用来声明x
是全局的——因此,当我们在函数内把值赋给x
的时候,这个变化也反映在我们在主块中使用x
的值的时候。你可以使用同一个global
语句指定多个全局变量。例如global x, y, z
。
4.如何用Python删除一个文件?
使用os.remove(filename)或者os.unlink(filename)
5.什么是lambda函数?它有什么好处?
当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便。lambda 函数是一个可以接收任意多个参数(包括可选参数)并且返回单个表达式值的函数。 lambda 函数不能包含命令,它们所包含的表达式不能超过一个。不要试图向lambda 函数中塞入太多的东西;如果你需要更复杂的东西,应该定义一个普通函数,然后想让它多长就多长。
举个栗子:
-
f = lambda x:x**2
-
print(f(4))
6.Python里面如何实现tuple和list的转换?
这个直接转换就好,看下面的栗子:
-
-
-
(1, 2, 3, 4, 5)
-
-
-
[1, 2, 3, 4, 5]
7.Python是如何进行内存管理的?
Python引用了一个内存池(memory pool)机制,即Pymalloc机制(malloc:n.分配内存),用于管理对小块内存的申请和释放
内存池(memory pool)的概念:
当 创建大量消耗小内存的对象时,频繁调用new/malloc会导致大量的内存碎片,致使效率降低。内存池的概念就是预先在内存中申请一定数量的,大小相等 的内存块留作备用,当有新的内存需求时,就先从内存池中分配内存给这个需求,不够了之后再申请新的内存。这样做最显著的优势就是能够减少内存碎片,提升效率。
内存池的实现方式有很多,性能和适用范围也不一样。
python中的内存管理机制——Pymalloc:
python中的内存管理机制都有两套实现,一套是针对小对象,就是大小小于256bits时,pymalloc会在内存池中申请内存空间;当大于256bits,则会直接执行new/malloc的行为来申请内存空间。
关于释放内存方面,当一个对象的引用计数变为0时,python就会调用它的析构函数。在析构时,也采用了内存池机制,从内存池来的内存会被归还到内存池中,以避免频繁地释放动作。
8.到底什么是Python?
下面是一些关键点:
- Python是一种解释型语言。这就是说,与C语言和C的衍生语言不同,Python代码在运行之前不需要编译。其他解释型语言还包括PHP和Ruby。
- Python是动态类型语言,指的是你在声明变量时,不需要说明变量的类型。你可以直接编写类似
x=111
和x="I'm a string"
这样的代码,程序不会报错。 - Python非常适合面向对象的编程(OOP),因为它支持通过组合(composition)与继承(inheritance)的方式定义类(class)。Python中没有访问说明符(access specifier,类似C++中的
public
和private
),这么设计的依据是“大家都是成年人了”。 - 在Python语言中,函数是第一类对象(first-class objects)。这指的是它们可以被指定给变量,函数既能返回函数类型,也可以接受函数作为输入。类(class)也是第一类对象。
- Python代码编写快,但是运行速度比编译语言通常要慢。好在Python允许加入基于C语言编写的扩展,因此我们能够优化代码,消除瓶颈,这点通常是可以实现的。
numpy
就是一个很好地例子,它的运行速度真的非常快,因为很多算术运算其实并不是通过Python实现的。 - Python用途非常广泛——网络应用,自动化,科学建模,大数据应用,等等。它也常被用作“胶水语言”,帮助其他语言和组件改善运行状况。
- Python让困难的事情变得容易,因此程序员可以专注于算法和数据结构的设计,而不用处理底层的细节。