python常见知识
1 __init__和__new__的区别
实际上,__init__函数并不是真正意义上的构造函数,__init__方法做的事情是在对象创建好之后初始化变量。真正创建实例的是__new__方法。
构造函数是指创建一个实例并初始化,所以应该是new加init才是构造函数,先new是给造房子准备原材料,然后init开始造房子
2 args和kwargs的区别
*args和kwargs主要用于函数定义。你可以将不定数量的参数传递给一个函数。这里的不定指的是预先并不知道函数使用者会传递多少个参数给你,所以在这个场景下使用这两个关键字。args是用来发送一个非键值对的可变数量的参数列表给一个函数.
kwargs允许你将不定长度的键值对,作为参数传递给一个函数。 如果你想要在一个函数里处理带名字的参数,你应该使用kwargs。
3 @classmethod和@staticmethod 的区别
@classmethod 装饰的类方法,@staticmethod 装饰的静态方法
A.m1是一个还没有绑定实例对象的方法,对于未绑定方法,调用 A.m1 时必须显示地传入一个实例对象进去,而 a.m1是已经绑定了实例的方法,python隐式地把对象传递给了self参数,所以不再手动传递参数,这是调用实例方法的过程。
m2是类方法,不管是 A.m2 还是 a.m2,都是已经自动绑定了类对象A的方法,对于后者,因为python可以通过实例对象a找到它所属的类是A,找到A之后自动绑定到 cls。
m3是类里面的一个静态方法,跟普通函数没什么区别,与类和实例都没有所谓的绑定关系,它只不过是碰巧存在类中的一个函数而已。不论是通过类还是实例都可以引用该方法。
具体的解释请参考(https://www.zhihu.com/question/26930016)
4 global和nonlocal的区别
global的作用对象是全局变量,nonlocal的作用对象是外层变量
5 python中的深拷贝和浅拷贝
浅拷贝就是对引用的拷贝,所谓深拷贝就是对对象的资源的拷贝。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署