我刚刚从Why do list comprehensions write to the loop variable, but generators don't?了解到,列表理解也是"泄漏"他们的循环变量进入周围范围。
Python 3.4.3 (default, Oct 14 2015, 20:28:29)
>>> x = 'before'
>>> a = [x for x in (1, 2, 3)]
>>> x
'before'
此错误已在Python3中修复。
a=`cat BIG_DATAfinal.txt | grep "STATUS" | awk '{print $5}'`
b=`cat BIG_DATAfinal.txt | grep "start" | awk '{print $3}' | sed 's/time;//g'`
echo "$a;$b"
此时使Python2与Python3兼容的最佳方法是什么?
答案 0 :(得分:3)
最好的方法通常是不重用这样的变量名,但是如果你想要在2和3中获得Python 3行为的东西:
list(x for x in (1, 2, 3))
答案 1 :(得分:2)
@ mgilson的评论可能是事实,但是如果你想编写兼容python2和python3的代码,你可以将生成器函数包装在list函数中,例如:
Python 2.7.6 (default, Jun 22 2015, 17:58:13)
>>> x = 'before'
>>> a = list(x for x in (1, 2, 3))
>>> x
'before'