Pycharm的简单使用
1.如何修改主题
2.如何切换解释器
这样就切换到你想用的解释器了。
有的版本刚安装的时候python Interpreter会有空白的情况这就需要我们来添加解释器
这样添加新的解释器工作我们就完成了
下面我们就可以来创建我们的Python文件啦。
3.如何创建Python文件
ps:输入文件名后得加上后缀名哦(.py)
这样我们的第一个Python程序就创建好了
4.如何修改字体
注释语法
1.什么是注释?
注释就是对一段代码的解释,它不参与代码的实际运行,起到的是一个提示作用
2.如何使用注释
方式一:警号# 单行注释
还可以借助快捷键ctrl+alt+l
方式二:三引号(单双)‘’‘ ’‘’
小技巧:快捷键ctrl+D能将光标所在的行复制粘贴到下一行
变量和常量的使用
1.什么是变量
变量就是可以变化的量,用于记录事务变化的状态,其实就是保存数据的一种方式
2.如何使用变量(先定义后使用)
变量的定义由以下三个部分组成
定义变量的示范如下
解释器执行到变量定义的代码时会申请内存空间申请内存地址存放变量值,然后将变量值的内存地址绑定给变量名以age=18为例
通过变量名即可引用到对应的值
变量名的命名规范
1. 变量的命名有数字、字母、下划线任意组合
user@name(不可以的) _(可以的)
2. 不能够以数字开头, _一般不要开头,因为后面他会有特殊的含义
123_username(不可以)
3. 变量名不能够与python的保留字冲突
print = 123
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from','global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
4.变量名一定要见名之意
命名风格
驼峰体:
大驼峰:每个单词的首字母大写
UserNameFromDb
小驼峰:除了第一个单词的首字母小写之外,其余的单词首字母全部大写
userNameFromDb
下划线:所有的单词都小写,单词与单词之间使用_分割
常量
什么是常量:常量就是在程序中不会改变的量
PI = 3.1415926
在Python中,没有真正意义上的常量,我们墨守成规的把全大写的变量称之为是常量
HOST='127.0.0.1'
# 在其他语言中,是有真正意义上的常量的,比如JavaScript
const pi = 3.14
pi = 4
变量的三要素
1. 变量值
2. 内存编号(id)
3. 数据类型
# name = 123.1
print(id(name)) # 1355452123248
print(type(name)) # <class 'str'>
底层优化
# 小整数池的问题
当变量值很小的时候,多个变量执行同一个变量值的空间地址
一个内存地址可以有多个变量名指向
一个变量名只能指向一个内存地址
垃圾回收机制
垃圾回收机制(简称GC)是Python解释器自带一种机,专门用来回收不可用的变量值所占用的内存空间
为什么要用垃圾回收机制?
程序运行过程中会申请大量的内存空间,而对于一些无用的内存空间如果不及时清理的话会导致内存使用殆尽(内存溢出),导致程序崩溃,因此管理内存是一件重要且繁杂的事情,而python解释器自带的垃圾回收机制把程序员从繁杂的内存管理中解放出来。
垃圾回收机制原理分析
Python的GC模块主要运用了“引用计数”(reference counting)来跟踪和回收垃圾。在引用计数的基础上,还可以通过“标记-清除”(mark and sweep)解决容器对象可能产生的循环引用的问题,并且通过“分代回收”(generation collection)以空间换取时间的方式来进一步提高垃圾回收的效率。
引用计数
引用计数就是:变量值被变量名关联的次数
如:age=18
变量值18被关联了一个变量名age,称之为引用计数为1
标记清除
当我们的内存空间即将要占满的时候,这个时候会暂停所有程序的执行,开始扫描内存空间的数据,把垃圾数据进行打标签,然后统一进行垃圾数据的清除
分代回收
背景:
基于引用计数的回收机制,每次回收内存,都需要把所有对象的引用计数都遍历一遍,这是非常消耗时间的,于是引入了分代回收来提高回收效率,分代回收采用的是用“空间换时间”的策略。
分代:
分代回收的核心思想是:在历经多次扫描的情况下,都没有被回收的变量,gc机制就会认为,该变量是常用变量,gc对其扫描的频率会降低,具体实现原理如下:
回收:
回收依然是使用引用计数作为回收的依据
分代指的是根据存活时间来为变量划分不同等级(也就是不同的代)
新定义的变量,放到新生代这个等级中,假设每隔1分钟扫描新生代一次,如果发现变量依然被引用,那么该对象的权重(权重本质就是个整数)加一,当变量的权重大于某个设定得值(假设为3),会将它移动到更高一级的青春代,青春代的gc扫描的频率低于新生代(扫描时间间隔更长),假设5分钟扫描青春代一次,这样每次gc需要扫描的变量的总个数就变少了,节省了扫描的总时间,接下来,青春代中的对象,也会以同样的方式被移动到老年代中。也就是等级(代)越高,被垃圾回收机制扫描的频率越低
数据类型
整型(int)
作用:用来记录年龄,月份,学生人数。。。
age=18
birthday=1990
student_count=48
浮点型
作用
用来记录人的身高,体重,薪资等小数相关的状态
定义
height=172.3
weight=103.5
salary=15000.89