您必须返回部分作为装饰结果:def decor(func):

return partial(func, v=100)

然而,这个总是设置v=100,即使您按位置为v传递了另一个值。你还是会有同样的问题。在

您需要创建一个decorator,它知道位置参数v是什么,并在那里寻找它作为关键字参数:和:

^{pr2}$

上面的修饰符将v参数设置为100,始终。无论您试图将v设置为位置参数还是关键字参数,最终它都将被设置为100:>>> @decor

... def some_function(a, v, c):

... return a, v, c

...

>>> some_function(1, 2, 3)

(1, 100, 3)

>>> some_function(1, v=2, c=3)

(1, 100, 3)

如果您只想为v提供一个默认参数(如果没有显式设置),则必须反转测试:def decor(func):

vpos = getargspec(func).args.index('v')

def wrapper(*args, **kwargs):

if len(args) <= vpos and 'v' not in kwargs:

kwargs['v'] = 100

return func(*args, **kwargs)

return wrapper

此时,v仅在尚未设置的情况下提供:>>> @decor

... def some_function(a, v, c):

... return a, v, c

...

>>> some_function(1, c=3) # v not set

(1, 100, 3)

>>> some_function(1, 2, c=3) # v is set

(1, 2, 3)

>>> some_function(1, v=2, c=3) # v is set as keyword argument

(1, 2, 3)

python @修饰符_Python修饰符,返回替换了一个或多个参数的函数相关推荐

  1. python如何计算分子描述符_Python——描述符(descriptor)解密

    本文由 极客范 - 慕容老匹夫 翻译自 Chris Beaumont.欢迎加入极客翻译小组,同我们一道翻译与分享.转载请参见文章末尾处的要求. Python中包含了许多内建的语言特性,它们使得代码简洁 ...

  2. python的注释符_python 注释符

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 相比于行注释符的多样,块注释符更加是让人眼花缭乱:? 大多数写法是我从未见过的, ...

  3. Go 学习笔记(15)— 函数(01)[函数定义、函数特点、多值返回、实参形参、变长参数,函数作为参数调用]

    1. 函数定义 Go 语言最少有个 main() 函数.函数声明告诉了编译器函数的名称,返回类型和参数. func funcName(parameter_list)(result_list) {fun ...

  4. python函数对变量的作用遵守原则有哪四条_创建一个包含四个参数的函数

    是的,所以我在做家庭作业,我被要求做以下工作: 创建一个名为student data的函数,它接受四个参数,一个名称(一个字符串).一个年龄(一个整数).一个学生编号(一个字符串)以及他们是否在CSC ...

  5. java 去掉最后一个换行符_Python 教程(一)第一个Python程序

    本教程的目标是让您开始学习Python编程语言.Python是一门值得学习的伟大语言.对于那些刚开始编程的人来说,它是一种理想的语言.读完本教程,你将有信心继续自己的学习.您可以用Python创建脚本 ...

  6. python 占位符_Python占位符总结:%方式和format方式

    Python中,我们在预定义某类具有相似格式的变量或者输出一句含有多个变量的提示语句时,往往用到占位符,而占位符有两种表达方式: %方式: 下面这段代码摘自matplotlib的_init_.py文件 ...

  7. python打印换行符_Python换行符以及如何在不使用换行符的情况下进行Python打印

    python打印换行符 Welcome! The new line character in Python is used to mark the end of a line and the begi ...

  8. python修饰器_python修饰器

    转自:http://www.cnblogs.com/rollenholt/archive/2012/05/02/2479833.html 文章先由stackoverflow上面的一个问题引起吧,如果使 ...

  9. python输出多个占位符_Python——占位符 打印名片

    占位符和C语言有类似,从C#过来的有点别扭 code: companyName =input("请输入您的公司名称:") userName =input("请输入您的姓名 ...

最新文章

  1. java中最常用jar包的用途说明,适合初学者
  2. 三藏一面:为什么要用 NoSQL
  3. OpenCV中图像显示窗口函数namedWindow()详解
  4. linux:su认证失败
  5. springboot项目打包成war并在tomcat上运行的步骤
  6. (转)网上常用免费WebServices集合
  7. 如何下载和安装SQL Server数据库实验助手(DEA)
  8. 牛客 2021年度训练联盟热身训练赛第二场 I题Pegasus Circle Shortcut
  9. Elastic Search Java Api 创建索引结构,添加索引
  10. html插入cad,如何快速的在CAD中插入数字?
  11. 从简历被拒,到斩获 BAT offer,全靠这些吊炸天的公众号!
  12. 配置windows 静态IP地址
  13. 信息增益与信息增益率详解
  14. play 框架目录结构
  15. 解铃还须系铃人—大数据时代的安全交给大数据
  16. SLAM导航机器人零基础实战系列:(六)SLAM建图与自主避障导航——2.google-cartographer机器人SLAM建图...
  17. CCF计算机软件能力认证试题练习:201612-2 工资计算
  18. RPA学习天地:金智维RPA高阶培训(一)产品基础架构
  19. 基于白名单的Payload
  20. Android获取手机名称,版本号,生产商等信息(转)

热门文章

  1. git团队如何提交_如何使您的提交消息很棒并保持团队快乐
  2. 音乐雷达 shazam算法_具有10亿首Shazam音乐识别功能的数据可视化
  3. pythonpy文件打包成exe软件
  4. 美女面试官问我Python如何优雅的创建临时文件,我的回答....
  5. Python编程的10个经典错误及解决办法
  6. 大数据技术周报第 003 期
  7. 聚类算法应用场景实例十则
  8. NuGet学习笔记(2)——使用图形化界面打包自己的类库
  9. win7焦点总是不停丢失的解决方法
  10. json无法解析的字符