1989年圣诞节期间的阿姆斯特丹,荷兰数学和计算机科学研究学会的Guido van Rossum为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,作为ABC语言的一种继承
Python(蟒蛇)一词取自英国20世纪70年代首播的电视喜剧《Monty Python’s Flying Circus》
ABC语言是在NWO(荷兰科学研究组织)旗下CWI(荷兰国家数学与计算机科学研究中心)的Leo Grurts,Lambert Meertens,Steven Pemberton主导研发一种交互式,结构化高级语言,旨在替代BASIC,Pascal等语言,用于教学及原型软件设计。Guido van Rossum于20世纪80年代曾在ABC系统开发中工作了数年
ABC语言主要特点如下:
*部分资料来源于网络
1991年2月20日 Python的代码对外公布,版本为 0.9.0
1994年1月 Python 1.0 正式发布
2000年10月16日 Python 2.0 发布
2008年12月3日 Python 3.0 正式发布,不完全兼容Python 2
2020年10月5日 Python 3.9第一个正式版本发布
*部分资料来源于网络
计算机只能识别某些特定的二进制指令(机器码),在程序真正运行之前必须将源代码转换成二进制指令
有的编程语言要求必须提前将所有源代码一次性转换成二进制指令,也就是生成一个可执行程序,比如C、C++、Golang、Pascal(Delphi)、汇编等,这种编程语言称为编译型语言,转换工具称为编译器
有的编程语言可以一边执行一边转换,需要哪些源代码就转换哪些源代码,不会生成可执行程序,比如 Python、JavaScript、PHP、Shell、MATLAB 等,这种编程语言称为解释型语言,转换工具称为解释器
Java 和 C# 是半编译半解释型的语言,源代码需要先转换成一种中间文件(字节码文件),再将中间文件拿到虚拟机中执行
编译型语言,需要将所有的源代码都转换成可执行程序,可执行程序里面包含的是机器码。只要拥有可执行程序,就可以随时运行,不用重新编译
编译型语言可以脱离开发环境运行,但一般在不同的操作系统之间不能随意切换
编译型语言,下载到的是可执行文件,源代码被作者保留,编译型语言的程序一般是闭源的
编译型语言运行效率高,但可移植性差,不够灵活
解释型语言,执行程序需要一边转换一边执行,用到哪些源代码就转换成机器码,用不到的不进行任何处理。执行程序时使用不同的功能,需要转换的源代码也不一样
每次执行程序都需要重新转换源代码,与编译型语言相比甚至存在数量级的差距,只有在应用层面才会使用解释型语言
解释型语言无法脱离开发环境,但几乎都能跨平台
指源代码跨平台,不是解释器跨平台。解释器用来将源代码转换成机器码,就是一个可执行程序,绝对不能跨平台
针对不同的平台开发不同的解释器,在不同的平台下,解释器会将相同的源代码转换成不同的机器码,解决了不同平台之间的差异
解释型语言,下载到的是所有的源代码,解释型语言的程序一般是开源的
解释型语言跨平台性好,但运行效率很低
print函数代替了print语句
>>> print "2,20"
2,20
或
>>> print(2,20)
(2,20)
在 Python 3.x 中,print 语句被 print 函数取代
>>> print(2,20)
2 20
Python 3.x 默认使用 UTF-8 编码,而Python 2.x 默认采用 ASCII 编码
UTF-8 编码,可以很好地支持中文或其它非英文字符
在 Python 2.x 中,使用运算符 / 进行除法运算,整数相除的结果是一个整数,浮点数除法会保留小数点部分
>>>1/2
0
>>>1.0/2
0.5
在 Python 3.x 中使用 / 运算符,整数之间做除法运算,结果是浮点数
>>>1/2
0.5
使用运算符 // 进行的除法运算(floor 除法),输出不大于结果值的一个最大的整数(向下取整),此运算符用法相同
>>> -1//2
-1
1.Python 2.x 版本中,所有类型的对象都是直接被抛出的,在 Python 3.x 版本中,只有继承 BaseException 的对象才可以被抛出
2.Python 2.x 版本中,捕获异常的语法是“except Exception,var:”;在 Python 3.x 版本中,捕获异常的语法变更为 “except Exception as var:”
3.Python 3.x 版本中,处理异常用 “raise Exception(args)”代替了“raise Exception,args”
4.Python 3.x 版本中,取消了异常类的序列行为和 .message 属性
在 Python 3.x 中,表示八进制字面量的方式必须写成“0o1000”
#Python 2.x
>>> 0o1000
512
>>> 01000
512
#Python 3.x
>>> 0o1000
512
Python 2.x 中的不等于运算符写法分别为 != 和 <>,在Python 3.x 中只有 !=
#Python 2.x
>>> 1!=2
True
>>> 1<>2
True
#Python 3.x
>>> 1!=2
True
>>> 1<>2
SyntaxError: invalid syntax
Python 3.x 去除了 long 类型,只有一种整形 int
Python 3.x 新增了 bytes 类型,对应 Python 2.x 版本的八位串
>>>a=b'YOU' #定义bytes字面量的方法
>>>type(a)
<type 'bytes'>
#使用.encode() 或.decode()相互转化字符串对象和 bytes 对象
>>>b=a.decode()
>>>b
'YOU'
>>>b1=a.encode()
>>>b1
b'YOU'
Python 3.x 中,字典的 keys()、items() 和 values() 方法用返回迭代器
偶然在CSDN的登录界面看到1991年的2月20日Python的代码对外公布,产生了在Python发布三十周年的这一天写下这篇文章作为纪念。
在查找资料的过程中,发现生日那天刚好是Python 2发布的日子,千禧年的10月16日,有点巧。
编程启蒙应该是小学接触过的VB,后来是在书店买的一本不属于那个年龄段的《C语言,从入门到精通》,后来按照教程下了编译器在屏幕上第一次用C语言输出了“Hello,World”,后来是一次断网的时候照着书敲打出了一个计算器……在那之后很长的一段时间里再也没有翻开那本书了。
上大学前没有完整地学习过一门语言,多是一知半解或者囫囵吞枣。上大学后接触的第一个编程语言便是Python,但是教的不是很多,在课上的那段时间隐隐记住了列表、元组之类的字眼,再后来就是这个在大二的寒假,几乎以每天一篇的速度在高产地学习和实验……
相比于其他语言,Python对于刚接触编程的来说显得十分友好,近乎于自然语言的语法和缩进规则……就一个初学者的视角来说,缩进可比带花括号优雅多了,繁琐的语法会极大地削减对于学习的欲望。
Python是正式学习的第一门语言,编程语言的学习不止有Python,还有更多语言等着去探索,但是如果想要有后话,请先从Python开始。
对于未来的迷茫丝毫不影响当下做出的每一次提升自己的决定,那些焦虑的背后是否真的能够做到问心无愧。(@YOUChanWill)