在python 3.8中实现namedexpressions到旧版本python的非常小的库。

namedassignments的Python项目详细描述


名称分配

named assignments是我为自己开发的一个库,用于在python<;=3.7项目中使用命名赋值。

什么是指定作业?

实际上我甚至不知道该怎么称呼他们,但这是我为他们找到的最好的名字。如果您已经阅读了PEP 572,那么python 3.8中会出现一个名为命名表达式的新操作符,它可以帮助您编写更干净、更短的代码。

但是怎么做呢?

对于原始示例,您可以直接检查PEP 572 examples,但如果您正在查找此库,则可能没有使用Python3.8,因此请留在这里继续阅读。

  • 缓存计算开销较大的计算(这绝对是计算开销较大的一个坏例子,但让我们像这样行事)

    旧方式:
    # Makes two addition every timestrange_list=[[x+1,x/(x+1)]forxinrange(5)]
    改进:
    # Makes only one addition every timestrange_list=[[N('y',lambda:x+1),x/N.y]forxinrange(5)]
  • while循环中的用法

    旧方式:
    # conn is a accepted socket connectionwhileTrue:data=conn.recv(1024)ifnotdata:breakconn.sendall(data)
    改进:
    # conn is a accepted socket connectionwhileN('data',conn.recv,1024):conn.sendall(N.data)

用法

由于局限性,使用方法并不像原来那样干净,但它是我发现的最干净的方法。

fromnamedassignmentsimportNamedAssignmentsasNN(variable_name,function,*args,**kwargs)

安装

库在pypi上可用,因此只需运行

pip install namedassignments

API

因为整个代码只有5行,所以没有太多。library使用python的魔术方法__new__返回函数返回的内容这是library在后台所做的一切。

  • __new__参数:
    • variable_name:检索数据时要使用的变量名。(字符串)(必需)
    • function:要执行的函数。(功能)(必需)
    • *args:要传递函数的参数。(列表)(可选)
    • **kwargs:要传递函数的关键字参数。(dict)(可选)

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

推荐PyPI第三方库


热门话题
java使用split函数分割字符串,但没有得到期望的结果   未找到包含derby数据库嵌入架构的sql Java桌面应用程序错误   java elasticsearch vs solr用于定制全文搜索系统   java Android:创建没有startOffset的动画延迟?   java如何查看其他应用程序接收的数据?   java如何在Linux中使用D和classpath选项运行jar文件   java和域设计最佳实践   具有相同内存位置的java数组,将显示为输出   连接到java中的elasticsearch?   Java Playframework重定向到带有Json负载的外部url   java无法在Android平台上使用InputStream为蓝牙socket创建ObjectInputStream   使用POI将Excel日期转换为Java日期,年份未正确显示   oracle从数据库层还是Java层调用webservice?