编程语言及python介绍

1、编程语言分类

  • 机器语言

    优点:执行效率高

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

  • 汇编语言

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

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

  • 高级语言

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

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

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

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

    优点:开发效率高

    缺点:执行效率低

总结:

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

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

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

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

2、python解释器

  • 安装

python解释器版本:

​ python2.x

​ python3.x

打开python官网

不要下载最新版

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

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

  • python执行代码的两种方式

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

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

3、IDE工具(pycharm)

专门用于编写python代码

优点:

提升开发效率

缺点:

比较占用内存的资源

pycharm官网下载professional专业版

4、注释

1、什么是注释?

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

2、为什么要注释?

增强代码可读性

3、怎么用注释?

  1. 单行注释,用#,快捷键Ctrl+?(#后加个空格规范化)
  2. 多行注释,用三个单引号或者双引号‘’‘ ’‘’或者 """ """

4、注释原则

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

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

5、变量

1、什么是变量?

变:事物的状态可以变化

量:描述事物的状态

2、为什么要有变量?

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

3、变量怎么用?

变量名 赋值符号 变量值

age = 18

4、变量三大特性

type变量类型

id内存地址

value变量值

5、变量名的命名规范

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

  2. 数字不能开头

  3. 不能是中文

  4. 区分大小写

6、变量名命名风格

  1. 下划线体 user_name

  2. 驼峰体 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对其扫描的频率会降低

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

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

编程语言及python介绍的更多相关文章

  1. 编程语言和python介绍, 变量,小整数池,垃圾回收机制

    1.编程语言的发展史 计算机是基于电工作(基于高.低电平)1010010101011 1.机器语言 优点:执行速度够快 缺点:开发效率非常低 2.汇编语言(通过英文字符组成) 优点:执行效率相较于机器 ...

  2. C#编程语言及.NET 平台快速入门指南

    github: https://github.com/mfjiang e-mail: hamlet.jiang@live.com   ⼀.C#,CLR,IL,JIT概念 以及 .NET 家族 (⼀)基 ...

  3. 各种编程语言功能综合简要介绍(C,C++,JAVA,PHP,PYTHON,易语言)

    各种编程语言功能综合简要介绍(C,C++,JAVA,PHP,PYTHON,易语言) 总结 a.一个语言或者一个东西能火是和这种语言进入某一子行业的契机有关.也就是说这个语言有没有解决社会急需的问题. ...

  4. Go语言及Web框架Beego环境无脑搭建

    [原]Go语言及Web框架Beego环境无脑搭建 本文涉及软件均以截至到2013年10月12日的最新版本为准 1. 相关软件准备: 1) go1.2rc1.windows-386.msi,对应32位w ...

  5. Go语言及Web框架Beego环境

    Go语言及Web框架Beego环境无脑搭建 [原]Go语言及Web框架Beego环境无脑搭建 本文涉及软件均以截至到2013年10月12日的最新版本为准 1. 相关软件准备: 1) go1.2rc1. ...

  6. Python介绍及环境搭建

    摘自http://www.cnblogs.com/sanzangTst/p/7278337.html Python零基础学习系列之二--Python介绍及环境搭建   1-1.Python简介: Py ...

  7. 【转】Python介绍

    [转]Python介绍 本节内容 Python简史 Python是一门什么样的语言? Python的优点与缺点 Python解释器 一.Python简史 历史背景 在20世纪80年代,IBM和苹果已经 ...

  8. python基础1之python介绍、安装、变量和字符编码、数据类型、输入输出、数据运算、循环

    开启python之路 内容概要: 一.python介绍 二.安装 三.第一个python程序 四.变量和字符编码 五.用户输入 六.数据类型 七.一切皆对象 八.数据运算 九.if else 流程判断 ...

  9. Python介绍以及Python环境搭建

    Python介绍以及Python环境搭建 1.Python 发展历史 Python是由Guido van Rossum在八十年代末和九十年代初,在荷兰国家数学和计算机科学研究所设计出来的,据说是在圣诞 ...

随机推荐

  1. 《30天自制操作系统》笔记3 --- (Day2 上节)完全解析文件系统

    Day2 汇编语言学习与Makefile入门 本文仅带着思路,研究源码里关于文件系统的参数 关于day2主程序部分及更多内容,请看<30天自制操作系统>笔记 导航 发现学习中的变化 源码差 ...

  2. 关于Adobe Premiere Pro视音频不同步的解决方法

    在Potplayer和系统播放器都正常 但Pr里面就是音画不同步 原因是Pr识别错误,让音频比视频快了,这时要将视频后拉一点就ok了

  3. Mysql遇到的问题总结

    1.解决导出csv中文乱码问题: 将csv用txt打开,另存为,选择utf8编码即可. 解决导入问题: mysql安装目录下的my.ini,增加如下参数: [client]default-charac ...

  4. 【开源监控】Grafana介绍与安装

    Grafana介绍与安装 Grafana介绍 场景:由于业务场景,有多个组织机构.需要在某个组织结构下,完成对本机构下的系统的实时监控以及可视化展示.底层已经用zabbix对监控指标做了数据的采集. ...

  5. Unsafe例子

    Java和C++语言的一个重要区别就是Java中我们无法直接操作一块内存区域,不能像C++中那样可以自己申请内存和释放内存.Java中的Unsafe类为我们提供了类似C++手动管理内存的能力,不建议使 ...

  6. C# SqlServer Ado.net参数化查询插入null数据

    DateTime? dt=null; if (dt.HasValue) { cmd.Parameters.AddWithValue("@CreateDateTime", dt); ...

  7. Sentry异常捕获平台

    本文包括Sentry平台的介绍,以及环境搭建两部分,更多细节请查阅官方文档. 简介 Sentry是一个实时事件的日志聚合平台.它专门监测错误并提取所有有用信息用于分析,不再麻烦地依赖用户反馈来定位问题 ...

  8. 使用 Docker 和 Jenkins 持续交付(新书免费获取!)

    今天没有长篇大论,给大家推荐一本新书,书名:Continuous Delivery with Docker and Jenkins.封面如图所示: 以下内容纯属凑字数 本书结合了 Jenkins 和 ...

  9. 【CF285E】Positions in Permutations(动态规划,容斥)

    [CF285E]Positions in Permutations(动态规划,容斥) 题面 CF 洛谷 题解 首先发现恰好很不好算,所以转成至少,这样子只需要确定完一部分数之后剩下随意补. 然后套一个 ...

  10. spring boot 在eclipse里启动正常,但打包后启动不起来

    现象描述: spring boot 在eclipse里启动正常,但打包后启动不起来. 错误日志如下: D:\Project>java -jar MKKY_CMS.jar . ____ _ __ ...