摘要:本文主要向大家介绍了学Python语言的理由竟然这么理直气壮,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。
本文主要向大家介绍了学Python语言的理由竟然这么理直气壮,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。
第一次接触 Python 是在一节编程入门课上。其实,在此之前了解过它,所以在上课之前我对它的语法已经很熟悉了,但在上课之前我没有用它做过真正的项目。尽管对它没有太大兴趣,但我认为把它介绍给人们去学习编程还是很好的。我对它不是不喜欢,而是一种“无所谓”的态度。原因很简单:它里面有太多“魔法”。 C 和 Java 这些语言,对底层的行为描述的很清晰,Python 则完全相反。
另外,Python 结构松散:写大型复杂程序时,遇到规则严谨的程序结构体(比如每个文件一个公共类),比其他语言(比如 Java )要费些力气。但是,在这些方面 Python 给了你很大的自由。
另一件事是严格的编码风格和调试:因为Python 是解释型语言,查找问题不太容易:如果C 语言有语法错误,编译器会直接停止编译,但在解释型语言中,直到执行到问题行,问题才会被发现。试着在需要整数的时候传一个字符串?cc 会马上提醒你,Python 解释器却对此一点都不介意(虽然有工具可以发现这个问题,比如 mypy,但我讨论的是通用的Python)。我提到的这些问题是解释型语言的通病,并非 Python 独有,但这些是我不喜欢它的主要原因。
还有一个烦人的问题是强制缩进。我们老师(很优秀)认为这是好事情,因为“它强制我们形成简洁的代码风格”。确实如此,但还是有点烦,当代码没有按预期执行时,你分析代码想要找出 bug,它却无影无踪,过了很长时间之后你发现 if 语句那一行有一个多余的空格。
我曾经和同事聊过 Python,告诉他为什么我之前对这个语言不感冒,他笑着问我“问什么不喜欢Python呢?因为它读起来很像英语?”。是的。因为这个语言做了很多底层的工作,有时候会不清楚发生了什么。举个读文件的例子,假设你想一行一行读取文件内容并打印出来。C 会这么做:
C
#include <stdio>
int main(void) {
FILE *fp;
char buff[256]; // assuming a line won't contain more than 256 chars
fp = fopen("hello.txt", "r");
while(fgets(buff, 256, fp)) {
printf("%s", buff);
}
fclose(fp);
return 0;
}
python 这么做:
Python
with open('hello.txt') as f:
for line in f:
print(line)
现在,很多人会认为这是 python 的优势,然而,第一个例子中,干了什么一目了然:
· 获取一个文件指针
· 从文件读取每一行数据到缓存中,打印缓存中的内容
· 关闭文件流
python 的例子中看不到这些,它是一种 “魔法般的”过程。现在,有人认为这是好事,因为将程序员与底层实现细节隔离(我同意这个说法),但我想知道到底发生了什么。
有趣的是,我以上提到的缺点,我现在认为都是优点。为了公平起见,我强调,Python 里边没有魔法,如果你多了解一点,你会发现真的没有,有的只是语言解释代码的方式,从这点来看,我发现它挺有意思的。如果你也这么觉得,我建议你深入了解它的工作机制,如果有东西像魔法,就找出来到底发生了什么,事情就会变得清晰,魔法就变成了便利。
我的认识发生很大的变化,尤其是我决定使用 Python 后,事实上我现在是 Python 的死忠!现在你也许会想我将会在哪里说服你学 Python 是个好主意,不要担心,马上就到。作为引言的结尾,我想说明,这只是我对这个语言的个人感受,只是个人偏好。我没有试图以“如果你用 Python,你就不是真正的程序员(实际上,我不这么认为)”的理由劝说人们学 C。当有人问我他们的入门语言应该选哪个,我通常建议他们选 Python,基于我上边提到的“缺点”的原因。我的感觉来源于我的兴趣,我曾经在做一些很底层的东西,你能想到,Python 并不适用。
以上就介绍了Python的相关知识,希望对Python有兴趣的朋友有所帮助。了解更多内容,请关注职坐标编程语言Python频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号