python中的匿名内联函数

fonc的Python项目详细描述


方舟子

<;small>;python中的多行内联匿名函数<;/small>

>>>fromfoncimportfonc>>>[...fonc("""... def x(input): # doesn't matter what this function is called...     value = input * 3.14...     return int(value)...     """)(value)forvaluein[1,2,3,4]...][3,6,9,12]

你为什么要做这种可怕的事

:):):):):):):):):):):):):)

这会污染我的全局命名空间吗?在

不!在

想象一下这个内联函数:

>>>fromfoncimportfonc>>>[...fonc("""... def x(input): # doesn't matter what this function is called...     value = input * 3.14...     return int(value)...     """)(value)forvaluein[1,2,3,4]...][3,6,9,12]

可以想象这意味着x函数名被覆盖到全局命名空间中。不是的!在

>>>x(1)
NameError: name 'x' is not defined

请问这是怎么回事?在

  • 解析字符串并确定定义函数的名称
  • 将其替换为已知的随机值
  • 将对该内联函数的调用替换为对重命名函数的调用

从不问问题

  • 我可以访问这个函数中的全局变量吗?在

    是吗

  • 我可以在生产中使用这个吗?在

    你绝对不是傻瓜

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java为引用变量指定默认值   java在2D数组中旋转innersquare   java将hashmap键值与int进行比较   java程序中的并发监视器陷入死锁   安卓 java。lang.NoClassDefFoundError:java。awt。光标   java有没有更好的方法来引用包含对象的对象?   如何在Java编程中循环代码块   java如何在Junit5中使用Serenity?   java使用ANTLR识别JavaScript文件中的全局变量声明   EJB查询对象生成的java视图SQL?   java查找股票报价的范围   java错误:(453,69)不允许使用字符串类型(在值为“”的“活动\u水平\u边距”处)   java安装的环境变量   amazon web服务在使用awssdkjava上载到S3存储桶时发生直接错误   java在Android的ArrayList中添加相等的值   尝试打开MyEclipse Enterprise Workbench时出现ide“无法创建java虚拟机”错误   java如何使用单元格指定的行和列更改jTable的单元格颜色?   java如何等待文件从系统目录复制到具有根访问权限的外部存储