编程语言主要从以下几个角度进行分类:
- 编译型和解释型:
编译型语言就是一次把所有的代码转换成机器语言,然后写成可执行文件。典型代表是像C/C++、Pascal/Object 。
程序每执行到源程序的某一条指令,则会有一个称之为解释程序的外壳程序将源代码转换成二进制代码以供执行,总言之,就是不断地解释、执行、解释、执行……所以,解释型程序是离不开解释程序的。像是Java、JavaScript、VBScript、Perl、Python这些开发语言就是解释型语言。
- 动态语言和静态语言
动态类型语言是指在程序运行期间才去做数据类型检查的语言,简而言之就是在动态类型的语言编程时,永远不用给任何变量指定数据类型,该语言会在你第一次赋值给变量的时候,在其内部将数据类型记录下来。对于python和ruby就是其中的代表了。
静态语言就是在程序运行之前(也就是在编译的时候)就要检查数据类型的语言。说白了也就是第一次在给变量赋值时要提前声明变量类型。C/C++、C#、JAVA等。
- 强定义类型和弱定义类型语言
强制数据类型定义的语言,也就是说一个数据类型定义之后要是不经过转换就还是之前的数据类型。python就是其中的代表。
数据类型可以被忽略的语言。一个变量可以赋不同数据类型的值。
- 综上所述:python是一门动态解释性的强类型定义语言
python的解释器:
什么叫解释器呢,简单点的理解就是将python语言转换成计算机能够识别或者读懂的字节码的一个玩意儿。
- 像是基于C语言的Python解释器就叫做Cpython,也是使用比较广的一种python解释器了
- IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE
-
PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度;绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。
- 对于Jpython是运行在Java平台上的Python解释器;IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器;
二、python的发展史及其安装
2.1 python的发展史
- 2000年发布了python2.0版本,加入了内存回收机制,构成了现在Python语言框架的基础
- 2004年python2.4版本诞生,同时也诞生了Django这一web框架
- 2008年诞生了python3.0版本,在2.x版本上实现了一次大的跳跃
- 2010年诞生的python2.7也是承接2.x和3.x的一个过渡版本。因为在官方文档中2.x系列将在2020年结束支持,所以python3.x是必然的趋势。
三、python入门
#!/usr/bin/env python #声明python的环境变量,此处加env和不加env的区别就是:加env的会根据系统配置的环境变量解释程序,没加env则直接/usr/bin/python去执行
# -*- coding:utf-8 -*- #声明字符编码
3.2 python中文编码
- ASCII码:美国标准信息交换码;主要用来显示英文和欧洲语言;其最多只能用 8 位来表示(一个字节),即:2**8 = 256,所以,ASCII码最多只能表示 256 个符号。
- Unicode码:也叫做万国码,目的是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536。
- Utf-8:是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,中文字符用3个字节保存。
在python2.x和3.x之间的中文编码之间有一个区别是:在python2.x系列环境下需要声明或者指定字符编码;然而python3.x不需要声明字符编码。
- 关于中文编码如下:
- GB2312:国标码,诞生于1980年,一共收录了7000多个汉语字符
- GBK:1995年,一共收录了20000多个汉语字符
- GB18030:是2000年为了取代GBK1.0而诞生的正式国家标准,同时还收录了少数民族语言文字
3.3python基础语法
3.3.1 基本语法注意事项
- 输入
类似于shell脚本中的read,通过input()来获取
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import getpass #导入密文模块 需要在linux上或者windows下运行,在pycharm下无法运行
username = raw_input("name:") #用户名输入提示
passwd = getpass.getpass("password:") #密码提示输入(密文显示)
print(username,passwd) #打印username和passoword的赋值
流程控制
#!/usr/bin/env python
#-*- coding:utf-8 -*-
num=20
guess=int(input("please input a number:"))
if guess == num:
print("it's ok!!")
elif guess > num:
print("guess smaller please!!")
else:
print("guess bigger please!!")