创建函数对象python python创建对象调用对象的方法( 三 )


由于存在以上特性 , 所以使用这两种对象还会带来一种区别:
声明 s2 = s  , 修改s的值: s = 'new string',s2的值不会一起改变,因为只是s指向了一个新的对象 , s2指向的旧对象的值并没有发生改变
声明 l2 = l ,修改l的值: l.append(6),此时l2的值会一起改变,因为l和l2指向的是同一个对象,而该对象的内容被l修改了
此外,对于 字符串 对象,Python还有一套内存复用机制 , 如果两个字符串变量值相同,那它们将共用同一个对象:
对于 数值型 对象,Python会默认创建0~2 8以内的整数对象,也就是 0 ~ 256 之间的数值对象是共用的:
按照Python数据类型,对象可分为以下几类:
Python创建对象有两种方式,泛型API和和类型相关的API
这类API通常以 PyObject_xxx 的形式命名 , 可以应用在任意Python对象上,如:
使用 PyObjecg_New 创建一个数值型对象:
这类API通常只能作用于一种类型的对象上,如:
使用 PyLong_FromLong 创建一个数值型对象:
在我们使用Python声明变量的时候,并不需要为变量指派类型,在给变量赋值的时候 , 可以赋值任意类型数据,如:
从Python对象的定义我们已经可以知晓造成这个特点的原因了,Python创建对象时,会分配内存进行初始化,然后Python内部通过 PyObject* 变量来维护这个对象,所以在Python内部各函数直接传递的都是一种泛型指针 PyObject*  , 这个指针所指向的对象类型是不固定的 , 只能通过所指对象的 ob_type 属性动态进行判断 , 而Python正是通过 ob_type 实现了多态机制
Python在管理维护对象时,通过引用计数来判断内存中的对象是否需要被销毁,Python中所有事物都是对象 , 所有对象都有引用计数 ob_refcnt。
当一个对象的引用计数减少到0之后 , Python将会释放该对象所占用的内存和系统资源 。
但这并不意味着最终一定会释放内存空间,因为频繁申请释放内存会大大降低Python的执行效率,因此Python中采用了内存对象池的技术,是的对象释放的空间会还给内存池,而不是直接释放,后续需要申请空间时 , 优先从内存对象池中获取 。
【创建函数对象python python创建对象调用对象的方法】关于创建函数对象python和python创建对象调用对象的方法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

推荐阅读