python编程语言一览_编程语言及python介绍

编程语言及python介绍

1、编程语言分类

机器语言

优点:执行效率高

缺点:开发效率极低,跨平台性差

汇编语言

优点:较机器语言执行效率稍低

缺点:较机器语言开发效率稍高,仍然很低,跨平台性差

高级语言

编译型(C、C++、go)

类似谷歌翻译,把程序所有的代码翻译成二进制指令后,操作系统根据指令直接操控硬件

解释型(python、PHP、C#、Java(先编译后解释))

类似同声翻译,需要解释器,一边翻译一边执行

优点:开发效率高

缺点:执行效率低

总结:

开发效率:(解释型>编译型)> 汇编语言 > 机器语言

执行效率:机器语言 > 汇编语言 >(编译型 > 解释型)

跨平台性:解释型 > 编译型

学习难度:机器语言 > 汇编语言 > 高级语言

2、python解释器

安装

python解释器版本:

​python2.x

​python3.x

不要下载最新版

环境变量:系统变量优先于用户变量

输入cmd打开命令提示符,输入python测试是否安装成功

python执行代码的两种方式

交互式:调试程序时使用,无法保存文件

文件式(脚本式、命令行执行):python中约定俗成的以.py结尾,其实就是文本文件,其他结尾也可执行

3、IDE工具(pycharm)

专门用于编写python代码

优点:

提升开发效率

缺点:

比较占用内存的资源

pycharm官网下载professional专业版

4、注释

1、什么是注释?

注释是代码之母,对代码进行解释说明,程序执行时不会被运行

2、为什么要注释?

增强代码可读性

3、怎么用注释?

单行注释,用#,快捷键Ctrl+?(#后加个空格规范化)

多行注释,用三个单引号或者双引号‘’‘ ’‘’或者 """ """

4、注释原则

不用全部注释,自己觉得重要的部分加注释

可以英文或者中文,不可以用拼音

5、变量

1、什么是变量?

变:事物的状态可以变化

量:描述事物的状态

2、为什么要有变量?

程序的执行本质是一系列状态的变化,需要一种机制来反映或保存程序执行时的状态,以及状态的变化

3、变量怎么用?

变量名 赋值符号 变量值

age = 18

4、变量三大特性

type变量类型

id内存地址

value变量值

5、变量名的命名规范

只能是数字、字母、下划线组成

数字不能开头

不能是中文

区分大小写

6、变量名命名风格

下划线体 user_name

驼峰体 UserName

7、常量

python中没有常量,程序员约定俗成的把全部是大写命名为常量

6、内存管理

1、小整数池

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

2、垃圾回收机制(GC)

垃圾回收机制是自动帮助我们管理内存,清理垃圾的一种工具

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对其扫描的频率会降低

分代:指的是根据存活时间来为变量划分不同等级(也就是不同的代)

回收:依然是使用引用计数作为回收的依据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值