Python入门篇

Python历史

1989年,一个无聊的圣诞夜晚,荷兰人Guido写了Python,以他喜欢的喜剧名《Monty Python's flying Circus》命名

Python版本

  • 2.X发展到了2.7

  • 3.Xs始于2008年,3.5发布于2015年9月,3.6发布于2016年12月,3.7发布于2018年6年6月

  • 2.x和3.x区别

    • 语句函数化,例如print(1,2)打印出1 2,但是2.x中意思是print语句打印元组,3.x中意思是函数的2个参数

    • 整除,例如1/2和1//2,3.x版本中/为自然除

    • 3.x中raw_input重命名为input,不再使用

    • raw_input

    • round函数,在3.x中i.5的取整变为距离最近的偶数

    • 字符串统一使用Unicode


      • 异常的捕获、抛出的语法改变

编程基础

  • 程序:一组能够让计算机识别和执行的程序

  • 电子计算机:能够执行程序的机器

  • 计算机发展的两大人物:

    • 艾伦.麦席森.图灵:被称为计算机之父

    • 冯.诺依曼:提出了一二进制为数字计算机的数制基础,计算机按照程序顺序执行,计算机应该有五大部件

冯诺依曼体系架构

计算机应该由五大部件组成:

  • CPU:由运算器和控制器组成

  • 运算器:完成各种算数运算,逻辑运算,数据传输等数据加工处理

  • 控制器:控制程序的执行

  • CPU中还有寄存器和多级缓存

  • 存储器:用于记忆程序和数据,例如内存

  • 输入设备:将数据货这程序输入到计算机中,例如鼠标键盘

  • 输出设备:将数据货程序的处理结果展示给用户,例如显示器,打印机

计算机语言:人与计算机交互的语言

  • 低级语言:面向机器的语言,包括机器语言、汇编语言

  • 高级语言:接近自然语言和书数学语言的计算机语言。 高级语言首先要书写源程序,通过编译程序把源程序准换成机器指令的程序

  • 高级语言和低级语言之间需要一个转换的工具:编译器、解释器
  • C,C++等语言的源代码需要本地编译

  • Java、Python、C#的源代码需要被解释器编译成中间代码(Bytecode)在虚拟机上运行

    • 编译语言:把源代码编译后转换成目标机器的CPU指令

    • 解释语言:解释后转换成字节码,运行在虚拟机上,解释器执行中间代码(JVM,PVM)

高级语言的发展

  • 非结构化语言

    • 编号或标签,GOTO,子程序可以由多个入口和出口

    • 有分支,循环

  • 结构化语言

    • 任何基本结构只允许是唯一入口和唯一出口

    • 顺序、分支、循环,废弃GOTO

  • 面向对象语言

    • 更加接近人类认,万事万物抽象成对象,对象间关系抽象成类和继承

    • 封装,继承,多态

  • 函数式语言

程序Programm

  • 程序=算法+数据结构
  • 数据是一切程序的核心

  • 数据结构是数据在计算机中的类型和组织方式

  • 算法是处理数据的方式,算法有优劣之分

写程序需要注意事项

  1. 理清数据
  2. 理清处理方法
  3. 把数据设计转换成数据结构,把处理方法转换成算法
  4. 用设计范式来进行程序设备
  5. 世间程序皆有bug但要会debug

python解释器

  1. 官方CPython:C语言开发,最广泛的Python解释器

  2. IPython:叫哥交互式,功能增强的Cpython

  3. PYPY:Python语言写的Python解释器,JIT技术,动态编译python代码

  4. Jython:Python的源代码编译成Java的字节码,跑在JVM上

  5. IronPython:  与Jython类似,运行在.Net平台上的解释器,Python代码被编译成.Net的字节码

python基础语法(部分)

  • 转义序列

    • \\ \t \r \n \' \"

    • 前缀r,把里面的所有字符当普通字符对待

  • 续行:

    • 在行尾使用\

    • 如果使用各种括号,括号内是一个整体,内部不用\

  • 标识符:

    • 只能是字母,下划线和数字

    • 不能以数字开头

    • 不能是python关键字,exp:def,class不能作为标识符

    • python对大小写敏感

  • 约定:

    • 不允许使用中文

    • 不允许使用歧义单词,exp:class_

    • 在python中不要随便使用下划线开头的标识符

  • 常量:

    • 一旦赋值就不嫩改变值的标识符

    • python中无法定义常量 字面常量:

    • 一个单独的量,如 12,"abc" 变量:

    • 赋值后可以改变值的标识符


    Python的语言类型

    • python是动态,强语言类型

  • 静态编译语言

    • 事先声明变量类型,类型不能再在改变

    • 编译时检查

  • 动态编译语言

    • 不用事先生命类型,随时可以赋值为其它类型

    • 编程时不知道是什么类型,很难推断

  • 强类型语言

    • 不同类型之间操作,必须先强制类型装换为同一类型.exp:print('a'+1)会报错,只能是print('a'+'1')

  • 弱类型语言

    • 不同类型之间可以操作,自动隐式转换exp:JavaScript中console.lg(1+'a')

原码,反码,补码,负数表示法

  • 原码: 5 => 0b101,1 => 0b1,-1 => -0b1,bin(-1)

  • 反码:正数的反码与原码相同,负数的反码符号位不变,其余按位取反

  • 补码:正数的补码与原码相同,负数的补码符号位不变其余按位取反后 +1(负数补码的补码就是原码)

  • 负数表示法

    • 负数在计算机中使用补码存储,-1 的补码为1111 1111

    • 5-1 => 5+(-1)直觉上是0b101-0b1,其实计算机中是0b101+0b111111111.~12 = -13


  • 表达式Expression:由数字,符号,括号,变量等的组合

    1. 算数表达式

    2. 逻辑表达式

    3. 赋值表达式:python中,赋值即定义,如果一个变量已经定义,赋值相当于重新定义

内存管理

  • 垃圾回收机制 GC

  • python编程中一般无需关心变量的存亡,一般也不用关心内存的管理

  • Python使用对象引用计数记录所有对象的引用数

  • 当对象引用数变为0,它就可以被垃圾回收 GC

  • 有关性能的时候,就需要考虑变量的引用问题,但是该释放内存,还是尽量不释放内存,看需求.exp:内在正在整理释放,这时无法使用这块区间的数据

False等价布尔值,相当于bool(value)

1.空集合

  - 空字符串""

  - 空元祖  ()

  - 空列表  []

  - 空字典  {}

2.None对象

3.0


猜你喜欢

转载自blog.51cto.com/13886191/2155022