Python语法入门01
引子
基于上一篇所学,有了计算机硬件,再在硬件之上安装好操作系统,我们就有了一个应用程序的运行平台,我们接下来的任务就是学习如何使用某款编程语言来开发应用程序。
本篇的主题是先带大家了解下编程语言,然后重点介绍python这门编程语言
编程语言的发展史
1、机器语言
优点:执行效率够快
缺点:开发效率非常低
2、汇编语言
优点:执行效率快,相较于机器语言慢一点
缺点:开发效率低,相较于机器语言快一点
3、高级语言
(C、C++、C#、Java、python、PHP、go等)
优点:开发效率高
缺点:执行效率低
高级语言又分为编译型和解释型
编译型:写完代码需要编译成计算机识别的二进制指令,之后操作系统会拿着编译好的二进制指令直接操作硬件。(类似于谷歌翻译)
常见的语言有:C语言,C++、go
优点: 编译一次之后就可以拿着结果重复运行,而无需再次翻译,执行效率高于解释型
缺点: 编译型代码是针对某一个平台翻译的,当前平台翻译的结果无法拿到另外一个平台使用,即无法跨平台
解释型:类似同声翻译,需要有一个解释器,解释器会读取程序代码,一边翻译一边执行。
常见的语言有:python、C#
优点: 代码运行是依赖于解释器,不同平台有对应版本的解释器,所以代码是可以跨平台运行
缺点: 每次执行都需要翻译,执行效率低于编译型
相比较
开发效率
(解释型>编译型)>汇编语言>机器语言
执行效率
(解释型<编译型)<汇编语言<机器语言
跨平台
解释型>编译型
学习难度
机器语言>汇编语言>高级语言
python编译器
Python解释器有哪些种类?
官方的Python解释器本质就是基于C语言开发的一个软件,该软件的功能就是读取以.py结尾的文件内容,然后按照Guido定义好的语法和规则去翻译并执行相应的代码。这种用C实现的解释器称为CPython,它是python领域性能最好,应用最广泛的一款解释器,我们在后面提到的解释器指的都是Cpython解释器。但其实解释器作为一款应用软件,完全可以采用其他语言来开发,只要能解释python这门语言的语法即可。Python解释器的一些种类如下,简单了解即可
# Jython JPython解释器是用JAVA编写的python解释器,可以直接把Python代码编译成Java字节码并执行,它不但使基于java的项目之上嵌入python脚本成为可能,同时也可以将java程序引入到python程序之中。 # IPython IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。这就好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。 CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。 # PyPy PyPy是Python开发者为了更好地Hack Python而用Python语言实现的Python解释器。PyPy提供了JIT编译器和沙盒功能,对Python代码进行动态编译(注意不是解释),因此运行速度比CPython还要快。 # IronPython IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。
python编译器的安装和pycharm的安装详见https://www.cnblogs.com/aheng/p/11754307.html
python版本分类:
python2.X(2020年以后就不会更新了)
python3.X
python执行代码的两种方式
1、交互式:有来有往
2、命令行执行
python文件约定俗成将后缀名定义于.py 其实.py单纯就是文本文件(无所谓什么后缀,因为都要用编译器编译)只要不改里面的源码就没事。
IDE工具pycharm
pycharm是专门编写python代码的软件
优点:提升开发效率
缺点:比较占用内存资源
注释
作为程序员要养成写注释的好习惯 注释是代码之母
单行注释:#
多行注释:''' '''(双引号,单引号都可以)
快捷键:Ctrl+/
python变量
1、什么是变量?
变:事物的状态是可以变化的
量:描述事物的状态
2、没有变量行不行
那肯定不行啊
3、怎么用变量
变量名+赋值符号+变量值
比如:age = 18
变量名的命名规则
1、只能有字母、数字、下划线组成
2、不能用中文(用了中文第二天就可以离职了)
3、不能以数字开头
4、区分大小写
变量名的命名风格
1、驼峰体
例如:UserAge = 18
2、下划线体
user_age = 18
变量的三大特性
1、值 value
2、地址 id
3、类型 type
常量
什么是常量?
常量指在程序运行过程中不会改变的量
为什么要有常量?
在程序运行过程中,有些值是固定的、不应该被改变,比如圆周率 3.141592653...
怎么使用常量?
在Python中没有一个专门的语法定义常量,约定俗成是用全部大写的变量名表示常量。如:PI=3.14159。所以单从语法层面去讲,常量的使用与变量完全一致。
内存管理
小整数池:
id(内存地址)相同,变量名不同。有利于计算机的内存优化。范围是(-5 —256)超过这个范围的id地址就不会相同了
垃圾回收机制(把没用的变量值从内存中回收,释放内存资源)
1、引用计数:当内存中的值引用计数为0,垃圾回收机制就会自动清
2、标记清除:当应用程序将内存撑满的时候会自动停止,清除垃圾
3、分代回收:在历经多次扫描的情况下,都没有被回收的变量,gc机制就会认为,该变量是常用变量,gc对其扫描的频率会降低,具体实现原理如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
分代指的是根据存活时间来为变量划分不同等级(也就是不同的代)
新定义的变量,放到新生代这个等级中,假设每隔1分钟扫描新生代一次,如果发现变量依然被引用,那么该对象的权重(权重本质就是个整数)加一,当变量的权重大于某个设定得值(假设为3),会将它移动到更高一级的青春代,青春代的gc扫描的频率低于新生代(扫描时间间隔更长),假设5分钟扫描青春代一次,这样每次gc需要扫描的变量的总个数就变少了,节省了扫描的总时间,接下来,青春代中的对象,也会以同样的方式被移动到老年代中。也就是等级(代)越高,被垃圾回收机制扫描的频率越低