1. 常见的数据类型有哪些?
整数int,浮点数float,字符串str,布尔bool,列表list,元组tuple,字典dict,集合set
2. 真假值为0的常见数据?
布尔型,False表示False,其他为True
整数和浮点数,0表示False,其他为True
字符串和类字符串类型(包括bytes和unicode),空字符串表示False,其他为True
序列类型(包括tuple,list,dict,set等),空表示False,非空表示True
None永远表示False
3. 什么是迭代器iterator?
迭代器就是用于循环的工具,被迭代器迭代的对象一定是可迭代的序列类型。迭代器的作用是简化代码,是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。迭代器有两个基本的方法:iter()和next()。
4. 什么是生成器generator?
生成器也可以说是一个可迭代对象,它可以让你在 Python 中更加高效地处理大量数据。生成器可以让你一次生成一个值,而不是一次生成一个序列,这样可以节省内存并提高性能
g = (i * i for i in range(10)) #不是生成一个元组,而是一个生成器
5. 深拷贝浅拷贝?
copy.copy() #浅拷贝
copy.deepcopy() #深拷贝
深拷贝是指在进行复制操作时,创建一个完全独立的新对象,并递归地复制原始对象及其所有子对象。换句话说,深拷贝会复制对象的所有层级,包括对象的属性、嵌套对象、引用等。因此,原始对象和复制对象是完全独立的,修改其中一个对象不会影响另一个对象。
相比之下,浅拷贝是指创建一个新对象,然后将原始对象的内容逐个复制到新对象中。在浅拷贝中,只有最外层对象被复制,而内部的嵌套对象只是引用而已,没有被递归复制。这意味着原始对象和浅拷贝对象之间共享内部对象,修改其中一个对象的内部对象会影响到另一个对象。
6. 列举几个常用模块?
os模块:
sys模块:sys模块主要是针对与Python解释器相关的变量和方法,不是主机操作系统
random模块:提供生成随机数的模块
json模块:
time模块:处理时间
logging:日志处理
7. 常见的python内置函数?
print() len() range() list() str() sorted() reversed() any() all() dict() zip() type()
8.可变数据,不可变数据?
不可变:int float str tuple
a=3
print(type(a)) # 结果<class 'int'>
print(id(a)) #2237761546608
a=2
print(id(a)) #2237761546576
可变:list dictionaty set
a=[1,2,3]
print(type(a)) #<class 'list'>
print(id(a)) #1766578512000
a[0]=2
print(id(a)) #1766578512000
a={1,2,3}
print(type(a))
print(id(a))
a.discard(2)
a.add(2)
print(id(a))
9. python的内存管理?
一、引用计数机制
sys.getrefcount() #统计被引用的次数
二、垃圾回收机制
三、内存池机制
10. python装饰器?
装饰器的作用就是为已经存在的对象添加额外的功能。返回的也是一个函数对象
def use_logging(func):
def wrapper(*args, **kwargs):
logging.warn("%s is running" % func.__name__) #先执行装饰器的程序
return func(*args, **kwargs) # 后执行程序本身
return wrapper #
def bar():
print('i am bar')
bar = use_logging(bar)
bar()
内置装饰器 @staticmathod、@classmethod、@property
11. 进程和线程?
进程是内存单位,线程是调度单位。