有一定的其他语言编程经验,应该如何学习 python?

2015-07-11 14:31:33 +08:00
 fydpfg
我对C、C++、VB很熟悉,对C#、php、Mathematica比较熟悉,对Haskell、java、lua等有一定的了解。

现在准备学习python,在网上查了一些推荐的书籍,并没有感觉看上去就挺喜欢的。

我学C看的K&R的《C程序设计语言》,里面对语法的解释很详细,很多人觉得好的其他入门书我反而很讨厌。C++我看的《C++ Primer》,C#看的《C#入门经典》

我学习python主要是自己兴趣,我觉得python能让我平时更方便的用编程解决问题,而不用在意底层的细节。python库也很多。

我不希望书中介绍判断循环函数类什么的,然后让我像用C++那样用python。如果这样的话C++就够了。我希望很快学到一些python中有特点的东西,能够方便用编程解决问题。

还有我不喜欢从代码中自己推断语法的方式,我需要严格定义的语法,还想知道一些python和其他语言的不同之处(比如函数是传值还是传址这种问题),还有python编写大型程序的规范(就像C语言哪些东西应该放在头文件里这种)

我也刷过一部分codecademy上的python教程,总是感觉用几个小时学判断和循环的用法,学不到什么python的特性。

大家有没有什么推荐的学习方法和书籍?谢谢!
3067 次点击
所在节点    Python
12 条回复
loading
2015-07-11 14:40:59 +08:00
别老说什么特性,对着写个东西出来,这不是考试!
powergx
2015-07-11 14:44:32 +08:00
python 好简单我看了一天语法什么,第二天就开始做后台项目了。 一个月后完工
hahasong
2015-07-11 14:48:43 +08:00
python好简单,我花了1天扫了一遍官方的2.7文档,感觉什么都知道了。然并卵只能写一个简单的类,然后一个多星期没碰,擦。元组是啥,utf8怎么编解码,循环语法是什么。。全忘了
lijianying10
2015-07-11 14:48:56 +08:00
没有人能比Python作者更了解Python
没有人能比Python坐着更懂Python的特性。
所以还是看Manual吧,祝你好运。

也许你想接触更多的语言,学习更多的计算机技能,但是你的下一步更多的是应该研究你以后想解决什么样的问题,毕竟语言知识工具,解决问题才是目的。

参考链接提供:
https://docs.python.org/3/tutorial/index.html
https://docs.python.org/3/
最后希望能帮到你。
yech1990
2015-07-11 15:06:54 +08:00
买了一本 Python高级编程 反正没怎么看懂。有底层的东西,应该适合楼主的需求。 网上的资料确实只能是用来入门,不可能有深入的东西
chengzhoukun
2015-07-11 15:15:53 +08:00
看看官方文档,刷刷算法题,学几个web 框架,
再看看再看看那些高性能网络库和框架(gevent, twisted, Toronto)。
然后学学数据处理、数据挖掘啥的
这些应该差不多了
再往深入学就要学其他东西了吧,比如Python解释器的实现,各种源码分析、深入学习机器学习算法
em70
2015-07-11 15:29:42 +08:00
先语法入门,然后实践,实践,实践.遇到问题再去翻书或google.

python程序很多时候是为自己写的,减少自己的工作量,比如我有10000个文档需要从里面提取指定内容,没有什么软件能满足我这个特定需求,其他语言也可以写,但太麻烦了. 如果python写,20行代码搞定.

最常见的python练习是写一个爬虫
tanteng
2015-07-11 20:54:46 +08:00
有个网站,php2python,它上面有php函数对应的python的函数或实现方式,挺有用的。http://www.php2python.com
ChangxuBlack
2015-07-12 01:26:00 +08:00
用Python的思维习惯和C++会有一些不同,这也就是国外论坛里讲的不够Pythonic。。。这东西么,多看多写,积累经验就好了。
举个例子,比如做一个10以内整数的立方的列表,学C的人习惯这么写:
a = []
for i in range(1,10):
a.append(i**3)
而所谓Pythonic的写法是:
a = [i**3 for i in range(1,10]

再比如,将3个字符串转换为整数,学C的人习惯这么写:
strs = ['123', '456', '789']
numbers = []
for str in strs:
numbers.append(int(str))
而所谓Pythonic的写法是:
numbers = map(int, strs)

虽然很多人觉得这是语法糖,多几行少几行无所谓,但实际上对Python来讲不同的写法会导致不同的运行效率,上面两个例子中Pythonic的写法会比for循环快很多很多。。。所以我感觉学Python主要是在学这些东西,而不仅仅是和C语法的一一对应
mingyun
2015-07-12 10:07:51 +08:00
@tanteng 还有个phpjs,有意思
MrEggNoodle
2015-07-12 10:38:10 +08:00
http://www.liaoxuefeng.com
这个Blog的建议教程应该够你用了~
jack139
2015-07-23 14:33:14 +08:00
dive into python

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/204959

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX