本文主要是介绍三 倒一杯咖啡,粗犷的了解Python,了解一门编程语言,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
1 Python 是这样诞生的
2 程序员每天面临的问题?
3 编程语言的底层逻辑?
4 编程语言如何保存信息 ?
5 编程语言如何操作信息?
6 如何组织 “语言” ?
7 百变不离其宗
1 Python 是这样诞生的
荷兰程序员 吉多.范罗苏姆 (Guido van Rossum) 我们就简称他为大G吧。他是一个不拘小节、但又风度翩翩的程序员,穿圆领 T-shirt、爱用马克杯 、为人温和。他在上个世纪80年代,被损友介绍到了 荷兰国家数学与计算机科学研究中心,参与了一个想代替 BASIC,Pascal等语言、用于教学的、可以交互、并且高度结构化的高级语言 ABC语言。
ABC这种语言非常优美、强大、高效,由于它的初衷是设计给非专业人员使用的,所以他上手会非常的简单。但是它并没有流行起来,大G觉得这是因为ABC语言并没有开放开源所造成的,还有它那不霸气的名字。所以它萌生了一个大胆的想法。
在1989年的圣诞节,在世界上男人都向往的 阿姆斯特丹,作为直男的大G觉得这个世界很无聊,所以它想起了自己增进还有一个大胆的想法,他一言不合在自己窄小的房间里、闭门不出,潜心研究,基于ABC语言的理念,开发了一种全新的脚本解释程序,大G把它的新玩具叫做 ABC+。
但过了几天,他转念一想ABC这个名字太蠢萌了,还有点傻。这个新的解释脚本程序应该有一个更霸气、大家都熟知的名字,所以他在当时流行的电视喜剧《蒙提.派生的飞行马戏团》(Monty Python's Flying Circus),找到了Python这次词(读派生),并且这次的本义也很怕霸气,被翻译为大蟒蛇。
当然,Python的发展也是举步维艰,到2000年,才发行了 python2.0版本,这个过程走过了10年。在这个过程中,大G多次都想放弃,遇到了各种各样的困难和麻烦,但他还是坚持下来了。直到2004年以后,python的使用率才开始逐渐增长。2008年12月3日,Python3发布。2011年1月,它被TIOBE编程语言排行榜评为2010年度语言。
为什么Python后面能逆势发展呢? 这由于大G 对Python 设计的核心理念 “人生苦短,我用Python” 。
Python在保持了简单易学、高效优雅同时,也保持了同样的专业性和庞大的第三方库,让Python奠定它在开发语言界的地位(前五名)。在科学计算领域、人工智能领域,Python已是头把交椅、在Web开发领域Python是匹黑马,结合Django3.0的优势现在更是势不可挡、在医学领域、可视化领域,目前用户市场份额越来越大、在办公领域、Python有代替office自带的宏处理的趋势。
从不同维度来看,Python正在强劲发展中。下面将带大家概览Python的轮廓。
2 程序员每天面临的问题?
假如你已经是一个大公司的程序员了,你到了岗位,为自己冲了一杯苦咖啡提神,然后打开自己新款的macbook pro,放一首振奋情绪的歌,然后很不情愿的打开了自己的邮箱,弹出了下面这些任务。
-
需要一个可以根据用户年龄来自动把用户划分、分类的功能。
-
用户注册的时候需要对他的身份证、照片信息进行实名认证。
-
有用户买下订单的时候、售后组的同事会收到下单通知。
-
在炒股的时候,程序可以根据金叉、死叉、MCAD等技术指标给操盘手提供交易信号。
-
程序通过机器学习方法、总结出10000个心脏病人的心电图的一些规律,然后将这种规律用于快速诊断病人的心电图数据。或者预警操作等。
-
根据用户的心情、改变智能家居里的灯光环境。
上面的这些问题从小到大、从易到难、从具体到抽象、跨越了很多个领域。但有意思的是,无论这样的问题多么的奇怪,作为一个受到过专业训练(我们的网站就是要教你如何训练自己)、有着丰富经验的程序员,你会从下面这两个个问题 “寻找” 到这些问题的解决方案:
-
我要如何利用编程语言,来存储、组织、构建这些问题的关键信息?
-
这些信息我存储好了,我要如何用编程语言来操作它们?
这两个问题我们把它叫做 “导火线” 问题、它不仅仅是开发人员顺藤摸瓜,找到关键解决方案的问题。也是所有编程语言的研发者,各种各样开发类库(后又名词解释)的作者思考的问题。
各位小伙伴们,这篇分享看完后,可以回过头来尝试思考一下上面这六个问题,你会找到什么样的解决方案?
所以对于我们去学习一门开发语言,带着如何保存信息、如何操作信息这两个问题去思考,去探索,学习起来也不会那么“莫名其妙”了,甚至还会有一些小窃喜!
3 编程语言的底层逻辑?
是不是所有的编程语言,语法,概念都差不多? 是的。所以说掌握这些基础的语法逻辑,对于学习编程和分析需求问题有很大的帮助。
下面我们就一起概览一下,编程语言的基础知识全貌。
4 编程语言如何保存信息 ?
变量的概念
“变量就是计算机编程语言用于放置信息的盒子”,这句话不记得是出自哪里,但它是我见过对变量描述最精准的,大多数开发人员能理解到这个层面就足够了。至于信息是如何被保存在内存和硬盘里的?关注后面的课程!。
我们来看一下这段Python代码,展示了在Python里面用变量保存信息。
这里先提前和大家介绍一下Python语言里的 “=” 这个符号是什么意思。它不是等于的意思,它是一个Python操作信息的一个符号,叫做 赋值 操作。
意思就是把“=”符号右边的信息保存到左边的变量里面。大部分编程语言都是用“=”这个符号来代表 赋值 操作。这段代码前六行就是通过赋值操作,把我们最基本的信息存储到变量里。
结构数据的概念
信息除了我们能看的见听得到的内容外,还有一个重要的东西比较含蓄。我们来看一下这个例子。比如“小岳岳”、“于谦”、“孙悦”、“郭德纲”,这四个字符串。我们很自然知道它是著名相声演员的名字,他们都来自于德云社。
计算机知道它们是字符串,但不知道它们之间的关系。为了告诉计算机,这四个人都是德云社的人,在编写代码时,会创建一个列表,然后把这四个人的名字放到列表里面。这个列表就叫做“德云社”。
看下面的代码。
把一些有隐含关系的变量都聚集在一起,形成一个新的变量个体(就像我们是由五脏六腑组成的),就是结构数据要解决的问题。所以说,结构数据中 “结构” 就是关系的意思,如果了解关系数据库的小伙伴,此时此刻肯定有共鸣。
德云社这个例子用的是列表结构数据。像通讯录、员工列表、客户清单、救援信息等等都可以使用列表这样的结构数据来组织信息。
当然结构数据有很多种,除了列表还有:
-
数组
-
字典
-
元祖
-
集合
-
我们自己设计的
-
等等
这些都是Python里面比较常用的。在其他编程语言里面,还有更多的结构数据。结构数据是一种非常强大的工具,配合上变量的概念,那么基本上可以把我们能想到的信息,用编程语言组织起来。比如下面的例子,这个例子除了用到列表结构数据,还用到了字典结构数据。
其中 team_xxxx 这个变量使用字典这种结构数据,把OMG 团队成员的的信息记录了下来。然后在用列表这种结构数据,把队员信息保存在OMG里面。最后两行的print就是把OMG的信息打印到屏幕上。
在用Python解决实际问题时,列表、字典这两种结构数据基本上就够用了。关于列表、字典更多的概念和知识、还有使用例子,后面的篇章带大家好好体验。
假如我们想用上面的方法来记录另外一个战队的信息,只要按照上面的套路来敲代码就好了。但作为一个程序员,我们有更妙的方法。
类的概念
类这个概念在很多编程语言书籍里面算是比较靠后的知识点,甚至有些3-4年开发经验的程序员对这个概念都不是很了解。但我觉得一开始就有必要让大家接触它,因为在目前流行的编程语言里、实际工作中、第三方库的使用等都绕不开这个概念。那到底什么是类呢?它为什么让人难受,又让人爱呢?为什么我们要学习它呢?
好,我们先来思考一下这个问题。
假如现在你的老板,让你在明天下午下班前,做一份公司新产品PPT,要求高大尚、色彩绚丽、不少于60页。当你接到这个任务时,你会怎么做呢?
聪明的你,会去下载PPT模板,借助它来快速做我们自己的PPT,我们生活中有很多类似的经历和经验,软件开发世界里的类,就是基于这种经验构思出来的概念。
类这个概念就和PPT模板这个概念是一样的,是一种组织数据,使用数据的方式方法,它们都有如下特点。
-
提前组织好数据的结构。
-
要用的时候,可以快速填充数据,快速使用。
类除了能组织好结构数据外,还可以把操作数据的方法组织起来,这些技术细节在后面的内容为大家呈现。我们先来看一下,如何使用类这个概念,来改进英雄联盟战队信息的组织方式。
第53行Python代码,意思是我们创建了一个类(模板),叫做LolTeam。“:”后面下面的意思就是描述了这类的结构。
(友情提示:现在看不懂没关系,看个大概就好,后面会有专项练习)。
描述完后,我们就应该去思考,如何在实际项目中使用这个工具?
从第74行代码,和82行代码可以看出来。OMG战队和IG战队都使用了LolTeam这个模板。换句话说。在软件开发领域,我们会把IG、OMG这两个变量,叫做LolTeam这个类的实例。有了这类,我们就可以创建若干这样的实力。
我们来小小的总结一下:
类的作用是来设计结构数据模板的,实例就是某个类的具体使用。在生活中我们注意观察身边的事物。会发现,很多信息都可以用类来组织。小伙伴们可以在留言区举一些例子。
在软件开发领域,类还有很多的概念和用法、比如类的继承、类的派生、私有类、公有类等等。这些内容会在后面仔为大家分享。
知道了通过编程语言变量的概念来保存信息,下一步就是要知道该如何操作它。
5 编程语言如何操作信息?
说到操作信息,没有比我们人类还厉害的了。我们可以回想一下这样的场景,我们拿着话筒,看着显示器上出现歌词提示,根据自己脑海里的音调与显示器上的歌词进行合成,然后通过嘴巴把声音输出出来,如果这些信息“操作的”好的话,可能对面妹子会投来崇拜的目光,当然也可能是你颜值高。
计算机编程语言处理信息的方法,和我们在KTV唱歌时,脑袋处理歌词的情况一样,都是通过一些原子运算组合成复杂的操作,再由这些复杂的操作组合成更系统化的动作,从而解决实际问题,所以原子运算至关重要。什么是原子运算?
原子运算就是那些不能在被拆解的动作,比如一个舞蹈动作可以被拆解成若干个子动作,若其中一个子动做无法再被拆解,那么这个动作就是原子运算。
原子运算不能被拆分,所以它也足够的简单,我们来看看编程语言里,那些最基本的原子运算。
赋值运算:
这个运算在讲解变量的时候,为大家介绍过。就是把“=”号右边的信息,放置到“等号”左边的变量里。
算术运算:
通过运算符,将运算符两边的信息进行加减乘除等数学运算,算术运算符,主要用来处理整数、浮点数这类型的信息的。我们可以想像一下,生活中哪些场景可以用到算术运算符?算数运算的场景就多了,如果你能把英雄联盟里面技能伤害算清楚,你就有做好一名程序员的潜质。
比较运算符:
就是用来比较运算符两边信息的,比大小、比相同等。比较的结果只会有两种,是或否。比较运算符结合逻辑运算符可以发挥巨大的威力,我们都有体验过人工智能的威力,刷脸卡,抖音里的各种短视频特效。这些东西几乎都离不开比较预算符。
逻辑运算符:
逻辑运算符就三种:与、或、非。软件开发工程师通过这三种简单的运算符来构建一个庞大的逻辑关系。对于这三种逻辑运算符,我们可以这样来简单理解。
与:达成所有条件,才能闯关
或:只要有一个条件达成,就算闯关
非:与当前意思完全相反的意思
在Python里面,与、或、非对应的运算符号是:and、or、not 。柯南大家都看过吧,里面有很多经典的推理名场面,这些都运用到了逻辑运算符。生活中也有很多例子。
下面是一些简单的例子。
不同开发语言,逻辑运算符的表达方式会不一样。比如JAVA,与或非对应的运算符是 “&&,||,!”虽然符号不一样,但概念却是完全一样的。
其他:
还有很多运算符,下面会为大家一一讲解。其实好的学习方法是知道这些运算符的作用。解决实际问题时,再详细查阅相关资料,比如来我们这里查找,关注我们公众号,很多查阅的资料都在里面。
6 如何组织 “语言” ?
有了保存现实中各种各样信息的变量、结构数据等,有了处理信息的运算符等。我们还差一样东西,把这些思路通过编程语言有效的组织起来,这就是语法结构。所有编程语言都有这三种基本的语法结构,顺序、选择、循环。
顺序结构
计算机CPU执行指令操作的时候,是一行一行指令执行的,所以开发语言的编译器、解释器在执行代码的时候也是自上而下、一行一行代码执行的。这个很好理解,就像我们说话、做事情一样得一句一句地说、一件一件事情的做。
有的小伙伴可能会问,为啥我的电脑可以一边追剧、一边下载东西呢?这两件事情不是同时都在执行吗?
其实这是一种错觉!
计算机在1微秒的时候给你看到你需要追剧的画面,趁你的大脑正在解析追剧画面的时候,计算机在下1微秒的时候去继续下载需要的资料。这种切换很快速,我们人类的知觉是感觉不到的,我们只能感觉到这两件事情是同时在进行。
我们来看一下下面这一段代码:
这段代码的执行顺序就是 1,2,3,4行的执行。所以行的概念在编程语言里很重要,但不同的编程语言,对于行的概念界定不一样。在Python里面输入完代码,然后回车,那么刚刚输入的内容就是一行代码。在Java里面,一行代码的结束标志是“;”号,这样的“;”号,叫做行结束符(在Python里,回车就是行结束符)。
不同开发语言的行结束符会不一样,但意思是一样的。
选择结构
根据国外人类行为学家的统计,我们每天平均要做3000个选择。所以在用编程语言解决工作中实际问题的时候,我们会用到大量的选择语句结构来组织我们的思路和代码、从而完成复杂的程序逻辑。我们先看一下选择结构的执行图。
来模拟实现我们日常生活中的一些复杂情况。我们来看一下具体的Python代码长什么样子。
-
第6行的 “if” 就是python选择语法结构的关键字。“x >= 0” 是这个选择结构的条件。
-
第8行的“else”也是一个关键字,它后面紧跟的代码就是这个选择条件达成不了,需要执行的操作。也可以把它看成是一个备选方案。
我们来“读”一下这段代码,当 x>0 的时候,程序在屏幕上打印“您输入的数字是正整数”,否则屏幕上打印的是“您输入的数字是负整数”。
循环
顺序、选择这两种组织代码的方式还算是比较接近我们平常思考问题的方式。但到了循环,这个组织语言的方式就和我们平常的思维习惯有点不一样了(切换思维警告)。了解完循环后,你可能会说。循环咋就那么简单?
上大学的时候,教我们C语言的老师,在讲解循环结构之前,给我们提了一个问题,我印象深刻。老师问:“用代码编写一个x,y,z 这三个正整数变量相加的程序”。这个题目很简单,如果用Python来编写代码如下:
老师又问:“如果不是x,y,z而是x1,x2,x3,x4.......xn,该怎么办?”。
这是一个很有启发性的问题。它告诉我们,如果还是按照x,y,z的思路来设计、编写代码,这个问题是无解的(大伙可以想象为什么?)。若我们要解决这个问题,需要其他的思路。这个思路需要明确两个问题。
-
程序要知道用户到底输入了几个整数?
-
如何重复执行相加的操作?
-
什么时候要停止这样的重复操作?
如果画一张图来解答上面的三个问题,那么这张图应该是这个样子的。
它的结构也很简单,同样和选择结构一样,可以不断的“嵌套”,然后形成一个复杂的循环“机器”。不过这里需要注意一点,循环的嵌套要慎用,因为它严重的影响代码执行的效率(大家可以想象为什么?)。
Python用了两种方式来实现这种循环结构。
上图中,while就是python循环语法结构的关键字, y <100 是执行循环的条件。y=y+1是循环执行的语法。这段代码的意思就是让Y这个变量自己每次加1,加100次。是不是很简单?小伙伴们可以思考一个问题,如何使用 while来解决自定义整数个数相加的问题?
我们再来看Python里另外一个重要的循环语法结构,for循环。
第1行代码,是一个整数列表变量 num_list,它是一个结构变量。里面放置了16个整数。第四行代码里的for是for循环关键字,后面的in是for循环语法的重要组成部分。
第四行可以这样来翻译,把 num_list 里面的整数一个一个的取出来放到i里面。每取出一次都执行 x=x+1 这段代码,直到把num_list里的整数取完。这样的循环还有一种叫法,叫做迭代器。
这就是 for 循环的用法。while 和 for 循环这两种循环结构各有各的好处,在python编程开发里面都会经常的用。在其他的编程语言里,像Java,c#等,会有更多的循环结构语法。
现在我们有了循环结构这样的思想武器,再来思考---“如果不是x,y,z而是x1,x2,x3,x4.......xn,该怎么办?”这样的问题了,我们来看下面的代码。
重要的友情提示:小白开始接触编程,第一个挫败感就是看不懂代码! 看不懂代码是很正常的事情,这个和你的理解能力,阅读能力,智商没有关系的!
就比如,让一个从来没有看过五线谱的人,去看五线谱,一样是看的云里雾里的。问题出在哪儿呢?问题出在对编程语言的语法,细节,规则还不清楚。一旦这些东西清楚,那么看代码也就是一件轻松的事情,就像音乐家看五线谱一样舒服。
现在大伙没有必要把代码每一行都看懂,看个大概,知道长什么样子就可以了。等大伙看完后面的系列内容后,你看代码就会有一个质的飞跃。
7 百变不离其宗
几乎所有的软件开发项目,都是百变不离其宗的,在遇到具体需求时,专业的软件工程师都会考虑下面这两个问题:
-
我要如何利用编程语言,来存储解决这些问题的关键信息?
-
这些信息我存储好了,我要如何用编程语言来操作它们?
这是解决开发问题的核心切入点,然后再慢慢利用其它的一些思考方式来分析问题。最后在通过变量的设计、在通过语法结构的设计来完成一段代码的设计,最后敲代码就可以了。
这篇关于三 倒一杯咖啡,粗犷的了解Python,了解一门编程语言的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!