python中lambda实现赋值和多语句 & 单行命令行中执行多语句

  

lambda <args>:<expression>

<expression>必须是单个表达式,不能是多个由;分割的表达式

  1. 使用exec函数
    1
    2
    3
    4
    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等
    1
    2
    p=lambda :(print(1),print(2),3)[-1]
    print(p())

     

     但是此种方式依然不能包含赋值等语句

     

  3. lambda中<expression>不能使用;
    1
    2
    3
    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

     

posted @   ascertain  阅读(3670)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示