Python Ruby 程序员如何理解 Python 中的一些概念

jasonliu · 2015年11月12日 · 最后由 jasonliu 回复于 2015年11月20日 · 4606 次阅读

不知道社区里面有没有做过 python 的小伙伴,最近转 python,本来以为 ruby 转 python 会比较容易,但实际操作起来还是遇到了一些困难,有些概念理解不是很清楚,例如:

  1. python 的装饰器。我发现装饰器在 python 中应用的非常之广泛,类方法都要通过装饰器实现,这让我感觉很奇怪,个人觉得装饰器就是在执行函数之前去执行装饰器中的代码,不太理解 python 中为什么会用这么多。

  2. 静态方法和类方法。ruby 中静态方法和类方法是等价的,但是 python 中二者的概念却不一样,不知道为什么要这样设计?

希望有经验的大牛可以指点一下,非常感谢!

共收到 12 条回复

1.alias around(别名环绕) 可以这么理解么

没怎么认真写过 Python,不过我觉得 Python 最好的对比语言是 JavaScript 。除了函数可以直接引用这点外,我学 JavaScript 的 iterator & generator 和 decorator 都是找资料找到 Python 里去了。

我是这样理解的: 1.装饰器,不止在执行函数之前,之后也可以,还可以干其他的事情,其实不用太纠结这个事情的,一般自己写装饰器的机会不太多。 2.静态方法和类方法的差别,执行类方法是需要类实例的,静态方法不需要创建实例。当然静态方法都可以写成类方法,不用那个 self 就是了,

python 中有静态方法的原因是有些操作与类和对象没有关系,这种设计可能是与 python 不是完全面向对象相关的,python 并不要求我们按照面向对象编程,我们也可以面向过程或者函数式编程

装饰器给我的感觉就是 aop, 改变原生方法的行为. 跟 ruby 的 alias_around 有异曲同工之妙.

py 跟 rb 的差异还是很大, 对函数式支持很好, 这点很类似 js. 实际上手, 这编程体验跟 rb 太多不一样 (我之前没感觉, 以为可以无缝转换)

看着 __name__ __main__ __init__ __contains__ __getitem__ 就是不舒服, 浑身抓痒.

最近在撸 django 囧囧囧

我是这么理解的:

  1. 装饰器是为了 AOP,对类似的函数统一做处理。Ruby 里面的 alias 和 mixin 也是为了完成类似的事。
  2. 可以参考下这篇文章。感觉静态方法就是放在类里面的函数。

@hammer 哈哈,和你感觉差不多啊

#8 楼 @jasonliu 好奇为啥转 Python 了?

@fighterleslie 因为工作需要,不过我依然深爱 ruby

做后台数据处理和分析 ruby 和 python 哪个更适合?

虽然我没有做过数据处理分析,但是个人觉得数据处理 python 比 ruby 要好些,并不是语言层面的,而是因为 python 在数据处理和分析方面的生态比 ruby 更好

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册