有人和我一样觉得 Python 入门容易,深入却很难?

2015-07-24 22:57:09 +08:00
 mianju

我先学的是C,后来学了点C++。最近学Python,看完简明Python,感觉很容易,可是看廖雪峰的教程,有些技巧性的东西就觉得不是很好理解。
比如

f1, f2, f3 = [(lambda i = i: i * i) for i in range(1, 4)]

可能是C语言的思维比较深入,对于Python的一些地方就容易转不过弯来。有没有大牛也是先学C然后学Python的?能分享点学习经验么> <感激不尽

13809 次点击
所在节点    Python
80 条回复
wingyiu
2015-07-25 17:05:02 +08:00
那些觉得py简单的来讲讲yield
chengzhoukun
2015-07-25 17:15:41 +08:00
@wingyiu yield不算复杂吧
baichi
2015-07-25 19:07:35 +08:00
Draplater
2015-07-25 19:39:45 +08:00
感觉这段写得不好,lambda的参数循环的变量都用i,容易混淆
这样写好一些
[(lambda x=i: x * x) for i in range(1, 4)]
unity0703
2015-07-25 20:17:26 +08:00
@mianju CSAPP也是本好书,不过是关于计算机体系结构的,这本书侧重点在于理解计算机如何运作,但和楼主提到的lambda表达式关系不大,想理解编程语言的话,还是读SICP(计算机程序的构造和解释)吧,这本书全是Lisp代码,看完以后你对程序的理解会大幅提高,引用知乎的回答( http://www.zhihu.com/question/19931095 ):学 Lisp 付出和获得不成正比,是指数比
kamushin
2015-07-26 03:23:50 +08:00
@wingyiu 没用过异常处理吗?我觉得yield和异常处理是一回事情啊。都是setjump嘛。
bramblex
2015-07-26 08:56:03 +08:00
@unity0703 还是更喜欢Haskell,Haskell更美,我是一个颜控
airqj
2015-07-26 09:41:19 +08:00
C 熟悉了python就是个脚本....
lambda 是FP的东西,可以先去看一下
wingyiu
2015-07-26 10:37:47 +08:00
@baichi 这我看过 跟没讲一样
Taojun0714
2015-07-27 05:09:54 +08:00
去学一下函数式编程吧,SICP,Haskell的也行,你都知道都是最简单的东西
Taojun0714
2015-07-27 06:53:35 +08:00
@unity0703 现在可以直接看新的python版的SICP,我觉得楼主如果能读得懂英语文档,第一章看完就没这个问题了
duobei
2015-07-27 09:23:13 +08:00
我也遇到了同样的问题,一开始就是那样,然后心里特别着急想一下子全部吃透,稍后发现,先用着熟悉的,然后慢慢熟悉就自然而然的会了。
hitmanx
2015-07-27 12:29:35 +08:00
@unity0703 多谢推荐!我觉得有一点很难的是怎么样说服一个没学过函数式编程的人去进行尝试,我看到的回答都是形如,“你只要学过lisp就会发现.....”这种前提是学之前所不具备的。又或者例如"lisp比某某语言好在.....",这儿往往给出的理由是很形而上、很高屋建瓴的层面。我不知道有没有人写过一些非常精简、易懂的例子,能明显地告诉你同样的功能,在比如c\c++之类的语言里实现会怎么样写,需要多少倍的功夫和小心避免各种问题等等,而在lisp里又是能如何优雅地解决。
hitmanx
2015-07-27 12:39:07 +08:00
@mianju Hi,我也不太了解python,不过我也碰到过类似你这个问题,就是初看c++11标准的代码时,对于里面的lambda等等各种新feature看着很别扭,觉得这不是我熟悉的语言了。所以我相信你可能也是对于这些新标准不太熟。

我的意思是尽管你可能很熟悉c\c++,但是你熟悉的是c\c++旧的标准,现在新的标准也都在向其他语言借鉴,互相之间的差距也都在缩小,如果你完全理解了c++11中的lambda搭配比如比如新的for写法,我觉得再理解这儿的python就容易多了
mianju
2015-07-27 14:34:03 +08:00
@hitmanx 谢谢
Feiox
2015-07-29 09:57:01 +08:00
@happlex Python 和 C 是工程语言里的杰作。不完美但巨实用 ~ 大爱,对了,再带上 Rust ~
Feiox
2015-07-29 09:58:19 +08:00
@felixzhu 同感。这些是能说是入门中的入门,LZ 可能还没接触过 元类 这种东西。。。
lidiya
2015-07-29 17:55:54 +08:00
建议你再学一遍C语言 然后看下这个教程 http://www.maiziedu.com/course/python/
Fing
2015-08-04 15:28:19 +08:00
我的感觉跟你相反,但是对于我而已却多了一条:python找工作难。
cary7
2015-08-07 10:34:03 +08:00
说点实在东西吧,理解不了的时候就去跑一遍代码,还理解不了就再跑。多print,多修改参数,对比结果值。之前看不懂的时候,就是这么学过来的。笨办法,但是很有用

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

https://tanronggui.xyz/t/208163

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

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

© 2021 V2EX