python中lambda實現賦值和多語句 & 單行命令行中執行多語句


  

lambda <args>:<expression>

<expression>必須是單個表達式,不能是多個由;分割的表達式

  1. 使用exec函數
    b=1
    p=lambda v:exec("global b;b+=1;print(v+b)")
    print(p(1))
    print(p(2))
    

     

     此種方式返回值為exec的返回值None

     

  2. 把<expression>包裝成tuple,list,dict,set等
    p=lambda :(print(1),print(2),3)[-1]
    print(p())
    

     

     但是此種方式依然不能包含賦值等語句

     

  3. 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多行語句

  1. python -c "for b in range(3):print('vbnm')"

     

     

  2.  

     引入分號后,出現錯誤
    解決辦法

  3. echo -e "import sys\nfor b in range(3):print('vbnm')" | python

     

  4. python -c "exec('import sys\nfor b in range(3):print(999)')"

     

  5. python - <<-eof import sys for b in range(3): print('zxx') eof

     

  6. (echo "import sys";echo "for b in range(3):print('vbnm')")|python

     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM