python

1.深浅拷贝

  • 深拷贝
  1. 递归拷贝父对象和子对象
  2. 新开辟一块内存空间
  3. 新对象的修改不会影响旧对象
  • 浅拷贝
  1. 只拷贝父对象
  2. 两者的内存地址一样
  3. 新对象的内容操作会影响旧对象的内容

2.生成器和迭代器

2.1 生成器
  • 生成器函数 yield返回当前得到值
def gensquares(n):
	for i in range(5):
		yield i**2
for item in gensquares(5):
	print item
  • 生成器表达式 gensquares = (i**2 for i in range(5))

在这里插入图片描述

2.2 迭代器
  • next()调用时返回下一个值;如果没有,则抛出StopIteration异常
  • iter()返回迭代器本身

3.is和==的区别

  • is:比较对象的id
  • ==:比较对象的值

4.python传参时需要注意什么

  • 必备参数项的传参顺序,参数数量
  • 关键字参数:允许函数调用时参数的顺序与声明不一致
  • 默认参数传参
  • 不定长参数 ( * 加一个星号)
  • 可变类型与不可变类型
  1. 在参数传参时,实参将值复制给了形参,此时两者指向同一个对象
  2. 在函数内修改形参
    1。不可变类型:修改变量需要新建一个对象
    2。可变类型:直接在原对象上修改

5.装饰器

增强函数或类功能的一个函数,可以装饰函数(函数也是对象)

  • 定义装饰器
def decorator(func):
	def wrapper(*args,**kargs):
		// 自定义传参
		print(func.__name__)
		// 返回传入的方法名参数的调用
		return func(*args,**kargs)
	返回内层函数名
	return wrapper
  • 使用装饰器
  1. 使用语法糖@
  2. 不使用语法糖
装饰器不传入参数时

f = decorator(函数名)

传入参数

f = (decorator(参数))(函数名)

常见的内置装饰器有三种,@property、@staticmethod、@classmethod

6.函数或变量的作用域

  • 局部变量:定义在函数内部,局部作用域;局部变量只能在被声明的函数内部访问
  • 全局变量:在整个程序中都可访问,在函数声明的变量名都被加入至作用域中
  1. 函数体内如果想使用函数体外的变量,需要gloabl声明

7.解释型和编译型语言的区别

在这里插入图片描述

8.init和new的区别

__init__:用在初始化一个类实例,是创建类实例之后调用

def __init__(self,name,age):
	self.name = name
	self.age = age

__new__创建类实例的方法

def __new__(cls, name, age):
	print '__new__ called`
	return super(Person, cls).__new__(cls, name, age)
  • 用法不同

init:初始化实例,实例级别的方法,可以设置对象属性值
new:创建实例,类级别的静态方法

  • 传入参数不同
init:至少有一个参数self,就是__new__()返回的实例
new:至少有一个参数cls,代表当前类
  • 返回值不同
init:不需要返回值
new:返回实例对象

9. 常用模块

python几大常用模块

10.list和array的区别

1. List列表:数据类型可不相同,存储的是数据指针;array:数组元素类型相同
2. Array是一段连续的存储地址,List则是不连续的,List每个节点上都有一个Next属性,指向下一个节点地址
3. Array指定大小,List无确切大小

11.lambda函数

匿名表达式:无须定义函数名

res = lambda x,y : x+y
res(2,4)

12.类中的self

self代表当前类实例对象本身,可以调用当前类中的属性和方法

13.python面向对象

14.python中内存管理机制

博客

  • 引用计数
  • 垃圾回收
  • 内存池机制

15.dict和list的底层实现

  • Dict字典通过Hash表实现,{key:value}
  • List:顺序表,不确定大小

16.垃圾回收机制

python中的GC模块主要运用了引用计数来跟踪和回收垃圾。在引用计数的基础上,还可以通过标记清除来解决容器(指Array、Dict、Tuple)对象可能产生的循环引用的问题

  • 引用计数原理
当一个对象被创建引用或者复制的时候,对象的引用次数就会加1,当一个对象被销毁时,对象的引用次数就会减1,当对象的引用次数减为0时,就可以释放其内存了
  • 标记清除原理
> 标记清除解决容器的循环引用问题。
> 首先为了追踪对象,在每个容器对象维护两个额外的指针,用来对容器对象组成一个链表,指针分别指向前后两个容器对象

17.GIL锁

全局解释器锁。
在Cpython解释器中执行每一个python线程,都会先锁住自己,以阻止别的线程执行。每一个线程在执行时,都会锁住GIL,阻止其他线程执行,每一个线程执行完毕,会释放GIL,允许其他线程开始利用资源

18.

19.用python写出多线程,循环打印123

参考

20.

21.

22.

23.

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值