当前位置:首页 » 编程语言 » python学习感想

python学习感想

发布时间: 2022-03-06 01:21:06

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

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

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

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

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

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

‘贰’ 初学python,感受和C的不同 / 蓝讯

和C不一样,Python是一种动态类型语言,又是强类型语言。这个分类怎么理解呢?大概是可以按照下列说明来分类的:
静态类型语言
一种在编译期间就确定数据类型的语言。大多数静态类型语言是通过要求在使用任一变量之前声明其数据类型来保证这一点的。Java和 C 是静态类型语言。
动态类型语言
一种在运行期间才去确定数据类型的语言,与静态类型相反。Python 是动态类型的,因为它们确定一个变量的类型是在您第一次给它赋值的时候。
强类型语言
一种总是强制类型定义的语言。Java 和 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课程怎么样有没有学完的小伙伴来聊聊感想呗。

我现在就正在学风变python课程,我上完感觉还挺好的,是很有意思的一种编程课,以前真的没想到编程还能用这种轻松有趣的方式来学习,我觉得接受起来不困难,完全能学懂。风变python课程的助教老师我感觉也挺好,没有弄懂的地方,或者是课后遇到什么问题,助教老师都会耐心地帮你解答。

‘伍’ python编程的第一步感想是什么

当然,我们可以使用 Python 完成比二加二更复杂的任务。例如,我们可以写一个生成 菲波那契 子序列的程序,如下所示:
>>> # Fibonacci series:
... # the sum of two elements defines the next
... a, b = 0, 1
>>> while b < 10:
... print(b)
... a, b = b, a+b
这个例子介绍了几个新功能。
第一行包括了一个 多重赋值:变量 a 和 b 同时获得了新的值 0 和 1 最后一行又使用了一次。
在这个演示中,变量赋值前,右边首先完成计算。右边的表达式从左到右计算。
条件(这里是 b < 10 )为 true 时, while 循环执行。在 Python 中,类似于 C,任何非零整数都是 true;0 是 false。条件也可以是字符串或列表,实际上可以是任何序列;
所有长度不为零的是 true,空序列是 false。示例中的测试是一个简单的比较。标准比较操作符与 C 相同: < , > , == , <=, >= 和 !=。
循环 体 是 缩进 的:缩进是 Python 组织语句的方法。Python (还)不提供集成的行编辑功能,所以你要为每一个缩进行输入 TAB 或空格。
实践中建议你找个文本编辑来录入复杂的 Python 程序,大多数文本编辑器提供自动缩进。交互式录入复合语句时,必须在最后输入一个空行来标识结束(因为解释器没办法猜测你输入的哪一行是最后一行),需要 注意的是同一个语句块中的每一行必须缩进同样数量的空白。
关键字 print() 语句输出给定表达式的值。它控制多个表达式和字符串输出为你想要字符串(就像我们在前面计算器的例子中那样)。
字符串打印时不用引号包围,每两个子项之间插入空间,所以你可以把格式弄得很漂亮,像这样:

‘陆’ 想找一份Python学习心得

你是想找什么样的学习心得呢,是毕业了还是想从中找些学习经验呢,这个你可以去千锋的技术论坛看一下。上面很多学员感言,学员故事啥的。并且还有技术教程和视频资源,都可以的。

‘柒’ 学python和学C语言的感受有什么不同

好吧。

1、python是个怪物。用了10年了,感觉它与其它语言不太一样。所以C语言是必学的。 python语言有些特别。如果同时学可能混淆。 如果你时间不足够,两个同时学也没有大问题。

2、不过最好还是先学习C语言。把它学成优秀,然后紧接着再学习python。

3、C语言学习并不会花多长时间。我曾经教一个没有一点编程基础的女生4天,最多一个星期就掌握C语言。并且能够用C语言设计程序了。

4、当然要掌握好C语言还需要大背的记忆 ,以及练习。上机练习时间不少于30小时。

5、会了C后再学python会明显容易。不过python太自由了。 如果你一开始学习python会觉着很容易,再学习C,就会觉着C好难。

6、如果你认真学习,我个人认为c语言甚至比python还要简单。

‘捌’ C语言R语言Python一起学是什么感受

我试过Java,Python,go三门同时一起学,在学习算法的时候都没有太大的问题,在具体练习编码的时候经常发生语法的混乱,个人建议还是一门一门的学习,同时学很容易造成语法的混乱

‘玖’ 读《我为什么从python转向go》的一些感受

不懂Python不要乱喷啊。你直接说“我不懂Python,我也不愿意维护前任写的糟糕代码,我Go牛B,所以我要重构一遍!”

我觉得go不错,但是如果不是特定领域开发,没有足够多成熟稳定的库仍然很麻烦的事情。

python虽然很强大,但我们在使用的时候也碰到了一些问题,主要由如下几个方面:

动态语言

python是一门动态强类型语言。但是,仍然可能出现int + string这样的运行时错误,因为对于一个变量,在写代码的时候,我们有时候很容易就忘记这个变量到底是啥类型的了(点评: 真的很少遇到, 每个函数的参数类型都有约定, 所以根本不会记不得)。

在python里面,可以允许同名函数的出现,后一个函数会覆盖前一个函数,有一次我们系统一个很严重的错误就是因为这个导致的。(点评:遇到过,不过这也是不遵循约定导致的,命名不规范的缘故,在不同模块采用相同的名称是可以的,另外这个问题在静态语言里也有啊,你链接到一个错误的库上。 在运行时用后一个函数会覆盖前一个函数,这也正是monkey patch存在的基础。虽然我觉得如果在语言层面上对用户可以对变量的类型进行显式声明的约束很有用)

上面说到的这些,静态语言在编译的时候就能帮我们检测出来,而不需要等到运行时出问题才知道。虽然我们有很完善的测试用例,但总有case遗漏的情况。所以每次出现运行时错误,我心里都想着如果能在编译的时候就发现该多好。(点评: 有了编译时检查运行时就不出错了么? 难道代码写完了就完了么? 差不多每次添加功能或者调试的时候,读到感觉写的不好或者写的不清楚的,都要做些清理,毕竟人对于所使用的库或者语言的理解是逐步深入的。)


性能

其实这个一直是很多人吐槽python的地方,但python有它适合干的事情,硬是要用python进行一些高性能模块的开发,那也有点难为它了。

python的GIL导致无法真正的多线程,大家可能会说我用多进程不就完了。但如果一些计算需要涉及到多进程交互,进程之间的通讯开销也是不得不考虑的。

无状态的分布式处理使用多进程很方便,譬如处理http请求,我们就是在nginx后面挂载了200多个django server来处理http的,但这么多个进程自然导致整体机器负载偏高。

但即使我们使用了多个django进程来处理http请求,对于一些超大量请求,python仍然处理不过来。所以我们使用openresty,将高频次的http请求使用lua来实现。可这样又导致使用两种开发语言,而且一些逻辑还得写两份不同的代码。(点评:不用django,没有发言权,不过高频的请求可以用Cython优化,现在的Cython已经比2013年的时候方便多了。。。)


同步网络模型

django的网络是同步阻塞的,也就是说,如果我们需要访问外部的一个服务,在等待结果返回这段时间,django不能处理任何其他的逻辑(当然,多线程的除外)。如果访问外部服务需要很长时间,那就意味着我们的整个服务几乎在很长一段时间完全不可用。

为了解决这个问题,我们只能不断的多开django进程,同时需要保证所有服务都能快速的处理响应,但想想这其实是一件很不靠谱的事情。


异步网络模型

tornado的网络模型是异步的,这意味着它不会出现django那样因为外部服务不可用导致这个服务无法响应的问题。话说,比起django,我可是非常喜欢tornado的,小巧简单,以前还写过几篇深入剖析tornado的文章了。虽然tornado是异步的,但是python的mysql库都不支持异步,这也就意味着如果我们在tornado里面访问数据库,我们仍然可能面临因为数据库问题造成的整个服务不可用。(点评:历史原因,几乎所有Python的标准库都是同步的,)

其实异步模型最大的问题在于代码逻辑的割裂,因为是事件触发的,所以我们都是通过callback进行相关处理,于是代码里面就经常出现干一件事情,传一个callback,然后callback里面又传callback的情况,这样的结果就是整个代码逻辑非常混乱。python没有原生的协程支持,虽然可以通过gevent,greenlet这种的上patch方式来支持协程,但毕竟更改了python源码。另外,python的yield也可以进行简单的协程模拟,但毕竟不能跨堆栈,局限性很大,不知道3.x的版本有没有改进。(点评: Python3.4引入asyncio,Python3.5引入的async和await,就算使用Twisted,也不会一堆callback啊。有没有搞错?不清楚跨堆栈)


开发运维部署

当我第一次使用python开发项目,我是没成功安装上项目需要的包的,光安装成功mysql库就弄了很久。后来,是一位同事将他整个python目录打包给我用,我才能正常的将项目跑起来。话说,现在有了docker,是多么让人幸福的一件事情。(点评: 没有用过虚拟Python环境?virtualenv,python直接调用mysql connector,怎么会装一堆库?不明所以)

而部署python服务的时候,我们需要在服务器上面安装一堆的包,光是这一点就让人很麻烦,虽然可以通过puppet,salt这些自动化工具解决部署问题,但相比而言,静态编译语言只用扔一个二进制文件,可就方便太多了。( 点评:测试环境就是开发环境,你确定静态编译的不解决好依赖在别的机子上面就能跑?)


代码失控

python非常灵活简单,写c几十行代码才能搞定的功能,python一行代码没准就能解决。但是太简单,反而导致很多同学无法对代码进行深层次的思考,对整个架构进行细致的考量。来了一个需求,啪啪啪,键盘敲完开速实现,结果就是代码越来越混乱,最终导致了整个项目代码失控。

虽然这也有我们自身的原因,譬如没好的代码review机制,没有好的项目规范,但个人感觉,如果一个程序员没经过良好的编码训练,用python很容易就写出烂的代码,因为太自由了。

当然,我这里并不是说用python无法进行大型项目的开发,豆瓣,dropbox都是很好的例子,只是在我们项目中,我们的python代码失控了。(点评:好像没有听说用了那种语言代码就不失控了,这根本就是拒绝小步重构,代码模块化差,模块耦合度高等等一系列问题导致的,Python的实现代码少,反而能够有精力进行持续的快速改进。。)

上面提到的都是我们在实际项目中使用python遇到的问题,虽然最终都解决了,但是让我愈发的觉得,随着项目复杂度的增大,流量性能压力的增大,python并不是一个很好的选择。


(点评: Python存在问题吗? 当然也有很多,比如

* 配套的异步库太少且缺乏维护。

* 不能限制变量的类型(虽然有Python3.5的type hints,但是和注释没啥区别)

* 本身的计算性能比V8引擎的JavaScript要差很多(可以借助C)

‘拾’ 风变编程python课学习后的效果怎么样,有没有听过课的朋友说说具体的感受

最近一直在学习风变编程,个人感觉学习的效果还是比较好的,虽然我没有学习过编程,属于毫无基础的那一类人,但是听完不少课程之后,没有出乎意料的枯燥感,许多困难的语法都在老师的质量讲述下化繁为简,而且还有配属助教,遇到不懂的问题,助教都会第一时间进行耐心解答,期待后续学习完成后的成效。

热点内容
win7的缓存文件夹 发布:2025-01-12 23:32:12 浏览:954
安卓哪个文件锁好 发布:2025-01-12 23:31:23 浏览:325
怎么让安卓用苹果耳机有弹窗 发布:2025-01-12 23:30:34 浏览:958
oracle存储过程有返回值 发布:2025-01-12 23:30:34 浏览:7
用友服务器怎样同步ip 发布:2025-01-12 23:29:52 浏览:979
qt编译vlcqt库 发布:2025-01-12 23:24:45 浏览:244
攻击linux服务器 发布:2025-01-12 23:17:01 浏览:6
天籁哪个配置亲民 发布:2025-01-12 23:16:26 浏览:482
零售通交易密码是什么 发布:2025-01-12 23:13:02 浏览:319
监控器压缩 发布:2025-01-12 22:51:29 浏览:248