智能位置参数操作

typeargs的Python项目详细描述


更智能的位置参数处理

安装

通过PIP安装:

$ pip install typeargs

完成。

如果你坚持采用(稍微)困难的安装方式,从源头上, 你已经知道怎么做了,不需要我的帮助。

我以后可能会将源上载到: https://github.com/TaylorSMarks/typeargs

文档

当调用普通的python函数时,它会盲目地传入位置参数,然后传入关键字参数。

假设您有一个这样的签名函数,就像tkinter中的许多情况一样:

defmakeWidget(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)defmakeWidget(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,我们还有两个int参数。必须是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中的new,如果需要,现在可以使用正则表达式匹配字符串参数。不需要预先定义re对象-如果需要的话,它们可以在decorator调用中正确。

fromtypeargsimportre,typeargsphoneNumber=re(r'\d{3}-\d{4}')ssn=re(r'\d{3}-\d{2}-\d{4}')fullName=re(r'\w+ \w+')@typeargs(fullName,ssn,phoneNumber)definfos(fullName,ssn,phoneNumber):print(fullName,ssn,phoneNumber)infos('752-2723','Taylor Marks','123-45-6789')# Prints out ('Taylor Marks', '123-45-6789', '752-2723')

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

推荐PyPI第三方库


热门话题
Apache Beam代码中的java语法错误插入   java GC实时性显著延长   java使用AppIdentityService进行身份验证时未找到电子表格   Java:纠错码计算器   java调用类文件及其方法   二维数组(Java)以循环顺序打印带有字母的三角形   java打开一个新的数据库连接好吗?还是保持一个连接打开直到进程完成?   java如何阻止在状态栏或屏幕按钮上拖放的项目消失   如何使用Swing在Java中正确实现MVC?   java Android studio mysql服务器超时/连接被拒绝   java随时间改变颜色的RGB值   java如何使用治理API向WSO2治理注册中心注册服务?   java如何重命名现有文件   如何将字符串保存到。java中的txt文件