当前位置:首页 » 编程语言 » python基础学习心得

python基础学习心得

发布时间: 2022-12-18 01:38:35

‘壹’ 心得分享!python面试都要做哪些准备

首先,准备好简历。找工作,最开始竞争的是什么?最开始竞争的是简历。你到任何一家公司应聘,第一件要做的事情就是投简历,简历是应聘公司了解你的第一窗口,也是应聘公司了解你的第一途径。一份好的简历可以让你在众多的简历中脱颖而出,给招聘者留下深刻印象,然后决定给你面试通知,它是帮助你成功面试的敲门砖。

其次,对于Python常见面试问题要有了解。在面试前我们一定要通过各种渠道了解Python面试中常见的面试问题,做到心中有数。在Python的面试中,一些Python基本常识问题,有些面试官还是会考察的,如果你连基本的常识问题都回答不上来,那么你后面的面试可能无法进行下去,如果能勉强进行下去,最后面试的成功率也会降低。

最后,在面试前准备一套大方得体的服装。穿着得体表现的是对面试的尊重。穿着得体,会给面试官一种愉悦的心情。相反,如果你穿着比较邋遢,当面试官看到你的时候,会觉得你不注意细节,有的面试官甚至会怀疑你的工作能力,这样会给面试官留下非常不好的印象,也可能最后导致面试的失败。

如果在面试前你做好充足的准备,面试官会觉得你是一个对于工作认真、态度真诚的一个人,会增加心里认同感,也会增加面试的成功率。

关于心得分享!Python面试都要做哪些准备,环球青藤小编就和大家分享到这里了,学习是永无止境的,学习一项技能更是受益终身,所以,只要肯努力学,什么时候开始都不晚。如果您还想继续了解关于python编程的学习方法及素材等内容,可以点击本站其他文章学习。

‘贰’ Python自学心得分享

学习python,我首先根据自己完全代码零基础的情况下,为什么学习Python作为核心问题,进行了一个自我定位以及目标定位,我认为只要有一个目标,那么就找方法去打成目标就行了。

我是完全零基础,选择学习Python主要还是因为看到大家都说Python是相对简单,比较好入门IT行业的,而我的目的也是希望学习完Python可以找到一份相应的工作,赚取一份工资可以买口红,哈哈哈哈哈哈哈哈哈哈~

当然,也有很多人可能已经从事其他编程工作,但是想要学习Python以来丰富自身,提升自身的核心竞争力,我觉得这样应该会比我这类完全零基础的学习要容易快速的很多,

我就只说下我这位完全零基础是如何学习的吧

我也搜查了一些学习方法的问答帖子,里面也看到很多推荐的学习方法,有推荐书籍的,有推荐网课的,我开始认为,看书应该是比较好的选择,因为着作成书籍,表明内容上是相对有一定的权威和系统的,同时,想到从小都是书本学习,这更能让我信服,于是我就购买了书籍,开始了我的学习计划,可是,在半强迫自己的情况下,我看了三天半书籍实在是看不下去了,是的,三天半还是强迫自己看的,原因一,看书真的太乏味了,看着看着就会心不在焉,总是走神。原因二,这个时候我对代码没有概念,有些文字都要读两三遍才会理解意思,越难理解就越不想看书,这种感觉就是上学时我看数学,英语书一模一样的感觉。很显然,看书学习是不适合我了,

看书不行,于是我就想着还是找网上的视频教程学习吧,上网一搜,真的是各家机构的教程也是琳琅满目,还真的让我不知道从哪开始学起了,

这个时候真的是想有一位前辈可以给我指点一下迷津,告诉我应该先学什么,再学什么,哪些是重点知识,哪些是了解就好,就是可以给我一些学习的建议,于是我想那我可以先加入一些技术学习交流群,在里面应该可以认识到一些学习的人,于是我就开始大量的搜索加入学习群,于是在里面开始咨询学习方法,

但是,这个时候我又发现,我好像一张白纸,我想问一些问题,可是我不知道该怎么问,我也只能问大家都是怎么学习的,群内的朋友也都还很热情,也和我说了很多学习方式,不过我发现每个人都有各自的学习方式,各自都有各自的理论和优势,在那么多的方法面前我再一次的有些混乱,又不知道哪一方法适合我,于是,我想到千人千面,每个人有每个人的想法,我咨询的人越多,获取的信息越多可能我就会越乱,于是我决定,那我就要借鉴看到的这些信息,来整理一套自己的方式,不一定对,但是可能这更适合我自己。

于是,我并没有先着急的就找教程视频来直接学习,我现在想知道的就是,应该先学什么,掌握哪些知识之后,再学什么,我觉得我应该先整理一套相对看上去系统的教程,虽然我最希望可以找到一个人给我一些这类的指引,但是奈何没有找到,那就只能自己去整理了,我根据我买的书籍目录,以及查了一些培训机构的学科介绍,教程大纲内容,进行了一个统计对比,发现其实学习的内容路径也还是有它一定的规律,那我就整理了一份知识点的目录学习路径,我按照我整理的这个学习路径上的知识点目录去查找对应的教程,这样就整理了一套自己的学习资料,整理学习路径和教程,利用了我比较多得时间,不过整理好了那么就可以开始学习了。

但在查找教程的时候,又走了一些弯路,我当时只想到只要按照我整理的这个目录找到对应的教程就好了,可是在学习的时候,还是觉得知识点之间的衔接有些杂乱无章,

而且每一个知识点都是不同机构课程风格不同的教程视频,这让我学上去有些别扭,而且有的老师讲得我很喜欢听,有的就不是很喜欢,于是,我就又想,那我就找我喜欢这个老师的课程就好啦,可是我找了两三天,同一个老师的教程是非常难找到公开的全套教程,这个我想也可以理解,老师也可能没时间和精力来从零开始录制全套教程,而且老师也是要工作赚钱养家生活的,于是我想那我可以找同一个机构的教程吧,这样也能最起码是课程风格一致,于是我就找到了我我认为课程比较好得教程机构,又将我的学习资料重新的整理替换了一下,果然我觉得学习感觉好了一些,而且我又找到他们的客服,要到了他们课程的一些配套资料,这对我学习来说起到了更加的有效帮助。

最后,在学习完我整理的学习知识教程之后,又遇到了一个瓶颈,就是学习完知识点内容,掌握的也是七七八八,之后又不知道该怎么做了,不知道自己学习的有没有达到可以找工作的条件,

于是我又查询了一些资料,可一些招聘信息,了解的一些信息主要要求说是需要项目经验,需要一些项目功能技术的掌握,那我的理解就是,已经掌握了基础知识,企业招聘人员需要掌握一些项目技术能力,

去帮助解决处理问题,也就好像,假设Python有100个技术框架,但是一个企业只用到其中30个,那如果你的学习掌握正是他们用的这30个,那么你不会那另外的70个也可以,只不过你学习掌握的越多,你的条件符合范围和就业机会也就越大,我按照我的这个大致理解,

我就仔细了解了一下Python主要可以从事哪些方向,我就根据我比较喜欢的方向看了一下招聘信息,然后根据上面的普遍要求,进行了学习。最后就整理包装了一下简历,尝试着投简历找工作,当然面试也并不是顺利,刚开始的面试是还慌乱,面试也是没有任何结果,不过我是在每次面试中总结经验,收集好面试问题,回来在好好准备,为下一次面试做知识储备,就这样我面了试大概有将近二十家,终于也是找到了一个算是实习岗位的工作,我想着先做着,这个时候应该先到企业中去学习一些真实的项目经历比较重要。

最后我总结一下我学习过程中我认为比较重点的内容

首先,学习我们要有一个清楚的自我认识,是为了找工作,还是为了辅助工作来增加自己的竞争力,也就是要有一个明确的目标。 如果是完全零基础学习,我建议开始不要先看书,原因上面我也有说了,这个时候看书完全看不进去,里面的知识点也很难理解的,虽然我们从小就接受书本教育,可是前提也都是要有老师讲解的,不是我们自己看书就可以的。

然后,就是要寻找一套适合自己的学习方式,最好还是自己整理一套适合自己的学习资料,因为只有自己最了解自己,这里可能会花费比较长的时间,但是这会让你在之后的学习上节省很多时间,让你事半功倍。

最后,如果在选择视频教程的时候,尽量选择一个老师的教程(但是很难实现)最差也要尽量选择同一家机构的教程,因为这样在课程设计和课程风格上相对比较统一。然后在学习的过程中,最好是根据视频课程老师的进度,自己做学习笔记,这样的好处,一是,在今天学习完,明天你可能就只记得一个大致概念了,俗话说,好记性不如烂笔头,做笔记会让自己印象更深刻,二是,在之后你想要回头复习的时候,也会让你有一个清晰的复习思路。当学习完一个阶段知识的时候,感觉视频老师讲解的内容有些浅,这时候可以看一些优秀的书籍,因为你觉得老师讲得浅,说明你的学习理解的非常好,这时候看一些书可以起到很大的提升作用。

至于找工作面试的事情我就不详细地写了,手敲了这么多,有点累了,最后希望我的建议可以对想要学习的伙伴有一点点帮助吧。

‘叁’ 初学python,感受和C的不同

从开始看Python到现在也有半个多月了,前后看了Python核心编程和Dive into
Python两本书。话说半个月看两本,是个人都知道有多囫囵吞枣,这也是因为我暂时没有需求拿这个做大型开发,主要是平时的小程序test用一用。所以

我的策略是,整体浏览,用到时候现查。话说这核心编程第一版太古老了,老在讲2.2之前的东西,我看的翻译电子版,翻译得也不好,很晦涩。看完这个后还有
点云里雾里,看网上人家说DIP好,啄木鸟还有免费电子文档,就找来看这个。怎么说呢,讲的比核心编程好,但不适合第一次看的初学者。我之所以觉得讲得
好,是因为看核心编程,有些概念还有些模糊,看了这本书就明白不少了。要是初学者上来就看这本,保证不好理解。

下面就是在学习的过程中,在翻阅资料的过程中,总结的一些C和python比较明显的不同之处,有大方向的,也有细节的。肯定没有总结完,比如动态

函数,lambda这些,我都懒得往上写了。实际上,作为两种完全不同的语言,下面这些差异只是冰山一角而已。权当抛砖引玉吧,至少应该对和我有相同研究

兴趣,正在考虑是否学习另一门语言的朋友有点帮助。此文也算是DIP的学习笔记吧。顺带说一句,要是有朋友了解,可以帮忙推荐一下实战性强的Python
教材,语言这东西,不多练手,光比划,是不可能学好的。

学习目的

我的以后的研究方向是嵌入式,显然,c语言是我的主要语言。我不是一个语言爱好者,我以前觉得,对于做研究而不是应用的人来说,了解多门语言,不如

精通一门语言。之所以去看python,主要还是因为python更有利于快速开发一些程序,也是因为现在认识到,研究和应用是不能分离的。个人以为,要
想在计算机工程的竞争中立足,必须懂C语言。因为真正要做高性能编程,
不可能将机器的体系架构抛到脑后让Python虚拟机(或Java虚拟机等)帮你搞定所有底层。越来越多的CPU
core,越来越恐怖的内存性能瓶颈,对于上层开发人员来说,无所谓,但是对高性能程序开发人员来说,这些是无法透明的。很多应用,还是自己掌控比较有
效。这些场合中,汇编和C还是不可替代的。但是,光知道C是不够的,掌握一门面向对象语言,相对更高层的语言,不仅对以后的个人发展有利,也会对自己的技
术认识产生帮助。

如果要问对我来说谁更重要,我觉得还是C更重要。C的学习曲线更陡,貌似简单,实际上到处都是陷阱,看上去比较简单低效的程序,也不是学1,2个月

就能搞定的。谈到优化的深层次和难度嘛,需要的功底是按年算的。但是一旦你C语言的基础打好了,对计算机的理解,对其他语言的理解都是大有裨益的。比如,

如果你有C基础,可以说,学过1天python,就能写的出来一些不短的程序。后面的优化也不是什么大不了的算法,都是非常基本的语句换来换去。当然这里
不是说 Python不好,实际上,上层应用,Python比C方便的不是一个层次。

很多人觉得,既然懂C了,那么进一步掌握C++应该是水到渠成,但C++不是C的超集,而我又不喜欢C++的繁琐和巨大,所以才决定看一看Python。我很喜欢Python的优雅与快捷。

语言类型

和C不一样,Python是一种动态类型语言,又是强类型语言。这个分类怎么理解呢?大概是可以按照下列说明来分类的:

静态类型语言

一种在编译期间就确定数据类型的语言。大多数静态类型语言是通过要求在使用任一变量之前声明其数据类型来保证这一点的。Java和 C 是静态类型语言。

动态类型语言

一种在运行期间才去确定数据类型的语言,与静态类型相反。Python 是动态类型的,因为它们确定一个变量的类型是在您第一次给它赋值的时候。

强类型语言

一种总是强制类型定义的语言。Java 和 Python 是强制类型定义的。您有一个整数,如果不明确地进行转换 ,不能将把它当成一个字符串。

弱类型语言

一种类型可以被忽略的语言,与强类型相反。VBScript 是弱类型的。在 VBScript 中,您可以将字符串 ‘12′ 和整数 3 进行连接得到字符串’123′,然后可以把它看成整数 123 ,所有这些都不需要任何的显示转换。

对象机制

具体怎么来理解这个“动态确定变量类型”,就要从Python的Object对象机制说起了。Objects(以下称对象)是Python对于数据

的抽象,Python中所有的数据,都是由对象或者对象之间的关系表示的,函数是对象,字符串是对象,每个东西都是对象的概念。每一个对象都有三种属性:

实体,类型和值。理解实体是理解对象中很重要的一步,实体一旦被创建,那么就一直不会改变,也不会被显式摧毁,同时通常意义来讲,决定对象所支持的操作方

式的类型(type,包括number,string,tuple及其他)也不会改变,改变的只可能是它的值。如果要找一个具体点的说明,实体就相当于对

象在内存中的地址,是本质存在。而类型和值都只是实体的外在呈现。然后Python提供一些接口让使用者和对象交互,比如id()函数用来获得对象实体的
整形表示(实际在这里就是地址),type()函数获取其类型。

这个object机制,就是c所不具备的,主要体现在下面几点:

1 刚才说了,c是一个静态类型语言,我们可以定义int a, char
b等等,但必须是在源代码里面事先规定。比如我们可以在Python里面任意一处直接规定a =
“lk”,这样,a的类型就是string,这是在其赋值的时候才决定的,我们无须在代码中明确写出。而在C里面,我们必须显式规定char *a =
“lk”,也就是人工事先规定好a的类型

2 由于在C中,没有对象这个概念,只有“数据的表示”,比如说,如果有两个int变量a和b,我们想比较大小,可以用a ==
b来判断,但是如果是两个字符串变量a和b,我们就不得不用strcmp来比较了,因为此时,a和b本质上是指向字符串的指针,如果直接还是用==比较,
那比较的实际是指针中存储的值——地址。

在Java中呢,我们通过使用 str1 == str2 可以确定两个字符串变量是否指向同一块物理内存位置,这叫做“对象同一性”。在 Java 中要比较两个字符串值,你要使用 str1.equals(str2)。

然后在Python中,和前两者都不一样,由于对象的引入,我们可以用“is”这个运算符来比较两个对象的实体,和具体对象的type就没有关系
了,比如你的对象是tuple也好,string也好,甚至class也好,都可以用”is”来比较,本质上就是“对象同一性”的比较,和Java中
的==类似,和 C中的pointer比较类似。Python中也有==比较,这个就是值比较了。

3
由于对象机制的引入,让Python的使用非常灵活,比如我们可以用自省方法来查看内存中以对象形式存在的其它模块和函数,获取它们的信息,并对它们进行
操作。用这种方法,你可以定义没有名称的函数,不按函数声明的参数顺序调用函数,甚至引用事先并不知道名称的函数。 这些操作在C中都是不可想象的。

4 还有一个很有意思的细节,就是类型对对象行为的影响是各方面的,比如说,a = 1; b =
1这个语句中,在Python里面引发的,可能是a,b同时指向一个值为1的对象,也可能是分别指向两个值为1的对象。而例如这个语句,c = []; d
= [],那么c和d是肯定指向不同的,新创建的空list的。没完,如果是”c = d =
[]“这个语句呢?此时,c和d又指向了相同的list对象了。这些区别,都是在c中没有的。

最后,我们来说说为什么python慢。主要原因就是function call
overhead比较大。因为所有东西现在都是对象了,contruct 和destroy 花费也大。连1 + 1 都是 function
call,像’12′+’45′ 这样的要 create a third string object, then calls the string
obj’s __add。可想而知,速度如何能快起来?

列表和数组

分析Python中的list和C中的数组总是很有趣的。相信可能一些朋友和一样,初学列表的时候,都是把它当作是数组来学的。最初对于list和数组区别的定性,主要是集中在两点。首先,list可以包含很多不同的数据类型,比如

["this", 1, "is", "an", "array"]

这个List,如果放在C中,其实是一个字符串数组,相当于二维的了。

其次呢,list有很多方法,其本身就是一个对象,这个和C的单纯数组是不同的。对于List的操作很多样,因为有方法也有重载的运算符。也带来一些问题,比如下面这个例子:

加入我们要产生一个多维列表,用下面这个语句

A = [[None] * 2] * 3

结果,A的值会是

[[None, None], [None, None], [None, None]]

初一看没问题,典型的二维数组形式的列表。好,现在我们想修改第一个None的值,用语句

A[0][0] = 5

现在我们再来看看A的值:

[[5, None], [5, None], [5, None]]

发现问题没有?这是因为用 * 来复制时,只是创建了对这个对象的引用,而不是真正的创建了它。 *3 创建了一个包含三个引用的列表,这三个引用都指向同一个长度为2的列表。其中一个行的改变会显示在所有行中,这当然不是你想要的。解决方法当然有,我们这样来创建

A = [None]*3
for i in range(3):
A[i] = [None] * 2

这样创建了一个包含三个不同的长度为2的列表。

所以,还是一直强调的,越复杂的东西,越灵活,也越容易出错。

代码优化

C是一个很简单的语言,当我们考虑优化的时候,通常想得也很简单,比如系统级调用越少越好(缓冲区机制),消除循环的低效率和不必要的系统引用,等
等,其实主要都是基于系统和硬件细节考虑的。而Python就完全不一样了,当然上面说的这些优化形式,对于Python仍然是实用的,但由于
Python的语法形式千差万别,库和模块多种多样,所以对于语言本身而言,就有很多值得注意的优化要点,举几个例子吧。

比如我们有一个list L1,想要构建一个新的list L2,L2包括L1的头4个元素。按照最直接的想法,代码应该是

L2 = []
for i in range[3]:
L2.append(L1[i])

而更加优化和优美的版本是

L2 = L1[:3]

再比如,如果s1..s7是大字符串(10K+),那么join([s1,s2,s3,s4,s5,s6,s7])就会比
s1+s2+s3+s4+s5+s6+s7快得多,因为后者会计算很多次子表达式,而join()则在一次过程中完成所有的复制。还有,对于字符串操作,
对字符串对象使用replace()方法。仅当在没有固定字符串模式时才使用正则表达式。

所以说,以优化为评判标准,如果说C是短小精悍,Python就是博大精深。

include和import

在C语言中的include非常简单,因为形式单一,意义明确,当你需要用到外部函数等资源时,就用include。而Python中有一个相似的
机制,就是import。乍一看,这两个家伙挺像的,不都是我们要用外部资源(最常见的就是函数或者模块(Python))时就用这个来指明么?其实不

然,两者的处理机制本质区别在于,C中的include是用于告诉预处理器,这个include指定的文件的内容,你都给我当作在本地源文件中出现过。而

import呢,不是简单的将后面的内容*直接*插入到本地里面去,这玩意更加灵活。事实上,几乎所有类似的机制,Python都比C灵活。这里不是说C
不好,C很简练,我其实更喜欢C。

简单说说这个灵活性。import在python中有三种形式,import X, from X import *( or a,b,c……),
X = __import__(’x')。最常用的是第二种,因为比较方便,不像第一种那样老是用X.mole来调用模块。from X
import *只是import那些public的mole(一般都是不以__命名的模块),也可以指定a,b,c来import。

什么时候用哪一种形式呢?应该说,在大多数的模块文档里,都会明确告诉你应该用哪种形式。如果需要用到很多对象,那么from X import
*可能更合适一些,但是,就目前来看,大多数第三方Python库都不推荐使用from molename import *
这种格式。这样做会使引入者的namespace混乱。很多人甚至对于那些专门设计用于这种模式的模块(包括Tkinter,
threading和matplot)都不采用这种方式。而如果你仅仅需要某个对象类a,那么用from X import a比用import
X.a更好,因为以后你调用a的函数直接用a.function()既可以了,不用加X。

如果你连自己希望import的模块都不知道怎么办?请注意,此时Python的优势就体现出来了,我们可以用
__import__(mole)来调用mole,其中这个mole是字符串,这样,可以在运行时再决定,你到底要调用什么mole。举
个例子:

def classFromMole (mole, Name):
mod = __import__ (mole)
return getattr (mod, Name)

这里,定义了一个函数classFromMole,你可以在代码的任何时候调用它,

o = classFromMole (MoleOfTheClass, NameOfTheAttribute)()

只需要传入字符串形式的你希望import的模块MoleOfTheClass和其中属性的名字NameOfTheAttribute(当然可以是数据也可以是方法),就能调用了,这个名字字符串不用事先指定,而是根据当时运行的情况来判断。

顺带说一句,Python中import的顺序也有默认规定,这个和C中的include有点类似,因为我们一般都是先include系统文件,再
include自己的头文件(而且还有<>和“”的区别)。Python中呢,一般应该按照以下顺序import模块:

1. 标准库模块 — 如 sys, os, getopt 等

2. 第三方模块

3. 本地实现的模块。

全局变量

这里谈全局变量呢,倒不是说Python和c的全局变量概念不同,他们的概念是相同的。只是在使用机制上,是有一些差异的。举个例子:

– mole.py –
globalvar = 1

def func():
print globalvar
# This makes someglobal readonly,
# any attempt to write to someglobal
# would create a new local variable.

def func2():
global globalvar
globalvar = 2
# this allows you to manipulate the global
# variable

在 func这个函数中,globalvar是只读的。如果你使用了globalvar =
xxx这种赋值语句,Python会重新创造一个新的本地对象并将新值赋给它,原来的对象值不变。而在func2函数中,由于我们事先申明了
globalvar是global的,那么此时的更改就直接在全局变量上生效。

‘肆’ Pytho怎样自学

我是真正零基础开始学Python的,从一开始的一窍不通,到3个月后成功搭建了一个动态网站(没有用任何框架)。相比于计算机大牛,我更加知道一个小白将会遇到什么坑,遇到哪些难点。我把我的学习过程写在下面,并附上在每个阶段的学习资料,希望对零基础的Python学习者有所帮助。

sql书籍:Sams Teach Yourself MySQL in 21 Days

Python:Python核心编程(第二版)

Github上的优质Python资源:CodementorIO/Python-Learning-Resources

过程中还牵涉到部署,我的网站是跑在Linux上的。关于部署网上有非常多的优质教程,一搜一大把。这里就不再赘述。

这些是我学习大致路线,当然过程中充满着小的磕磕绊绊,虽然网站上线了,貌似运行还比较顺利,但是如果以一个程序员的标准来要求自己,自己依然非常菜鸟。不过我并没有以前那样惧怕技术了,就像你明白魔术的背后的原理后,会更多的思考原理本身。

‘伍’ 小学生怎么样自学编程

首先零基础是能学python的,很多编程大神入门之前都选择先学习Python,所以想学就大胆去学吧,没学之前谁不是零基础,就算是现在才下定决心学也不怕,学习Python什么时候都不算晚。

零基础如何学好python,作为一个学了python两三年的过来人,我当初也是从0开始一路摸索过来的,这里给想学python的小白们分享一点我的学习心得。

不管你学习什么,都是有科学的学习方法与合理的学习计划的,只要这两点你准备充足,那么Python从入门到精通,你比其他人耗费的时间要短得多,甚至有勤奋的小伙伴,短短半年就能独当一面了。 开始学注意几点:

  • 对自己的水平有正确的认知

  • 在学习Python时,每个人的基础水平不一样,如果你完全是新手,就需要从入门课程或初学者读物开始钻研,不要想着一开始就去挑战高难度课程,我也是零基础学习Python的,因为知道学会并不是件非常容易事情,所以想先泼点冷水,学习Python不是一蹴而就的事情,现在的你要有一个正确的认知,学完Python,并不能立马拿一两万的工资,Python也没有那么简单,别想着1个月、2个月就能学会,你至少得花费半年左右时间去学习。

  • 不要闭门造车

  • 不要以为自己可以解决所有问题,学习python是很抽象的,尤其是在刚开始学的时候,很多时候都会感到无从下手。 所以我建议大家一定要懂得借力,找一些身边学得好的前辈,或者你认识的朋友带带你,有人指引真的会事半功倍,效率更高。 最好是和有经验的人多多交流,可以学到很多好的学习方法和技巧,提高我们的学习效率。 我的一个好友,也是python行业大佬,之前我学习的时候请教过他问题,非常乐于助人,现在全民都在直播,所以他也每天固定时间在自己的分享群里,直播免费分享自己的python干货知识,讲讲自己的学习和工作心路历程,讲一下零基础学习哪些内容及怎么学才能够找到一份不错的工作,也分享下自己接单做副业的经验,毕竟他只做下接单都能月入过万。

‘陆’ 初学python,感受和C的不同

从开始看Python到现在也有半个多月了,前后看了Python核心编程和Dive
into
Python两本书。话说半个月看两本,是个人都知道有多囫囵吞枣,这也是因为我暂时没有需求拿这个做大型开发,主要是平时的小程序test用一用。所以我的策略是,整体浏览,用到时候现查。话说这核心编程第一版太古老了,老在讲2.2之前的东西,我看的翻译电子版,翻译得也不好,很晦涩。看完这个后还有点云里雾里,看网上人家说DIP好,啄木鸟还有免费电子文档,就找来看这个。怎么说呢,讲的比核心编程好,但不适合第一次看的初学者。我之所以觉得讲得好,是因为看核心编程,有些概念还有些模糊,看了这本书就明白不少了。要是初学者上来就看这本,保证不好理解。

下面就是在学习的过程中,在翻阅资料的过程中,总结的一些C和python比较明显的不同之处,有大方向的,也有细节的。肯定没有总结完,比如动态函数,lambda这些,我都懒得往上写了。实际上,作为两种完全不同的语言,下面这些差异只是冰山一角而已。权当抛砖引玉吧,至少应该对和我有相同研究兴趣,正在考虑是否学习另一门语言的朋友有点帮助。此文也算是DIP的学习笔记吧。顺带说一句,要是有朋友了解,可以帮忙推荐一下实战性强的Python教材,语言这东西,不多练手,光比划,是不可能学好的。

学习目的

我的以后的研究方向是嵌入式,显然,C语言是我的主要语言。我不是一个语言爱好者,我以前觉得,对于做研究而不是应用的人来说,了解多门语言,不如精通一门语言。之所以去看python,主要还是因为python更有利于快速开发一些程序,也是因为现在认识到,研究和应用是不能分离的。个人以为,要想在计算机工程的竞争中立足,必须懂C语言。因为真正要做高性能编程,
不可能将机器的体系架构抛到脑后让Python虚拟机(或Java虚拟机等)帮你搞定所有底层。越来越多的CPU
core,越来越恐怖的内存性能瓶颈,对于上层开发人员来说,无所谓,但是对高性能程序开发人员来说,这些是无法透明的。很多应用,还是自己掌控比较有效。这些场合中,汇编和C还是不可替代的。但是,光知道C是不够的,掌握一门面向对象语言,相对更高层的语言,不仅对以后的个人发展有利,也会对自己的技术认识产生帮助。

如果要问对我来说谁更重要,我觉得还是C更重要。C的学习曲线更陡,貌似简单,实际上到处都是陷阱,看上去比较简单低效的程序,也不是学1,2个月就能搞定的。谈到优化的深层次和难度嘛,需要的功底是按年算的。但是一旦你C语言的基础打好了,对计算机的理解,对其他语言的理解都是大有裨益的。比如,如果你有C基础,可以说,学过1天python,就能写的出来一些不短的程序。后面的优化也不是什么大不了的算法,都是非常基本的语句换来换去。当然这里不是说
Python不好,实际上,上层应用,Python比C方便的不是一个层次。

很多人觉得,既然懂C了,那么进一步掌握C++应该是水到渠成,但C++不是C的超集,而我又不喜欢C++的繁琐和巨大,所以才决定看一看Python。我很喜欢Python的优雅与快捷。

语言类型

和C不一样,Python是一种动态类型语言,又是强类型语言。这个分类怎么理解呢?大概是可以按照下列说明来分类的:

静态类型语言

一种在编译期间就确定数据类型的语言。大多数静态类型语言是通过要求在使用任一变量之前声明其数据类型来保证这一点的。Java和 C 是静态类型语言。

动态类型语言

一种在运行期间才去确定数据类型的语言,与静态类型相反。Python 是动态类型的,因为它们确定一个变量的类型是在您第一次给它赋值的时候。

强类型语言

一种总是强制类型定义的语言。Java 和 Python 是强制类型定义的。您有一个整数,如果不明确地进行转换 ,不能将把它当成一个字符串。

弱类型语言

一种类型可以被忽略的语言,与强类型相反。VBScript 是弱类型的。在 VBScript 中,您可以将字符串 ’12′ 和整数 3 进行连接得到字符串’123′,然后可以把它看成整数 123 ,所有这些都不需要任何的显示转换。

对象机制

具体怎么来理解这个“动态确定变量类型”,就要从Python的Object对象机制说起了。Objects(以下称对象)是Python对于数据的抽象,Python中所有的数据,都是由对象或者对象之间的关系表示的,函数是对象,字符串是对象,每个东西都是对象的概念。每一个对象都有三种属性:实体,类型和值。理解实体是理解对象中很重要的一步,实体一旦被创建,那么就一直不会改变,也不会被显式摧毁,同时通常意义来讲,决定对象所支持的操作方式的类型(type,包括number,string,tuple及其他)也不会改变,改变的只可能是它的值。如果要找一个具体点的说明,实体就相当于对象在内存中的地址,是本质存在。而类型和值都只是实体的外在呈现。然后Python提供一些接口让使用者和对象交互,比如id()函数用来获得对象实体的整形表示(实际在这里就是地址),type()函数获取其类型。

这个object机制,就是c所不具备的,主要体现在下面几点:

1 刚才说了,c是一个静态类型语言,我们可以定义int a, char
b等等,但必须是在源代码里面事先规定。比如我们可以在Python里面任意一处直接规定a =
“lk”,这样,a的类型就是string,这是在其赋值的时候才决定的,我们无须在代码中明确写出。而在C里面,我们必须显式规定char *a =
“lk”,也就是人工事先规定好a的类型

2 由于在C中,没有对象这个概念,只有“数据的表示”,比如说,如果有两个int变量a和b,我们想比较大小,可以用a ==
b来判断,但是如果是两个字符串变量a和b,我们就不得不用strcmp来比较了,因为此时,a和b本质上是指向字符串的指针,如果直接还是用==比较,那比较的实际是指针中存储的值——地址。

在Java中呢,我们通过使用 str1 == str2 可以确定两个字符串变量是否指向同一块物理内存位置,这叫做“对象同一性”。在 Java 中要比较两个字符串值,你要使用 str1.equals(str2)。

然后在Python中,和前两者都不一样,由于对象的引入,我们可以用“is”这个运算符来比较两个对象的实体,和具体对象的type就没有关系了,比如你的对象是tuple也好,string也好,甚至class也好,都可以用”is”来比较,本质上就是“对象同一性”的比较,和Java中的==类似,和
C中的pointer比较类似。Python中也有==比较,这个就是值比较了。

3
由于对象机制的引入,让Python的使用非常灵活,比如我们可以用自省方法来查看内存中以对象形式存在的其它模块和函数,获取它们的信息,并对它们进行操作。用这种方法,你可以定义没有名称的函数,不按函数声明的参数顺序调用函数,甚至引用事先并不知道名称的函数。
这些操作在C中都是不可想象的。

4 还有一个很有意思的细节,就是类型对对象行为的影响是各方面的,比如说,a = 1; b =
1这个语句中,在Python里面引发的,可能是a,b同时指向一个值为1的对象,也可能是分别指向两个值为1的对象。而例如这个语句,c = []; d
= [],那么c和d是肯定指向不同的,新创建的空list的。没完,如果是”c = d =
[]“这个语句呢?此时,c和d又指向了相同的list对象了。这些区别,都是在c中没有的。

最后,我们来说说为什么python慢。主要原因就是function call overhead比较大。因为所有东西现在都是对象了,contruct 和destroy 花费也大。连1 + 1 都是 function call,像’12′+’45′ 这样的要 create a third string object, then calls the string obj’s __add。可想而知,速度如何能快起来?

列表和数组

分析Python中的list和C中的数组总是很有趣的。相信可能一些朋友和一样,初学列表的时候,都是把它当作是数组来学的。最初对于list和数组区别的定性,主要是集中在两点。首先,list可以包含很多不同的数据类型,比如

["this", 1, "is", "an", "array"]

这个List,如果放在C中,其实是一个字符串数组,相当于二维的了。

其次呢,list有很多方法,其本身就是一个对象,这个和C的单纯数组是不同的。对于List的操作很多样,因为有方法也有重载的运算符。也带来一些问题,比如下面这个例子:

加入我们要产生一个多维列表,用下面这个语句

A = [[None] * 2] * 3

结果,A的值会是

[[None, None], [None, None], [None, None]]

初一看没问题,典型的二维数组形式的列表。好,现在我们想修改第一个None的值,用语句

A[0][0] = 5

现在我们再来看看A的值:

[[5, None], [5, None], [5, None]]

发现问题没有?这是因为用 * 来复制时,只是创建了对这个对象的引用,而不是真正的创建了它。 *3 创建了一个包含三个引用的列表,这三个引用都指向同一个长度为2的列表。其中一个行的改变会显示在所有行中,这当然不是你想要的。解决方法当然有,我们这样来创建

A = [None]*3
for i in range(3):
A[i] = [None] * 2

这样创建了一个包含三个不同的长度为2的列表。

所以,还是一直强调的,越复杂的东西,越灵活,也越容易出错。

代码优化

C是一个很简单的语言,当我们考虑优化的时候,通常想得也很简单,比如系统级调用越少越好(缓冲区机制),消除循环的低效率和不必要的系统引用,等等,其实主要都是基于系统和硬件细节考虑的。而Python就完全不一样了,当然上面说的这些优化形式,对于Python仍然是实用的,但由于
Python的语法形式千差万别,库和模块多种多样,所以对于语言本身而言,就有很多值得注意的优化要点,举几个例子吧。

比如我们有一个list L1,想要构建一个新的list L2,L2包括L1的头4个元素。按照最直接的想法,代码应该是

L2 = []
for i in range[3]:
L2.append(L1[i])

而更加优化和优美的版本是

L2 = L1[:3]

再比如,如果s1..s7是大字符串(10K+),那么join([s1,s2,s3,s4,s5,s6,s7])就会比
s1+s2+s3+s4+s5+s6+s7快得多,因为后者会计算很多次子表达式,而join()则在一次过程中完成所有的复制。还有,对于字符串操作,对字符串对象使用replace()方法。仅当在没有固定字符串模式时才使用正则表达式。

所以说,以优化为评判标准,如果说C是短小精悍,Python就是博大精深。

include和import

在C语言中的include非常简单,因为形式单一,意义明确,当你需要用到外部函数等资源时,就用include。而Python中有一个相似的机制,就是import。乍一看,这两个家伙挺像的,不都是我们要用外部资源(最常见的就是函数或者模块(Python))时就用这个来指明么?其实不然,两者的处理机制本质区别在于,C中的include是用于告诉预处理器,这个include指定的文件的内容,你都给我当作在本地源文件中出现过。而

import呢,不是简单的将后面的内容*直接*插入到本地里面去,这玩意更加灵活。事实上,几乎所有类似的机制,Python都比C灵活。这里不是说C不好,C很简练,我其实更喜欢C。

简单说说这个灵活性。import在python中有三种形式,import X, from X import *( or a,b,c……), X =
__import__(‘x’)。最常用的是第二种,因为比较方便,不像第一种那样老是用X.mole来调用模块。from X import
*只是import那些public的mole(一般都是不以__命名的模块),也可以指定a,b,c来import。

什么时候用哪一种形式呢?应该说,在大多数的模块文档里,都会明确告诉你应该用哪种形式。如果需要用到很多对象,那么from X import
*可能更合适一些,但是,就目前来看,大多数第三方Python库都不推荐使用from molename import *
这种格式。这样做会使引入者的namespace混乱。很多人甚至对于那些专门设计用于这种模式的模块(包括Tkinter,
threading和matplot)都不采用这种方式。而如果你仅仅需要某个对象类a,那么用from X import a比用import
X.a更好,因为以后你调用a的函数直接用a.function()既可以了,不用加X。

如果你连自己希望import的模块都不知道怎么办?请注意,此时Python的优势就体现出来了,我们可以用
__import__(mole)来调用mole,其中这个mole是字符串,这样,可以在运行时再决定,你到底要调用什么mole。举个例子:

def classFromMole (mole, Name):
mod = __import__ (mole)
return getattr (mod, Name)

这里,定义了一个函数classFromMole,你可以在代码的任何时候调用它,

o = classFromMole (MoleOfTheClass, NameOfTheAttribute)()

只需要传入字符串形式的你希望import的模块MoleOfTheClass和其中属性的名字NameOfTheAttribute(当然可以是数据也可以是方法),就能调用了,这个名字字符串不用事先指定,而是根据当时运行的情况来判断。

顺带说一句,Python中import的顺序也有默认规定,这个和C中的include有点类似,因为我们一般都是先include系统文件,再
include自己的头文件(而且还有<>和“”的区别)。Python中呢,一般应该按照以下顺序import模块:

1. 标准库模块 — 如 sys, os, getopt 等

2. 第三方模块

3. 本地实现的模块。

全局变量

这里谈全局变量呢,倒不是说Python和c的全局变量概念不同,他们的概念是相同的。只是在使用机制上,是有一些差异的。举个例子:

– mole.py –
globalvar = 1

def func():
print globalvar
# This makes someglobal readonly,
# any attempt to write to someglobal
# would create a new local variable.

def func2():
global globalvar
globalvar = 2
# this allows you to manipulate the global
# variable

在 func这个函数中,globalvar是只读的。如果你使用了globalvar =
xxx这种赋值语句,Python会重新创造一个新的本地对象并将新值赋给它,原来的对象值不变。而在func2函数中,由于我们事先申明了
globalvar是global的,那么此时的更改就直接在全局变量上生效。

很明显这和c中的使用机制是不一样的,在c中,我们只要在函数外的全局区域申明了变量,就可以在函数中直接对其操作,不用还申明一个global。

Published 2008-06-22

Filed in c,code,python and
tagged c, python

‘柒’ Python精选5篇教学心得

Python是一种跨平台的计算机程序设计语言,是一种面向对象的动态类型语言,越来越多被用于独立的,大型项目的开发,已被逐渐广泛应用于系统管理任务的处理和Web编程。下面给大家带来一些关于Python 学习心得 ,希望对大家有所帮助。

python学习心得1

最近这段时间我们学习了很多内容,增长了很多关于Python的知识,万事万物是相通的,正如学习新的知识就像吃饭一样。

吃多了就会消化不良,反映到学习上也是一样,不知各位最近的感觉怎样,反正学记是需要一些时间好好消化,掌握到手中,为下一步的知识补齐缺口。

接下来,学记和大家一起回顾一下最近学习的内容,循序渐进,循序渐进。

分支结构

分支结构就像上图一样,是用来选择道路的。

所用的关键字是

If elif else

这三个词的意思分别是

如果 否则如果 其他的

分支语句的写法需要将与关键字与关键字对齐

循环结构

循环结构应用于一些重复的进程

通常我们只接触两种循环

for-in循环 和 while循环

for-in循环适用于

确切的知道到底循环几次

while循环适用于

不知道到底有几次循环

此时要搭配bool 来进行

即 True 和 Flase

关键字

关键字的熟练运用对于今后的开发工作

有非常重要的作用,但这么多关键字我们不能去死记硬背

只有在一个一个代码的验证当中去熟悉去掌握

那样是最可靠的

def 设置模组

len 计算字符串长度

capitalize 获得字符串首字母大写的拷贝

upper 获得字符串变大写后的拷贝

find 从字符串中查找子串所在位置

index 与find类似但找不到子串时会引发异常

startswith 检查字符串是否以指定的字符串开头

endswith 检查字符串是否以指定的字符串结尾

center 将字符串以指定的宽度居中并在两侧填充指定的字符

rjust 将字符串以指定的宽度靠右放置左侧 填充指定的字符

isdigit 检查字符串是否由数字构成

isalpha 检查字符串是否以字母构成

isalnum 检查字符串是否以数字和字母构成

append 添加元素

remove 删除元素

clear 清空元素

sorted 排序

大家可能会有些疑惑,学习这些东西真的有用吗?这些随处可见的基础方面的知识真的有用吗?

我可以非常肯定地告诉大家

有用的!

这些知识就像是建筑工地随处可见的砖石,不管这些砖石怎样的不起眼,但是没有一幢建筑可以离开砖石,学习的过程是枯燥的,不过这也正符合非常现实的一条规律。

学如逆水行舟,不进则退!

也正是因为它枯燥苦闷,学习有难度,才保证了,我们学习了这些知识以后,可以靠它们为生,在这个知识时代闯出自己的一片天!

不要放弃,绝对不要放弃!

黎明之前是最黑暗的!

为了自己的未来好好坚守吧!

青年学记 陪伴着各位青年

python学习心得2

python是一门非常有潜力的高级语言,历经多年的发展,其在编程上发挥着越来越大的作用。在这学期中,通过选修python课上的基础知识学习,我对python也有了一定的认识。而且,在字符串上的处理,python相对于c语言也是给程序员极大的便利。而python不仅如此,它的库也很多,正因为它强大的库,让编程变得不再艰难。但是,我认为python虽然在许多方 面相 对于c语言比较方便,但也有其相对于弱一点的方面,比如说for循环等方面。虽然一学期下来,我对python的学习也仅仅只是它的基础方面,但python的强大,也是足足地吸引着我,希望自己能够在不断地学习中,将python学习的更加好。

python是一门非常有潜力的高级语言,历经多年的发展,其在编程上发挥着越来越大的作用。在这学期中,通过选修python课上的基础知识学习,我对python也有了一定的认识。

在学习python的第一节课上,其对我的最初的印象就是,相较于我学习过的c语言编程,它更加的简洁。所有的变量都不需要像c语言编程那样需要提前去定义,这样给了编程者很大的自由空间与方便。如x=2,即可同时完成变量的定义与赋值。对于简化程序的代码,起到了许多的作用。而且,在字符串上的处理,python相对于c语言也是给程序员极大的便利。在c语言中,只能用字符类的数组对字符串进行相应的操作,步骤也是相对于比较繁琐的,而在python中,当我们需要创建一个字符串的时候,只需要在创建字符串的时候用“s=”就可以了。而python不仅如此,它的库也很多,正因为它强大的库,让编程变得不再艰难。我们只需要调用库中的函数,而对于函数的具体实现,也没有特殊的需求。

但是,我认为python虽然在许多方面相对于c语言比较方便,但也有其相对于弱一点的方面,比如说for循环等方面。不过也依然不会影响到python的强大,而随着近几年来的发展,python的受欢迎度也越来越高,而它的运用的领域也是越来越多,比如人工智能和大数据等领域,python都是在其中扮演者重要的角色。虽然一学期下来,我对python的学习也仅仅只是它的基础方面,但python的强大,也是足足地吸引着我,希望自己能够在不断地学习中,将python学习的更加好。

python学习心得3

由于我是自学Python,非科班出生,所以只能分享一些关于我的学习心得,如果有不对地方欢迎指正。

不过非科班出生虽然是一个痛点,但是在工作上,我其实不输给我其他同事,这点我倒是很有自信,而且我也统一一句话“目前互联网上的免费编程课程,足够让你成为一个合格的码农”。

编程入门

我刚开始学习编程,主要是因为自己想动手做个网站,但是由于技术原因,再加上朋友都比较忙,最后抱着“求人不如求己”的想法,干脆自学。

编程难不难?

这个问题我觉得所有认真学过的人,都一定会肯定告诉你编程不难,但是精通那是相当困难的。

如果你还没去学习,就觉得编程一定很难,那么其实你是没有资格说这句话的,任何事情一定是要去尝试后,才能这么说。

编程其实很像堆积木,然后根据需求,把东西造出来,可以是房子,也可以是桥梁。

学习编程无非运用这些积木,来创造你要的东西。

编程语言选择

这边说个题外话,关于当时编程语言的选择,很多时候我觉得不是你选择编程语言,而是编程语言选择你,也就是你的“本命编程语言”。

人的性格会影响你适合的编程语言,比如你做事有条理,喜欢定期清理房间,那么可能C语言很适合你;如果你不喜欢打扫房间,实在受不了,才打扫一次,可能你适合Java。

哈哈,开个玩笑,不过确实有这种很玄的存在。

我当时在编程语言的选择上,用了一个笨 方法 。

我跑到w3cschool上面,把所有编程语言的第一章都去试了一遍,看看自己喜欢哪个语言,然后就选哪个语言,如果你不知道选哪门语言,可以用我的方法试试看。

至于编程语言,没有高低之分,因为无论你学习哪门语言,你都非常有市场,而且你都能够拿到高薪,关键是哪门语言适合你,并且能够让你有兴趣学下去,能学好,这个很关键。

兴趣是学习编程最大的驱动力!

为什么是Python

说下为什么选择Python?

因为简单,Python是公认的最容易入门的编程语言,而且也是公认有发展前景的编程语言,适用于机器人、大数据、人工智商等未来高科技。

基于以上的原因,我选择Python来作为自己的入门语言,而且我觉得我适合Python这么语言。(因为我很懒)

之前有个梗,大概就是其他编程语言在讨论某个问题,怎么解决,而Python的程序员已经下班了,由此可见Python的效率。

总结 :Python的语言特点就是“一气呵成,痛快如拉稀”。

学习心得

由于我是自学的,所以参考的网站比较多,小伙伴可以按照我的学习路线,一般来说不会出现什么问题。

基础:教程+视频

进阶:视频+实践

进阶pro:视频+实践+书籍+交流

基础

刚开始学习的时候,我比较推荐w3cschool和菜鸟教程这两个网站。

w3cschool-学编程,从w3cschool开始www.w3cschool.cn!

菜鸟教程 - 学的不仅是技术,更是梦想!www.runoob.com

这两个网站在我看来,是编程自学的福音。

w3cschool这个网站手册非常棒,另外这个网站的编程微课以及编程实战对新手来说非常友好!

我当时就是靠这两个,引发我学习的乐趣,不然对着枯燥的代码,说实话,很无聊的。

菜鸟教程,这个网站的实例是最棒的,很多时候,你不仅仅要自己看教程,还要去看看为什么,而菜鸟教程的实例就能够让你清晰的知道,为什么,并且会原来如此。

总的来说,这两个网站就像新手村刚出来的剑和盾!是新手入门绝对不能少的,尤其是w3cschool,强烈推荐。

还有一个就是视频,视频我是在慕课网上面看的,我很喜欢慕课网这个网站,网站风格很棒,而且视频也很清晰。

也可以在阿里云上面看Python的视频,也很不错,并且是免费的。

进阶

进阶结束后,代表你是个初级工程师。

这一步实践非常重要,你要自己动手,做一些小玩意,实践才是最重要的,在实践中发现问题,那是学习最快并且效率最高的时刻。

你可以先给自己定下一个目标,比如我要做一个简单的页面,或者我要做一个简单的小程序。

然后就开始动手去实践,这步很重要。

同时还是要多看书籍。

进阶pro

到这一步,我建议务必买书,你需要书籍帮你反向梳理你的知识,这决定了你以后的高度,而不是这个也懂,那个也懂,但是东西就是做不出来。

我记得当时我买完书,看完后的第一感受就是:原来这个世界是这样的!

书会非常系统性的帮你梳理你自己学过的知识!

这里只推荐两本书:《Python入门手册》和《Python核心编程》

小伙伴可以自己去亚马逊购买。

然后就是和身边的小伙伴交流!

多看看别人的代码,自己多敲敲代码,是必经之路,也是一定要做的。

以上,希望对想入门Python的小伙伴能够提供一点点帮助。

python学习心得4

017年11月,一群编程零基础的小伙伴们成立了Python学习小组,12名学员从此夜以继日地奔赴学习的征程。一个月过去了,从在屏幕上用最简单的语句打印出“Hello, Python; Hello, World”开始,我们逐步地学习Python语法,学习操作列表、字典,学习For,While,If语句,现在遇到了第一个难点:类。通过研读、练习、交流、讨论,作为程序界的小白,我们逐步地理解了类的概念,明白了面向对象与面向过程编程的差异,以下是我们的小小心得,与大家分享:

编程基本思想

现实世界中,每个复杂的事务都可以拆分为多个组成部分,其中的每一部分就可称之为对象。比如要实现一个很大很复杂的项目,我们可以把项目拆分成不同的组成部分,然后分别对不同部分通过编程实现,最终再把各个部分组装起来完成整个项目。这让我们能够从整体上来控制项目,从而让程序开发更有效。

比如汽车制造,汽车厂所做的仅仅是各个部件的组装和匹配,而各个部件的生产是由相对专业的厂商完成。如果需要研发新型号汽车,整车厂所考虑的是如何对各个新式的零部件进行新的组装和匹配,而不是从头到尾重新生产一辆汽车。

面向对象的编程

VS

面向过程的编程

面向过程编程是针对一个需求的具体实现过程,但是对于大型项目的复杂需求,一步一步的做,这种编程效率显然是低下的。

面向对象编程则是对项目进行拆分后(一般按照功能拆分),分别实现,再将各个对象组装起来。因此简单的小程序使用面向过程方法编程更适合。面向对象的编程特性是易维护(可读性高),效率高,质量高(重用性),扩展性好(高内聚,低耦合)。

对象

通俗的讲,对象就是事物,一个公司、一个部门、一个人,甚至一本书都可以是一个对象,程序员可以自由决定把什么作为对象。

比如eHR系统,需要对组织架构,员工进行管理,所以使用的对象可能是公司,部门,岗位,员工,等等。对象可大可小,可复杂也可简单,如果仅仅是做一个考勤系统,员工这个对象一定要比eHR系统中的员工对象简单。

现实世界中,类代表一组有共同特性的事物,把不同对象之间的共性抽象出来,就形成类的概念。比如说男人、女人可以抽象成人这个类;处长、秘书可以抽象成员工类。至于类如何去抽象,粒度的粗细,这是一个需要在学习和实践中摸索的过程。

实例

以下是一个实例,大家体会一下:

1. 定义父类:

class Employee:

def __init__(self, name, age): #抽象员工共性(名字,年龄)

self.name = name

self.age = age

def signON(self):

print(self.name+" sign on.") #抽象签到的动作

def work(self):

print(self.name + " on work.") #抽象工作的动作

2. 继承出子类:

class MEmployee(Employee): #继承父类的共性

def __init__(self, name, age):

super().__init__(name, age)

def work(self): #重写子类的方法(抽象出从事管理岗位工作的动作)

print(self.name + " on manager_work.")

3. 继承出第二个子类:

class TEmployee(Employee):

def __init__(self, name, age, devLanguage): #继承父类的共性,增加语言的属性

super().__init__(name, age)

self.devLanguage = devLanguage

def work(self): #重写子类的方法(抽象出从事技术岗位工作的动作)

print(self.name + " on technology_work.")

def showLanguage(self): #增加子类的方法(抽象出会某种编程语言的动作)

print("use "+self.devLanguage+" language.")

在上面的程序中,我们先定义了一个父类:包含员工的姓名、年龄等一般特性,可以执行签到、工作这两类动作。在第一个子类中,管理层在前面一般特性的基础上,执行管理工作;在第二个子类中,作为一般员工在前面一般特性的基础上,执行技术工作,从事编程。

python学习心得5

1、定义方法

关键字 def 是方法定义的标志。接下来紧跟方法名和被圆括号所包围的参数列表。方法的主

体语句将在下一行开始并且必须缩进。

方法主体的首句可选择性地是一句字符,用来说明方法的主要功能

例如:

"""print a finabo series up to n."""

2、默认参数值

默认值仅被设置一次,这与以前默认值为可变对象(如列表、字典和多数类实

例时)有很大的区别。

例如:

i=5

def f(arg=i):

print(arg)

i=6

f()

将会输出 5

3、关键字参数

可以通过形式关键字参数调用方法

在方法调用中,关键字参数必须遵循位置参数。 所有的关键参数必须符合方法接受的参数

其中之一。但是他们的次序不重要,这包含非选择的参数。没有参数可以多次接受一个值。

当最后一个形参是__ name 时,它可以接受包含除了形式参数之外的所有关键字的字典,

_ name 必须在__ name 之前出现

4、可变参数列表

正常来说,这些可变参数常常放在正式参数列表的后面,因为它们会包揽所有传递给该方法

的剩余输入参数。任何出现在_ args 参数后低的正式参数会被认为是关键字参数,意味着它

们只能当关键字使用而不是位置参数。

>>> def concat(_ args,sep="/"):

...returnsep.join(args)

...

>>> concat("earth","mars","venus")

’earth/mars/venus’

>>> concat("earth","mars","venus", sep=".")

’earth.mars.venus’

5、拆分参数列表

当参数已经存在列表或者元组中,但是需要分拆以供要求分离位置参数调用的方法,如果单独

分开它们无法使用,就需要写一个方法用 _ 操作符来调用实现分拆列表或者元组中的参数。

同样的使用形式,字典可以用__ 操作符实现关键字参数。

6、形式

lamdba a,b:a+b 该函数表示两个数的和,像内嵌函数

7、代码风格

对于 python,PEP8 作为许多项目应该遵守的编码指导书而做的。 它提出了一种可读而悦

目的编码风格。 每位 python 开发者应该读它。这里抽出一个重要的事项与你分享 :

? 用四个空格代替 tab 键

? 每行不要超过 79 个字符。

? 用空行分离方法和类,大块代码中的方法。

? 必要的时候为每行添加注释。

? 用文档字符串

? 在操作符两边用空格

? 用统一的风格命名自定义的方法和类

? 如果你的代码打算用在国际环境中,请不要用想象的字符编码。Python 默认的是

utf-8,在任何情况下可以用 Ascii .

? 同样的,即使有很少机会让说不同语言的人们读代码或者维护代码,但在定义中不

要用非 ASCII 编码字符。


‘捌’ 请问怎么学习Python

分享Python学习路线:

第一阶段:Python基础与Linux数据库

这是Python的入门阶段,也是帮助零基础学员打好基础的重要阶段。你需要掌握Python基本语法规则及变量、逻辑控制、内置数据结构、文件操作、高级函数、模块、常用标准库模板、函数、异常处理、mysql使用、协程等知识点。

学习目标:掌握Python的基本语法,具备基础的编程能力;掌握Linux基本操作命令,掌握MySQL进阶内容,完成银行自动提款机系统实战、英汉词典、歌词解析器等项目。

第二阶段:web全栈

这一部分主要学习web前端相关技术,你需要掌握html、cssJavaScript、JQuery、Bootstrap、web开发基础、Vue、FIask Views、FIask模板、数据库操作、FIask配置等知识。

学习目标:掌握web前端技术内容,掌握web后端框架,熟练使用FIask、Tornado、Django,可以完成数据监控后台的项目。

第三阶段:数据分析+人工智能

这部分主要是学习爬虫相关的知识点,你需要掌握数据抓取、数据提取、数据存储、爬虫并发、动态网页抓取、scrapy框架、分布式爬虫、爬虫攻防、数据结构、算法等知识。

学习目标:可以掌握爬虫、数据采集,数据机构与算法进阶和人工智能技术。可以完成爬虫攻防、图片马赛克、电影推荐系统、地震预测、人工智能项目等阶段项目。

第四阶段:高级进阶

这是Python高级知识点,你需要学习项目开发流程、部署、高并发、性能调优、Go语言基础、区块链入门等内容。

学习目标:可以掌握自动化运维与区块链开发技术,可以完成自动化运维项目、区块链等项目。

按照上面的Python学习路线图学习完后,你基本上就可以成为一名合格的Python开发工程师。当然,想要快速成为企业竞聘的精英人才,你需要有好的老师指导,还要有较多的项目积累实战经验。

对于Python开发有兴趣的小伙伴们,不妨先从看看Python开发教程开始入门!B站上有很多的Python教学视频,从基础到高级的都有,还挺不错的,知识点讲的很细致,还有完整版的学习路线图。也可以自己去看看,下载学习试试。

‘玖’ python 书籍推荐

1.《Python编程从入门到精通》

本书循序渐进、由浅入深地详细讲解了Python3语言开发的核心技术,并通过具体实例的实现过程演练了各个知识点的具体使用流程。通过两个综合实例的实现过程,介绍了Python
3语言在综合项目中的使用流程。全书内容循序渐进,以“技术解惑”和“范例演练”贯穿全书,引领读者全面掌握Python 3语言。

书中共有900多个实例和范例、300多个正文实例、600多个拓展范例、77个课后练习、63个技术解惑、两大综合案例,每个知识点除了一个实例外,还有两个拓展范例,达到举一反三的效果。

2.《易学Python 》

《易学Python》采用简洁、有趣、易学的方式对Python 3编程语言进行了讲解,其风格与通篇介绍编程特性、罗列语言功能的大多数编程图书不同,而是引导读者带着好奇,带着问题去学习、掌握Python编程语言,继而编写真实而有用的程序。

无尘茄论你是零基础的Python初学人员,还让此是具有其他语言编程经验,但是想从事Python开发的人员,《易学Python》都将带领你踏上有趣的Python学习之路。

3.《Python核心编程(第3版)》

畅销经典的Python书,兼顾Python2和Python3,Python开发人员的案头常备。本书涵盖了成为一名技术全面的Python开发人员所需的一切内容。本书讲解了应用派滑察开发相关的多个领域,而且书中的内容可以立即应用到项目开发中。此外,本书还包含了一些使用Python
2和Python 3编写的代码案例,以及一些代码移植技巧。有些代码片段甚至无须修改就可以运行在Python 2.x或Python 3.x上。

4.《趣学Python编程》

Python是一种强大并通俗易懂的编程语言,而且它易学又好用!但是关于学习Python语言的书大多很枯燥无趣,读起来没什么乐趣。本书把你带入一个鲜活的Python编程世界。每章后面都配有编程练习来帮助训练思维并加强理解。

对于Python开发有兴趣的小伙伴们,不妨先从看看Python开发书籍开始入门!B站上有很多的Python教学视频,从基础到高级的都有,还挺不错的,知识点讲得很细致,还有完整版的学习路线图。也可以自己去看看,下载学习试试。

热点内容
cgipython配置 发布:2024-05-20 09:29:06 浏览:865
在我的世界服务器中隐身 发布:2024-05-20 09:07:46 浏览:972
加西贝拉压缩机好吗 发布:2024-05-20 08:58:56 浏览:757
eve脚本航 发布:2024-05-20 08:56:59 浏览:591
取票人的密码是什么 发布:2024-05-20 08:21:43 浏览:963
天猫帐号密码应输入什么 发布:2024-05-20 08:16:26 浏览:272
plsql异常处理 发布:2024-05-20 07:54:47 浏览:542
dreamweaver上传网页 发布:2024-05-20 07:51:24 浏览:462
拍摄车的分镜头脚本 发布:2024-05-20 07:50:15 浏览:137
mg名爵最高配置是哪个 发布:2024-05-20 07:45:11 浏览:376