pycharm快捷键的使用、内存管理、变量、数据类型、注释相关笔记 pycharm快捷键的使用 变量 python内存管理 变量的三种打印形式 数字类型 字符串 注释

ctrl+c复制,默认复制整行

ctrl+v粘贴

ctrl+z撤销

ctrl+x剪切,默认剪切整行

ctrl+a全选

ctrl+f查找;选中批量修改

shift+ctrl+z取消撤销

ctrl+d复制粘贴选中内容,没有选中默认整行

ctrl+backspace删除一个单词

shift+enter换行

ctrl+shift+r全局搜索

ctrl+shift+f10运行当前代码

ctrl+alt+l格式化代码

ctrl+/整体注释

home回到首行

end回到行尾

ctrl+end回到末尾

变量

变量:定义世间万物变化的状态

变量名:起到描述作用,接收变量赋值

赋值符号:赋值

变量名 赋值符号 变量值

a=1

变量名命名规则:变量名由数字字母下划线组成,数字不能放最前面。

python内存管理

每当给变量名赋值时内存便会开辟一块空间用于存储变量值,当变量值的引用计数为零时,垃圾回收机制会回收这块内存。

小整数池

当python解释器启动时,会专门开辟一块内存用于存储[-5,256]

范围内的整数,这块内存不会被回收。

引用计数

一个变量值被赋值给几个变量名,这个变量值的引用计数就是几。

垃圾回收机制

1.引用计数

给对象添加一个引用计数器,每当有一个地方引用,引用计数就会加一,每当减少一个引用,引用计数就会减一,当该计数器的值为零时,表示该对象可以被回收。

2.标记清除

Python采用了“标记-清除”(Mark and Sweep)算法,解决容器对象可能产生的循环引用(当两个变量相互引用时它们的引用计数始终不为零)问题。(注意,只有容器对象才会产生循环引用的情况,比如列表、字典、用户自定义类的对象、元组等。而像数字,字符串这类简单类型不会出现循环引用。作为一种优化策略,对于只包含简单类型的元组也不在标记清除算法的考虑之列)

跟其名称一样,该算法在进行垃圾回收时分成了两步,分别是:

A)标记阶段,遍历所有的对象,如果是可达的(reachable),也就是还有对象引用它,那么就标记该对象为可达;

B)清除阶段,再次遍历对象,如果发现某个对象没有标记为可达,则就将其回收。

3.分代回收

分代回收是一种以空间换时间的操作方式,Python将内存根据对象的存活时间划分为不同的集合,每个集合称为一个代,Python将内存分为了3“代”,分别为年轻代(第0代)、中年代(第1代)、老年代(第2代),他们对应的是3个链表,它们的垃圾收集频率与对象的存活时间的增大而减小。新创建的对象都会分配在年轻代,年轻代链表的总数达到上限时,Python垃圾收集机制就会被触发,把那些可以被回收的对象回收掉,而那些不会回收的对象就会被移到中年代去,依此类推,老年代中的对象是存活时间最久的对象,甚至是存活于整个系统的生命周期内。同时,分代回收是建立在标记清除技术基础之上。分代回收同样作为Python的辅助垃圾收集技术处理那些容器对象.

循环引用

当容器类型中有两个或多个元素相互引用时就会出现循环引用问题,就是它们(容器类元素)的引用计数始终不会为零,这个问题是垃圾回收机制所要解决的最重要的问题。

循环引用暂时参考如下链接

循环引用问题

变量的三种打印形式

x=1
print(x)#打印变量值
print(id(x))#打印变量值的存储地址
print(type(x))#打印变量值的数据类型

数字类型

整型(int)浮点型(float)

i=1#int
j=1.1#float
k=int(j)#int

字符串

就是一串字符,用单引号、双引号、单三引号、双三引号括起来使用。后两者可用于带换行的字符串或多行注释。

注释

单行注释

''' ''' 或""" """多行注释