lambda <args>:<expression>
<expression>必须是单个表达式,不能是多个由;分割的表达式
-
使用exec函数
b=1 p=lambda v:exec("global b;b+=1;print(v+b)") print(p(1)) print(p(2))此种方式返回值为exec的返回值None
-
把<expression>包装成tuple,list,dict,set等
p=lambda :(print(1),print(2),3)[-1] print(p())但是此种方式依然不能包含赋值等语句
-
lambda中<expression>不能使用;
import sys p=lambda :sys.stdout.write('first');sys.stdout.write('second') p()import sys p=lambda :[None,sys.stdout.write('first'),sys.stdout.write('second')][0] print(p())依然不能在列表中出现return
-
python -c "for b in range(3):print('vbnm')" -
引入分号后,出现错误
解决办法 -
echo -e "import sys\nfor b in range(3):print('vbnm')" | python -
python -c "exec('import sys\nfor b in range(3):print(999)')" -
python - <<-eof import sys for b in range(3): print('zxx') eof -
(echo "import sys";echo "for b in range(3):print('vbnm')")|python