Python
常用的Python标准库有哪些?
常用的标准库:os操作系统,time时间,random随机,pymysql连接数据库,math数学,threading线程,multiprocessing进程,queue队列
第三方库:django和flask,requests,virtualenv,hashlib,md5
常用的科学计算库:Numpy,Scipy,Pandas等。
Python有哪些特点和优点?
作为一门编程入门语言,Python主要有以下特点和优点:
1)可解释
2)具有动态特性
3)面向对象
4)简明简单
5)开源
6)具有强大的社区支持
深拷贝和浅拷贝之间的区别是什么?
深拷贝就是将一个对象拷贝到另一个对象中,这意味着如果你对一个对象的拷贝做出改变时,不会影响原对象。在Python中,我们使用函数deepcopy()执行深拷贝。1
2import copy
b = copy.deepcopy(a)
浅拷贝则是将一个对象的引用拷贝到另一个对象上,所以如果我们在拷贝中改动,会影响到原对象。我们使用函数function()执行浅拷贝。1
b = copy.copy(a)
列表和元组之间的区别是?
二者的主要区别是列表是可变的,而元组是不可变的。
在Python中如何实现多线程?
Python中的GIL(全局解释器锁)确保一次执行单个线程。一个线程保存GIL并在将其传递给下个线程之前执行一些操作,这会让我们产生并行运行的错觉。但实际上,只是线程在CPU上轮流运行。
在Python中是如何管理内存的?
Python有一个私有堆空间来保存所有的对象和数据结构。作为开发者,我们无法访问它,是解释器在管理它。但是有了核心API后,我们可以访问一些工具。Python内存管理器控制内存分配。另外,内置垃圾回收器会回收使用所有的未使用内存,所以使其适用于堆空间。
当退出Python时,是否释放全部内存?
不会。循环引用其它对象或引用自全局命名空间的对象的模块,在Python退出时并非完全释放。另外,也不会释放C库保留的内存部分。
Python中的命名空间是什么?
命名空间是一个命名系统,用于确保名称是唯一性,以避免命名冲突。
什么是PYTHONPATH?
它是导入模块时使用的环境变量。每当导入模块时,也会查找PYTHONPATH以检查各个目录中是否存在导入的模块。解释器使用它来确定要加载的模块。
什么是init?
init是Python中的方法或者结构。在创建类的新对象/实例时,将自动调用此方法来分配内存。所有类都有init方法。
Python中的self是什么?
self是类的实例或对象。在Python中,self包含在第一个参数中。但是,Java中的情况并非如此,它是可选的。它有助于区分具有局部变量的类的方法和属性。init方法中的self变量引用新创建的对象,而在其他方法中,它引用其方法被调用的对象。
什么是python迭代器?
迭代器是可以遍历或迭代的对象。
什么是python中的装饰器?
装饰器本质上是一个 Python 函数或类,它可以让其他函数或类在不需要做任何代码修改的前提下增加额外功能,装饰器的返回值也是一个函数/类对象。它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码到装饰器中并继续重用。概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能。
os和sys的区别
os模块负责程序与操作系统的交互,提供了访问操作系统底层的接口;sys模块负责程序与python解释器的交互,提供了一系列的函数和变量,用于操控python的运行时环境。
什么是负指数,功能是什么?
Python中的序列是索引的,它由正数和负数组成。积极的数字使用’0’作为第一个索引,’1’作为第二个索引,进程继续使用。
负数的索引从’-1’开始,表示序列中的最后一个索引,’ - 2’作为倒数第二个索引,序列像正数一样前进。
什么是猴子补丁?
在运行期间动态修改一个类或模块。
请解释使用args和*kwargs的含义
当我们不知道向函数传递多少参数时,比如我们向传递一个列表或元组,我们就使用args。
在我们不知道该传递多少关键字参数时,使用*kwargs来收集关键字参数。
解释一下Python中的身份运算符
通过身份运算符‘is’和‘is not’,我们可以确认两个值是否相同。
为何不建议以下划线作为标识符的开头
因为Python并没有私有变量的概念,所以约定速成以下划线为开头来声明一个变量为私有。所以如果你不想让变量私有,就不要使用下划线开头。
range&xrange有什么区别?
在大多数情况下,xrange和range在功能方面完全相同。它们都提供了一种生成整数列表的方法,唯一的区别是range返回一个Python列表对象,x range返回一个xrange对象。这就表示xrange实际上在运行时并不是生成静态列表。它使用称为yielding的特殊技术根据需要创建值。该技术与一种称为生成器的对象一起使用。因此如果你有一个非常巨大的列表,那么就要考虑xrange。