python常见面试题笔记1

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装饰器?

装饰器的作用就是为已经存在的对象添加额外的功能。返回的也是一个函数对象

如何理解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. 进程和线程?

进程是内存单位,线程是调度单位。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值