更智能的位置参数处理
项目描述
更智能的位置参数处理
安装
通过pip安装
$ pip install typeargs
完成。
如果您坚持使用(略微)更难的方法安装,从源安装,您已经知道如何做了,不需要我的帮助。
我可能稍后会上传源代码到:https://github.com/TaylorSMarks/typeargs
文档
当您调用一个普通的Python函数时,它会盲目地传递您的位置参数,然后传递您的关键字参数。
假设您有一个这样的函数签名,这在Tkinter中的许多东西都是这样的
def makeWidget(master = None, contents = '', x = 0, y = 0, xSpan = 1, ySpan = 1):
现在您想调用这个函数,但不想指定一个主窗口。通常您有这些选择
makeWidget(None, 'This is impossible to read.', 5, 7, 2, 2)
快!不查看签名,结尾的那些数字是什么意思?通常您用这个来解决
makeWidget(s = 'Better, but so much typing...', x = 5, y = 7, xSpan = 2, ySpan = 2)
现在您包括了所有的名字,就更容易知道每个参数是什么,但它太冗长了...有点重。
这就是typeargs发挥作用的地方。如果您回到原始函数,并用typeargs装饰它,如下所示
@typeargs (Master, str, int, int, int, int)
def makeWidget(master = None, s = '', x = 0, y = 0, xSpan = 1, ySpan = 1):
现在调用者可以简单地这样输入
makeWidget('Hello World!', 2, 2, x = 5, y = 7)
好的,现在是什么情况?显然,我们的字符串是 Hello World!,x 是 5,y 是 7,我们还有两个整型参数。那些必须是 xSpan 和 ySpan,没有包含 master,所以它将使用默认的 None。
通过智能处理基于类型的参数位置,您可以在不需要为每个名称使用关键字参数的情况下跳过希望使用默认值的参数。
另一个例子 - 假设你想要在最后传递 master
makeWidget('Hello World!', 2, 2, x = 5, y = 7, master = Master('Window'))
makeWidget('Hello World!', 2, 2, Master('Window'), x = 5, y = 7)
两种方法都行 - 我们只是让参数传递比平常更智能一点。
还有一个新例子,从 1.1.0 版本开始,现在您可以匹配字符串参数,如果您想的话,可以使用正则表达式。无需事先定义 re 对象 - 如果您想的话,它们可以直接在装饰器调用中。
from typeargs import re, typeargs
phoneNumber = re(r'\d{3}-\d{4}')
ssn = re(r'\d{3}-\d{2}-\d{4}')
fullName = re(r'\w+ \w+')
@typeargs(fullName, ssn, phoneNumber)
def infos(fullName, ssn, phoneNumber):
print(fullName, ssn, phoneNumber)
infos('752-2723', 'Taylor Marks', '123-45-6789')
# Prints out ('Taylor Marks', '123-45-6789', '752-2723')
版权信息
本软件版权所有(c)2016 Taylor Marks <taylor@marksfam.com>。
有关更多信息,请参阅附带 LICENSE 文件。
项目详情
关闭
typeargs-1.1.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ddeb315d55875f6c8083346c681a3c140f9f2e155e2726add160b76225e43d2c |
|
MD5 | 445fc52f0733b0398952c4ee58999e70 |
|
BLAKE2b-256 | a427cd4f96d1f50f39b91e5ddc638e7b7681c9d3cc443b43c0baab9fa3ce5efe |