a*****e 发帖数: 1700 | 1 比如 comprehension!
Python 3.6.3 (default, Oct 3 2017, 07:47:49)
[GCC 6.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> foo=[1,2,3]
>>> bar=(item for item in foo if foo.count(item) > 0)
>>> foo=[2,4,6]
>>> list(bar)
[2] |
T*******x 发帖数: 8565 | 2 这个结果挺奇怪。这个说明了什么?
【在 a*****e 的大作中提到】 : 比如 comprehension! : Python 3.6.3 (default, Oct 3 2017, 07:47:49) : [GCC 6.4.0] on linux : Type "help", "copyright", "credits" or "license" for more information. : >>> foo=[1,2,3] : >>> bar=(item for item in foo if foo.count(item) > 0) : >>> foo=[2,4,6] : >>> list(bar) : [2]
|
s*****V 发帖数: 21731 | 3 当然都是Python 借来的
【在 a*****e 的大作中提到】 : 比如 comprehension! : Python 3.6.3 (default, Oct 3 2017, 07:47:49) : [GCC 6.4.0] on linux : Type "help", "copyright", "credits" or "license" for more information. : >>> foo=[1,2,3] : >>> bar=(item for item in foo if foo.count(item) > 0) : >>> foo=[2,4,6] : >>> list(bar) : [2]
|
a*****e 发帖数: 1700 | 4 说明主流语言都可以FP,大家不需要去学习FP语言了!
【在 T*******x 的大作中提到】 : 这个结果挺奇怪。这个说明了什么?
|
a*****e 发帖数: 1700 | 5 Python 第一版 91 年到现在,坚持计算得出以上结果不变,也算是求仁得仁了!
【在 s*****V 的大作中提到】 : 当然都是Python 借来的
|
T*******x 发帖数: 8565 | 6 哦。我还以为python有什么错误呢。那为什么结果是[2]呢?结果为什么不是[1,2,3]或
[2,4,6]呢?
【在 a*****e 的大作中提到】 : 说明主流语言都可以FP,大家不需要去学习FP语言了!
|
e*******o 发帖数: 4654 | 7 哈哈
我觉得 那个 generator 应该记下 foo , 不再允许reassign 直到 generator被耗尽。
python 有很多好处,我发现 err msg 很差。 很多时候,就一个 syntax error。
这种情况,要是距离远,可不好debug。
【在 a*****e 的大作中提到】 : 说明主流语言都可以FP,大家不需要去学习FP语言了!
|
a*****e 发帖数: 1700 | 8 ... 不逗你了,我都是在说反话。
你给的两种答案都很好,分别是 static scoping 和 dynamic scoping 下运算能得到
的结果。
Python 下能运行成这样,其实就是对 FP 的设计理解错误,使用 generator 出现
nested scope 的情况下把 scoping 弄得不一致。如果说第一个这么设计的人是
蠢,那么二三十年下来都不更正,只能说是坏了。
这就是为什么我们要学习正统 FP 的原因,因为主流语言多半被一群不懂装懂的人把持
,能流行起来是历史原因,而不是什么“存在即合理”。
【在 T*******x 的大作中提到】 : 哦。我还以为python有什么错误呢。那为什么结果是[2]呢?结果为什么不是[1,2,3]或 : [2,4,6]呢?
|
T*******x 发帖数: 8565 | 9 哦。我就说有什么问题嘛。但是我又说别着急,先问问看。呵呵。
【在 a*****e 的大作中提到】 : ... 不逗你了,我都是在说反话。 : 你给的两种答案都很好,分别是 static scoping 和 dynamic scoping 下运算能得到 : 的结果。 : Python 下能运行成这样,其实就是对 FP 的设计理解错误,使用 generator 出现 : nested scope 的情况下把 scoping 弄得不一致。如果说第一个这么设计的人是 : 蠢,那么二三十年下来都不更正,只能说是坏了。 : 这就是为什么我们要学习正统 FP 的原因,因为主流语言多半被一群不懂装懂的人把持 : ,能流行起来是历史原因,而不是什么“存在即合理”。
|
g****t 发帖数: 31659 | 10 碰见在过去现在未来可能出语法糖的地方
绕着走
多重循环我都不想用
还nest scope呢……
这就是大号goto
至少goto几十年任何语言变化不大
还容易解读
: ... 不逗你了,我都是在说反话。
: 你给的两种答案都很好,分别是 static scoping 和 dynamic scoping
下运算
能得到
: 的结果。
: Python 下能运行成这样,其实就是对 FP 的设计理解错误,使用
generator 出
现
: nested scope 的情况下把 scoping 弄得不一致。如果说第一个这么设计
的人是
: 蠢,那么二三十年下来都不更正,只能说是坏了。
: 这就是为什么我们要学习正统 FP 的原因,因为主流语言多半被一群不懂
装懂的
人把持
: ,能流行起来是历史原因,而不是什么“存在即合理”。
【在 a*****e 的大作中提到】 : ... 不逗你了,我都是在说反话。 : 你给的两种答案都很好,分别是 static scoping 和 dynamic scoping 下运算能得到 : 的结果。 : Python 下能运行成这样,其实就是对 FP 的设计理解错误,使用 generator 出现 : nested scope 的情况下把 scoping 弄得不一致。如果说第一个这么设计的人是 : 蠢,那么二三十年下来都不更正,只能说是坏了。 : 这就是为什么我们要学习正统 FP 的原因,因为主流语言多半被一群不懂装懂的人把持 : ,能流行起来是历史原因,而不是什么“存在即合理”。
|
|
|
s*****V 发帖数: 21731 | 11 这里面dynamic其实比较合适,固化的直接list 就好了。
【在 T*******x 的大作中提到】 : 哦。我就说有什么问题嘛。但是我又说别着急,先问问看。呵呵。
|
w***g 发帖数: 5958 | 12 高级黑
【在 a*****e 的大作中提到】 : ... 不逗你了,我都是在说反话。 : 你给的两种答案都很好,分别是 static scoping 和 dynamic scoping 下运算能得到 : 的结果。 : Python 下能运行成这样,其实就是对 FP 的设计理解错误,使用 generator 出现 : nested scope 的情况下把 scoping 弄得不一致。如果说第一个这么设计的人是 : 蠢,那么二三十年下来都不更正,只能说是坏了。 : 这就是为什么我们要学习正统 FP 的原因,因为主流语言多半被一群不懂装懂的人把持 : ,能流行起来是历史原因,而不是什么“存在即合理”。
|
e****w 发帖数: 1565 | 13 先不说其他的
python的lamda 就是一坨屎
不仅lamda是屎
closure也做不好 |
g****t 发帖数: 31659 | 14 从来只用一层closure
一个条件lambda
完美
目测到我退休不需要因为版本问题改code
我现在连print都不用
自己有几个log函数看中间信息
: 先不说其他的
: python的lamda 就是一坨屎
: 不仅lamda是屎
: closure也做不好
【在 e****w 的大作中提到】 : 先不说其他的 : python的lamda 就是一坨屎 : 不仅lamda是屎 : closure也做不好
|
r*******n 发帖数: 3020 | 15 python3 closure还好。
lambda确实不好
【在 e****w 的大作中提到】 : 先不说其他的 : python的lamda 就是一坨屎 : 不仅lamda是屎 : closure也做不好
|
n******g 发帖数: 2201 | 16 具体哪里不好?
【在 r*******n 的大作中提到】 : python3 closure还好。 : lambda确实不好
|
m*****p 发帖数: 39 | 17 FP程序是不是不方便性能優化?用linux perf那種,都是小函數,cache性能差? |
w*****r 发帖数: 197 | 18 这个例子好,估计一批转码工的生命科学家们又要迷茫了。。。
要是谁能把python的这些坑总结总结登出来,倒是大善事一件
【在 a*****e 的大作中提到】 : 比如 comprehension! : Python 3.6.3 (default, Oct 3 2017, 07:47:49) : [GCC 6.4.0] on linux : Type "help", "copyright", "credits" or "license" for more information. : >>> foo=[1,2,3] : >>> bar=(item for item in foo if foo.count(item) > 0) : >>> foo=[2,4,6] : >>> list(bar) : [2]
|