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

1.编程语言的发展史

  计算机是基于电工作(基于高、低电平)1010010101011

 

  1、机器语言          直接用二进制指令去编写程序,直接控制计算机硬件
  优点:执行速度够快
  缺点:开发效率非常低


  2、汇编语言(通过英文字符组成)  用英文标签取代二进制指令去编写程序,只解决了机器语言难记的问题
  优点:执行效率相较于机器语言略低
  缺点:开发效率相较于机器语言略高

; hello.asm
  section .data ; 数据段声明
  msg db "Hello, world!", 0xA ; 要输出的字符串
  len equ $ - msg ; 字串长度
  section .text ; 代码段声明
  global _start ; 指定入口函数
  _start: ; 在屏幕上显示一个字符串
  mov edx, len ; 参数三:字符串长度
  mov ecx, msg ; 参数二:要显示的字符串
  mov ebx, 1 ; 参数一:文件描述符(stdout)
  mov eax, 4 ; 系统调用号(sys_write)
  int 0x80 ; 调用内核功能
  ;退出程序
  mov ebx, 0 ; 参数一:退出代码
  mov eax, 1 ; 系统调用号(sys_exit)
  int 0x80 ; 调用内核功能
汇编代码示例

 

  3.高级语言  用人类能理解的表达方式去编写程序,无需过多考虑硬件细节

  c、c++、c#、java、php、python、go
  优点:开发效率高
  缺点:执行效率低

  用高级语言编写的程序,计算机无法直接理解,需要经过翻译才可以执行。按照翻译方式的不同,高级语言又分为两种

  编译型:谷歌翻译
  c、c++、go

  解释型:同声传译
  c#、python、java(先编译后解释)


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

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

  跨平台:
  解释型>编译型

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

 

2.python介绍

python解释器:

  python版本分类:

    python2.x

    python3.x

python执行代码的两种方式:

  1.交互型:有来有往

  2.命令行执行:python文件约定俗成将后缀名定义为.py,其实.py单纯就是文本文件

IDE工具pycharm:

  专门用于编写python代码

  优点:提升开发效率

  缺点:比较占用内存的资源

注释:

  单行注释: #

  多行注释:   """  双引号      或     '''

        """         '''

  快捷键: ctrl+?

变量:

  什么是变量: 变:事物的状态是可以变化的

          量:描述事物的状态

  变量的使用:1.变量名

         2.赋值符号

         3.变量值

  变量名的命名规范:1.只能由字母、数字、下划线组成

           2.不能用中文

              3.不能以数字开头

            4.区分大小写

  变量名的命名风格:1.驼峰体

              UserAge=18

              print(UserAge)

           2.下划线体

              user_age=18

              print(user_age)

  变量的三大特征

    值:value

    内存地址:id  id()

    变量的类型:type  type()

  常量:python中没有常量,但python程序员约定俗成将字母全部大写的变量定义为常量

     例:NAME = 'SEAN'

          HOST = '127.0.0.1'

内存管理:

  小整数池:假设有a,b两个变量,当a=b,并且在[-5,256]的整数区间内,那么他们指向相同的地址,即id相同

         #pycharm优化了这个功能,能包含更大的数,字符串,也有小整数池的机制

  例:

>>> a = 257
>>> b = 257
>>> print(id(a))
2335729820784
>>> print(id(b))
2335761804048
>>> a = 255
>>> b = 255
>>> print(id(a))
1838517664
>>> print(id(b))
1838517664

 

  垃圾回收机制

  1.引用计数:当内存中的值引用记数为0,垃圾回收机制就会自动清除    #执行效率低

      

   

 

  2.标记清除:当应用程序将内存撑满时,会自动停止,然后进行两项工作,第一项是标记,第二项是清除

 

   计数机制还有个致命弱点,即循环引用(也称交叉引用),需要用到标记清除

 

 

   循环引用会导致:值不再被任何名字关联,但值的引用计数并不会为0,应该被回收但不能被回收

 

  直接引用指的是从栈区出发直接引用到内存地址,间接引用指从栈区出发引用到堆区后再进一步引用到内存地址

 

 

  3.分代回收:历经多次扫描的情况下,都没有被回收的变量,gc机制就会认为,该变量是常用变量,gc对其扫描的频率会降低。  #gc:Garbage Collector(垃圾收集器)

 

 

 

 

 

 

posted @ 2019-11-01 16:31  战斗小人  阅读(187)  评论(0编辑  收藏  举报