<commit_before># **类型与对象**
***

## **1. 术语**
    1) 每个对象都有一个身份(可看作内存中所指的指针)，一个类型和一个值；
    2) 对象类型用于描述对象的内部表示以及它支持的方法和操作；
    3) 对象的值可修改就是可变对象，如不可修改则为不可变对象；

## **2. 对象的身份与类型**
    1) id()返回对象的身份，返回值是一个整数；对应了该对象在内存中的位置；
    2) is运算符比较两个对象的身份；
    3) type()返回一个对象的类型；
    4) 对象的类型也是一个对象，为对象的类；该对象的定义是唯一的，对于某个类
       型的所有实例都是相同的；
    5) 类型之间使用is运算符进行比较；
    6) 检查类型的最佳方式是使用isinstance(object, type)；isinstance能实现继
       承，是检查所有Python对象类型的首选；<commit_msg>add information about reference count and GC<commit_after># **类型与对象**
***

## **1. 术语**
    1) 每个对象都有一个身份(可看作内存中所指的指针)，一个类型和一个值；
    2) 对象类型用于描述对象的内部表示以及它支持的方法和操作；
    3) 对象的值可修改就是可变对象，如不可修改则为不可变对象；

## **2. 对象的身份与类型**
    1) id()返回对象的身份，返回值是一个整数；对应了该对象在内存中的位置；
    2) is运算符比较两个对象的身份；
    3) type()返回一个对象的类型；
    4) 对象的类型也是一个对象，为对象的类；该对象的定义是唯一的，对于某个类
       型的所有实例都是相同的；
    5) 类型之间使用is运算符进行比较；
    6) 检查类型的最佳方式是使用isinstance(object, type)；isinstance能实现继
       承，是检查所有Python对象类型的首选；

## **3. 引用计数与垃圾收集**
    1) 所有对象都有引用计数，给一个对象分配一个新名称，将对象放入一个容器，
       该对象的引用计数都会增加；
    2) 使用del语句或引用超出作用域时，对象的引用计数就会减少；
    3) 使用sys.getrefcount()可以获得对象当前的引用计数；
    4) 多数情况下，引用计数都比猜测的大；对于不可变数据，解释器会主动在程序
       的不同部分共享对象以节约内存；
    5) 当对象的引用计数归零时，它将被垃圾回收机制处理掉；
{'fraction_non_alphanumeric': 0.12573344509639564, 'fraction_numerical': 0.02347024308466052, 'mean_word_length': 4.306666666666667, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '904341', 'n_tokens_mistral': 897, 'n_tokens_neox': 1012, 'n_words': 73}