机器语言python
优势:执行效率高程序员
缺点:开发效率极低,跨平台性差编程
汇编语言python3.x
优势:较机器语言执行效率稍低app
缺点:较机器语言开发效率稍高,仍然很低,跨平台性差编程语言
高级语言ide
编译型(C、C++、go)工具
相似谷歌翻译,把程序全部的代码翻译成二进制指令后,操做系统根据指令直接操控硬件学习
解释型(python、PHP、C#、Java(先编译后解释))测试
相似同声翻译,须要解释器,一边翻译一边执行
优势:开发效率高
缺点:执行效率低
总结:
开发效率:(解释型>编译型)> 汇编语言 > 机器语言
执行效率:机器语言 > 汇编语言 >(编译型 > 解释型)
跨平台性:解释型 > 编译型
学习难度:机器语言 > 汇编语言 > 高级语言
python解释器版本:
python2.x
python3.x
打开python官网
不要下载最新版
环境变量:系统变量优先于用户变量
输入cmd打开命令提示符,输入python测试是否安装成功
python执行代码的两种方式
交互式:调试程序时使用,没法保存文件
文件式(脚本式、命令行执行):python中约定俗成的以.py结尾,其实就是文本文件,其余结尾也可执行
专门用于编写python代码
优势:
提高开发效率
缺点:
比较占用内存的资源
pycharm官网下载professional专业版
注释是代码之母,对代码进行解释说明,程序执行时不会被运行
加强代码可读性
不用所有注释,本身以为重要的部分加注释
能够英文或者中文,不能够用拼音
变:事物的状态能够变化
量:描述事物的状态
程序的执行本质是一系列状态的变化,须要一种机制来反映或保存程序执行时的状态,以及状态的变化
变量名 赋值符号 变量值
age = 18
type变量类型
id内存地址
value变量值
只能是数字、字母、下划线组成
数字不能开头
不能是中文
区分大小写
下划线体 user_name
驼峰体 UserName
python中没有常量,程序员约定俗成的把所有是大写命名为常量
python解释器中-5~256的id相同,pycharm对此进行了优化范围更广
a = 25 b = 257 print(id(a)) >>>2335729820784 print(id(b)) >>>2335761804048 a = 255 b = 255 print(id(a)) >>>1838517664 print(id(b)) >>>1838517664
垃圾回收机制是自动帮助咱们管理内存,清理垃圾的一种工具
1)引用计数
当一个对象的引用被建立或者复制时,对象的引用计数加1;
当一个对象的引用被销毁时,对象的引用计数减1;
当对象的引用计数减小为0时,就意味着对象已经没有被任何人使用了,能够将其所占用的内存释放了。
优势:
简单、直观
实时性,只要没有了引用就释放资源。
缺点:
维护引用计数须要消耗必定的资源
循环应用时,没法回收。也正是由于这个缘由,才须要经过标记-清理和分代收集机制来辅助引用计数机制。
2)标记-清除
“标记-清除”是用来解决循环引入问题的。
# 变量名l1指向列表1,变量名l2指向列表2,以下 >>> l1=['列表1中的第一个元素'] # 列表1被引用一次 >>> l2=['列表2中的第一个元素'] # 列表2被引用一次 >>> l1.append(l2) # 把列表2追加到l1中做为第二个元素,列表2的引用计数为2 >>> l2.append(l1) # 把列表1追加到l2中做为第二个元素,列表1的引用计数为2 # l1与l2 # l1 = ['列表1中的第一个元素',列表2的内存地址] # l2 = ['列表2中的第一个元素',列表1的内存地址]
首先内存中有两块区域:堆区与栈区,在定义变量时,变量名存放于栈区,变量值存放于堆区,内存管理回收的则是堆区的内容
标记:标记的过程其实就是,遍历全部的GC Roots对象(栈区中的全部内容或者线程均可以做为GC Roots对象),而后将全部GC Roots的对象能够直接或间接访问到的对象标记为存活的对象。
清除:清除的过程将遍历堆中全部的对象,将没有标记的对象所有清除掉。
3)分代回收 核心思想:在屡次扫描的状况下,都没有被回收的变量,gc机制就会认为,该变量是经常使用变量,gc对其扫描的频率会下降 分代:指的是根据存活时间来为变量划分不一样等级(也就是不一样的代) 回收:依然是使用引用计数做为回收的依据