A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 宝玉 中级黑马   /  2018-12-25 15:50  /  2233 人查看  /  14 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 宝玉 于 2019-1-9 12:31 编辑

Life is short,I need Python.
一开始并没有想学python,直到我在做大量的字符处理的时候,python的切片让我眼前一新,感觉处理的非常简单,于是便去了解了一下Python,从发展历史到语言特点。
起源
1989年,为了打发圣诞节假期,Guido开始写Python语言的编译/解释器。Python来自Guido所挚爱的电视剧Monty Python's Flying Circus (BBC1960-1970年代播放的室内情景幽默剧,以当时的英国生活为素材)。他希望这个新的叫做Python的语言,能实现他的理念(一种C和shell之间,功能全面,易学易用,可拓展的语言)。Guido作为一个语言设计爱好者,已经有过设计语言的(不很成功)的尝试。这一次,也不过是一次纯粹的hacking行为。
数据类型(字符串、布尔类型、整数、浮点数、数字、列表、元组、字典和日期)
字符串:不可变对象,可使用单引号,双引号扩起来表示单行字符串,使用三引号表示多行字符串,在三引号可以自由的使用单引号和双引号。
字符串比较特殊的是编码问题 我们知道,计算机是美国人发明的,最初只有127个字母被编码到计算机中,包括大小写字母、数字和一些符号,这个编码表被称为ASCII码表。但要处理一个中文显然一个字节是不够用的,又不能和ASCII码冲突,因此中国制定了GB2312编码。而全世界有很多的语言,在多语言混合的文本中,显示出来的话一定会有乱码,因此,Unicode应运而生。ASCII码用一个字节表示了一个字符,而Unicode用两个字节表示一个字符。以Unicode表示的字符串用u'...'表示。Unicode编码要比ASCII编码多一倍的存储空间,在存储和传输上会十分的不划算,如果写的文本全是英文的话,使用Unicode编码就十分浪费。于是UTF-8编码出现了,UTF-8编码是把一个Unicode字符根据不同的数字大小编码成1-6个字节,并且可以将ASCII码看成是UTF-8的一部分。
List:list是一个是一个可变的有序表,是Python内置的一种数据类型,可以随时添加、删除、替换其中的元素。
Tuple:除了列表以外的另一种有序表称为元组,但是tuple一旦初始化便不能修改,在定义时,tuple的元素就被确定了。因为元组是不可变的,因此修改元素操作是非法的,但是可通过对元素进行连接组合,比如:tuple3 = tuple1 + tuple2。使用del语句可删除整个元组。
Dict:Python内置了字典,使用key-value存储,具有极快的查找速度。和list相比,查找速度要高很多。Dict和List的区别:Dict的查找速度和插入速度都是极快的,不会随着key的增加而增加;但Dict要占用大量的内存,内存浪费多。Dict是不可变对象,因为使用key来计算value的存储位置,为了保证结果的正确性,作为key的对象不能变,可使用字符串、整数等不可变的对象作为dict中的key。
Set:set和dict类似,也是一组key的集合,但是不同的是在set中没有重复的key。
内存管理器
C 或 C++最大的弊病在于内存管理是由开发者负责的。所以程序员也必须在执行了基本任务之外履行对内存管理的职责。这些会让开发者分散精力。Python中,内存管理是由 Python 解释器负责,所以开发人员就可以从内存事务中解放出来,仅仅开发项目。这会使错误更少、程序更健壮、开发周期更短。
解释性和编译性
Python是一种解释型语言,开发过程中没有编译这个环节。通常,不是以本地机器码运行,纯粹的解释型语言通常比编译型语言运行的慢。但类似于 Java,Python实际上是字节编译的,其结果是生成一种近似机器语言的中间形式。这不仅改善了Python的性能,还保持了它解释型语言的优点。
Python运行速度比C语言慢
Python等动态语言每一个操作都需要大量的指令才能完成。动态语言,变量只是对象的引用,比如一个简单的操作:a+b,在C语言中只需要一个机器指令ADD就行,但对于Python而言,变量a和b本身没有数据类型,但它们的值有类型,所以在相加之前需要先判断类型,之后,读取数值,相加,生成一个新对象。
学习Python的体会
开始学习Python的时候觉得比较简单,没有C++那么多复杂的机理去了解,随着逐步的学习发现其实不然,我一定要收回之前自己说的话,每一门编程语言就是设计者花费很多心血设计的,哪有说学会就学会的编程语言。完成同一个任务,C语言要写1000行代码,Java只需要写100行,而Python可能只要20行。但就是由于变成了20行,程序的可读性变得比较差,难以理解,这正是Python所不关注的问题,只要代码简短就行。随着写代码的时候对一些科学计算的库的使用,开始觉得学习Python吃力了起来,必须弄懂每一行的代码的作用。一个简单的图像处理算法大概用10行的Python代码实现的,我学习这10行的Python代码还要去看数学公式,线性代数,数学真的很重要。。。
总的来说:不同的场合需要使用不同的编程语言呀。每一个都有优势和劣势。我也是刚刚接触这门语言,路漫漫其修远兮,,吾将上下而求索




14 个回复

倒序浏览
棒棒棒
回复 使用道具 举报
谢谢分享,太棒了
回复 使用道具 举报
优秀呀
回复 使用道具 举报
回复 使用道具 举报
你说 “生命在于不断超越自己”,那来到这里的我已经赢了一半,你还会等我么?
回复 使用道具 举报
不论你在什麽时候开始,重要的是开始之後就不要停止。
回复 使用道具 举报
不忘初心,坚持
回复 使用道具 举报
只要朝着一个方向努力,一切都会变得得心应手。加油
回复 使用道具 举报
选择了,便走下去。
回复 使用道具 举报
发光并非太阳的专利,你也可以发光。加油
回复 使用道具 举报
不忘初心,坚持
回复 使用道具 举报
你说 “生命在于不断超越自己”,那来到这里的我已经赢了一半,你还会等我么?
回复 使用道具 举报
发光并非太阳的专利,你也可以发光。加油
回复 使用道具 举报
除了恐惧和欲望,还有什么可以激励自己长期地努力?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马