有人和我一样觉得 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的?能分享点学习经验么> <感激不尽

13775 次点击
所在节点    Python
80 条回复
zhicheng
2015-07-24 23:00:14 +08:00
所以你C必然也是学的一塌糊涂。
townboy
2015-07-24 23:02:28 +08:00
@zhicheng 哟 让我膜拜一下
hebwjb
2015-07-24 23:07:53 +08:00
理解这个应该跟先学什么没关系~
pythonee
2015-07-24 23:07:57 +08:00
有,我就是
imlonghao
2015-07-24 23:09:15 +08:00
这觉得挺基础的,慢慢分析即可!

[i for i in range(3)] 列表解析

lambda 匿名函数
crazyxin1988
2015-07-24 23:10:13 +08:00
熟能生巧
慢慢来 把基础语法学好了 就看懂了
hahasong
2015-07-24 23:11:28 +08:00
没有,基本语法而已,不看文档的么
Sabermadao
2015-07-24 23:11:31 +08:00
代码撸多了就自然而然了
matthewz
2015-07-24 23:11:34 +08:00
python 里有很多语法糖而已 C 里则根本没有.

简单的说 python 是预置了各种颜色的水彩颜料, 我记得有的套装里有好几百种颜色.

而 C 只有三原色+白色, 想要什么颜色自己混合去吧.


比如说匿名函数吧, C 不用匿名函数也能实现类似的结果, 但是会麻烦一些而已, 没有现成的东西一步到位.
matthewz
2015-07-24 23:13:37 +08:00
为什么你觉得 C 简单? 我猜是因为你没做过什么复杂的项目, C 的语法本身很简单
standin000
2015-07-24 23:19:52 +08:00
学点lisp就好理解lambda了
kevinreadonly
2015-07-24 23:21:20 +08:00
也在学 python,试答一下。

for i in range(1, 4) 是一个for循环,等价于c的 for(i=1;i++;i<4) { }
用中括号括起来,这个在 python 里叫“列表生成器”,是一种比较快捷的生成列表的方法,没啥能理解不能理解的说话,记住可以这样用就行。

lambda 是一种匿名函数
lambda i: i * i 等价于def f(i): i = i * i ,(你的 lambda 里面有个i = i : i * i ,这点我也看不懂)

前面for循环产生了三个函数,列表生成器生成一个有三个函数的列表。
最后,就是把列表中的三个元素按顺序分别复制给 f1, f2, f3 ,同样不用知道为什么,只要记住python可以这样用就行了。


我是前面学后面忘,刚才专门去查了廖教程,个人认为不必纠结于细节,我已经开始看 flask web 那本书了,用的同样是“死记硬背”大法,先学会怎么用,至于各种原理以后再搞。

一家之言,轻拍。
deanguqiang
2015-07-24 23:32:07 +08:00
@kevinreadonly
lambda i = i: i * i 是一个带默认参数的匿名函数,等价于 def f(i = i): return i*i
所以f1 f2 f3 是三个一样的函数,除了默认参数分别为1 2 3.
imn1
2015-07-24 23:32:30 +08:00
以入门的情况看,我是最难理解为什么这样写

a = [['aa', 'bb'], ['cc', 'dd']]
[x for y in a for x in y]

一直以为是从里层往外层写
leavic
2015-07-24 23:33:28 +08:00
80后大部分都是到大学开始学C作为第一门语言的(我们高中都没什么机会碰到电脑,有也很少是拿来学习的),我到现在都觉得C是语言的根基,会C可以让你快速学会其他语言,而不是成为阻碍。
sivacohan
2015-07-24 23:37:14 +08:00
如果你理解的深入和我理解的一致的话。
后面你还得撸一遍C。
batstying
2015-07-24 23:40:45 +08:00
都是大牛啊,我也看不懂~,看不懂没关系啊,查啊,感觉python封装好了很多东西,反正具体又不用自己实现,类似于调api,遇到不懂就查,又不丢人。
ChangxuBlack
2015-07-24 23:42:10 +08:00
我觉得不难啊,可能是学的太少吧。。。坚持下去,多学点就好了
leemw
2015-07-24 23:57:24 +08:00
vb -> asp -> pascal -> c -> vba -> java -> c -> php -> matlab -> r
我是这个流程,感觉很苦逼,最近因为D.S.方面r不够的地方大家普遍用python,所以也在学python。。。觉得看廖雪峰的东西坚持不下去,求其他高招。。。
aheadlead
2015-07-25 00:05:44 +08:00
支持LZ

我更觉得很多东西深入都很难 就连易语言也是(别喷我……)

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

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

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

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

© 2021 V2EX