pycharm快捷键的使用
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
字符串
就是一串字符,用单引号、双引号、单三引号、双三引号括起来使用。后两者可用于带换行的字符串或多行注释。
注释
单行注释
''' ''' 或""" """多行注释