返回信息流我觉得Python的设计很精简,太精简了,以至于很多实用的特性都没有。
我先说吧,Ruby风格的block很可读,可惜Python没有。
[1,2,3,4,5].collect{|x| x * 2}.each do |y|
puts y
end
File.open("blah blah") do |f|
puts f.read
end # 自动关掉
HTTPServer.get("/foo/bar/{1}/{2}") do |req|
Response.new(404, "<h1>Sorry</h1><p>Page not found</p>")
end
这是一条镜像帖。来源:北邮人论坛 / python / #7518同步于 2015/6/15
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖
[抛砖引玉]你觉得Python缺少什么语言特性吗?
nuanyangyang
2015/6/15镜像同步26 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 dss886 的大作中提到: 】
: 注解?我觉得Java的注解方便的一笔啊
Annotation? Python有啊
def my_annotation(f):
print("You annotated a function", f.__name__)
return f
@my_annotation
def foo():
print("Hello world")
class Bar:
@classmethod
def make_bar(cls):
return Bar()
b = Bar.make_bar()
ruby比较魔幻,各种元编程和语法糖,写起来嗨的飞起。
python相对来说死板的多,连missing_method都没有,但是性能比ruby好不少。
另外,python不是纯OO的,比如len(x)而不是x.length,但绝大多数的库又是OO的,这样写起来让人觉得精神分裂
不过最后写惯了倒觉得无所谓了,哪个语言有对应需求的库就用那个语言,都有就用ruby,写的嗨,纯OO。
【 在 glazard 的大作中提到: 】
: 用惯了node的感觉就是python的匿名函数实在太弱了,还是说python刻意限制了这种特性?
我觉得Python只是想简单。不过Python的lambda真的很弱。好在Python的list/set/dict comprehension还有generator expression很好用。
【 在 lizz 的大作中提到: 】
: ruby比较魔幻,各种元编程和语法糖,写起来嗨的飞起。
: python相对来说死板的多,连missing_method都没有,但是性能比ruby好不少。
: 另外,python不是纯OO的,比如len(x)而不是x.length,但绝大多数的库又是OO的,这样写起来让人觉得精神分裂
: ...................
我觉得Python一点都不面向对象,更像是函数式语言。比如",".join(map(len, [[1,2,3], [4,5], [6,7,8,9]])),但偏偏字符串切分是"abc def".split(),文件读取是f.read(),读取文件然后计算长度是len(f.read())
Ruby更面向对象。同样的东西就是[[1,2,3],[4,5],[6,7,8,9]].collect{|x| x.length}.join(","),而字符串切分也是"abc def".split,文件读取也是f.read,计算文件长度是f.read.length
Ruby一点都不像函数式语言。函数是二等公民: f = lambda {|x| x+1},调用函数竟然要f.call(4)而不是f(4)
- -!好吧……学艺不精
【 在 nuanyangyang 的大作中提到: 】
:
: Annotation? Python有啊
: [code=python]
: ...................
来自「北邮人论坛手机版」