invalid signature什么意思_function是什么意思?
Function,表示子例程的一般性名词。在某些编程语言中,它指带返回值的子例程或语句。在一些编程语言中起着关键字的作用。
在Python中,function是非常重要而且常见的,一般获取类或函数的参数信息。
在Python中,function一般有如下几类:
一、POSITIONAL_OR_KEYWORD
如果没有任何*的声明,那么就是POSITIONAL_OR_KEYWORD类型的,如同语义一样,POSITIONAL_OR_KEYWORD类型的参数可以通过位置POSITIONAL传参调用,也可以过关键字KEYWORD传参。以下是一个最简单的例子:
def foo(a):
pass
# 位置传参调用
foo(1)
# 关键字传参调用
foo(a=1)
二、VAR_POSITIONAL
第二种是可变的位置参数,通过一个*前缀来声明,如果你看到一个*xxx的函数参数声明(不是函数调用!声明和调用是两种不同的含义的),那一定是属于VAR_POSITIONAL类型的,如同语义,这种类型的参数只能通过位置POSITIONAL传参调用,不支持关键字KEYWORD传参,在函数内部,VAR_POSITIONAL类型的参数以一个元祖(tuple)显示,有一点需要注意的,VAR_POSITIONAL类型可以不传任何参数调用也不会报错,而且只允许存在一个。以下是一个简单的例子:
def foo(*b):
print(b)
# 不传参数不会报错,参数值是一个空元祖
foo() # 结果是 ()
# 可以传入任意个位置参数调用
foo(1, 2.0, '3', True) #结果是 (1, 2.0, '3', True)
三、KEYWORD_ONLY
第三种是关键字参数,这种参数只会在VAR_POSITIONAL类型参数的后面而且不带**前缀。如同语义,这类参数只能用关键字KEYWORD来传参,不可以用位置传参,因为位置传的参数全让前面的VAR_POSITIONAL类型参数接收完了,所以KEYWORD_ONLY只能通过关键字才能接收到参数值。以下是一个简单的例子:
# VAR_POSITIONAL不需要使用时,可以匿名化
def foo(*, c):
pass
# 只能关键字传参调用
foo(c=1)
四、VAR_KEYWORD
第四种是可变的关键字参数,VAR_KEYWORD类型的参数通过**前缀来声明(不是函数调用!声明和调用是两种不同的含义的)。如同语义,这种类型的参数只能通过关键字KEYWORD调用,但可以接收任意个关键字参数,甚至是0个参数,在函数内部以一个字典(dict)显示。VAR_KEYWORD类型的参数只允许有一个,只允许在函数的最后声名。以下是简单的例子:
def foo(**d):
print(d)
# 不传参数不会报错,参数值是一个空字典
foo() # 结果是 {}
# 可以传入任意个关键字参数调用
foo(a=1, b=2.0, c='3', d=True) # 结果是 {'d': True, 'c': '3', 'b': 2.0, 'a': 1}
五、POSITIONAL_ONLY
第五种是位置参数,选择最后说这个,是因为它一点也不重要,属于python的历史产物,你无法在高版本的python中创建一个POSITIONAL_ONLY类型的参数,在某种底层的内置函数也许会使用这类型的参数,但我试用inspect模块也没法正确识别它的命名,但在Ipython的??帮助下,还是能看到Init signature: dict(self, /, *args, **kwargs)这里的self就是位置参数POSITIONAL_ONLY了。相信我,你不会需要用到它的,现在python推荐用VAR_POSITIONAL来代替它。下面是一个综合示例:
import inspect
def foo(a, *b, c, **d):
pass
for name, parame in inspect.signature(foo).parameters.items():
print(name, ': ', parame.kind)
默认参数
VAR类型不允许设置默认参数
POSITIONAL_OR_KEYWORD和KEYWORD_ONLY可以自定义默认参数,而VAR_POSITIONAL和VAR_KEYWORD不允许自定义默认参数的,因为VAR_POSITIONAL的默认参数是tuple()空元祖,而VAR_KEYWORD的默认参数是dict()空字典。如果自定义了默认参数的话,调用函数的时候可以不必传参,如果默认值是空的话,那就必须传参数才能调用。
默认参数的位置
POSITIONAL_OR_KEYWORD类型的默认参数一定要放在后面,否则会报错,KEYWORD_ONLY虽然没有强制要求,因为都是用关键字传参,谁先谁后都无所谓,但最好还是尽可能地放在后面吧。
默认参数不默认?
默认参数绝对不能设置为可变类型(比如list, dict, set),如果你在函数内改变了默认参数,下次再调用时它就不再是默认值了。
正确的示例:
def foo(p1, p2=2.0, *, k1, k2=None):
a_list = k2 or list()
pass
foo(1, k1='3')
invalid signature什么意思_function是什么意思?相关推荐
- 解决微信H5获取SDK授权报错提示errMsg: “config:fail,Error: 系统错误,错误码:63002,invalid signature [20200908 22:17:17][]“
如果常规检查都做过可以仔细看下微信开放文档 这个里面的报错原因 如果都不是那么极有可能是(恭喜你!看样子你的H5页面日活人数还蛮多[呲牙]) 获取腾讯微信平台access_token超过每日默认上限2 ...
- VUE解决微信签名,SPA微信invalid signature问题,完美处理
深度解决方案,包教不包会,只因为踩坑无数,希望大家能有所收获 前端小菜鸟,因为项目要对接微信的jssdk,对接就需要签名认证,但是无奈安卓和IOS各有各的坑,本篇文章只讨论签名,和一个分享的坑,希望大 ...
- 微信公众号签名错误 invalid signature
在出现了 invalid signature签名错误后按照以下步骤进行校验 1.确认签名算法正确,可用 http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t= ...
- 微信-js sdk invalid signature签名错误 问题解决
微信-js sdk invalid signature签名错误 问题解决 参考文章: (1)微信-js sdk invalid signature签名错误 问题解决 (2)https://www.cn ...
- 微信公众号 JSSDK 提示:invalid signature
要命的invalid signature.其实腾讯的文档已经写了,只能怪我自己理解能力太差,掉了好几次坑. 签名要用到的jsapi_ticket需要保存的,2小时有效期.如果在2小时内出现问题需要删除 ...
- Invalid signature file digest for Manifest main attributes
Invalid signature file digest for Manifest main attributes 解决方案: maven-shade-plugin更新到2.3或者以上即可.
- invalid signature_php,javascript - 微信接口调用一直是 invalid signature
最近在开发过程中用到微信的分享接口,但是按照他的文档来生成签名时,却一直出现invalid signature 的情况. 按照他提供的检测工具,检测出来的结果是正确的. 我这里获取签名的方法是在静态页 ...
- 微信分享踩坑:config:invalid signature错误的解决方法
微信分享踩坑:config:invalid signature错误的解决方法 一般出现这个错误多半是签名获取失败,而我根据我获取到的签名跟签名算法校验里面得到的签名是一样的,于是查找大量文档,核实可能 ...
- vue 单页面(SPA) history模式调用微信jssdk 跳转后偶尔 “invalid signature“错误解决方案
vue 单页面(SPA) history模式调用微信jssdk 跳转后偶尔 "invalid signature"错误解决方案 参考文章: (1)vue 单页面(SPA) hist ...
最新文章
- readelf和ldd分析elf文件
- mysql实训报告_mysql数据库技术》实验报告.doc
- 图灵2011年6月书讯【误区】【软件调试修炼之道】即将上市
- Hibernate 和快照
- Windbg内核调试之四: Dump文件分析
- Python之pypmml:pypmml的简介、安装、使用方法之详细攻略
- curl php 百度,phpcurl模拟登录百度首页
- 内容创业时代,粉丝已死
- [silverlight]WCF和Web Service(ASMX)的soap header传输方法
- pgsql自动安装shell脚本整理
- 股市大涨是不是楼市就要跌了?
- 陌生人社会_陌生人之旅
- 如何用Vue实现简易的富文本编辑器,并支持Markdown语法
- 企业面试之LeetCode刷题心得
- Leetcode 122.买卖股票的最佳时机II
- React router 路由 入门安装
- 机器搜索引擎 vs 人肉搜索引擎(作者:胡宝介)
- 计算机wps文字背景怎么设置,如何在wps文本中添加背景以及如何将图片设置为页面背景...
- idea关闭自动更新
- vue el-descriptions 样式问题
热门文章
- 【方法】如何限定IP访问Oracle数据库
- 【李宏毅2020 ML/DL】P23 Transformer | Self-attention, Multi-head Self-attention
- Linux-sed command
- Nginx的accept_mutex配置分析
- python list突破上限武器_Python3 tkinter基础 Listbox height 显示行数的上限
- Android导航栏高斯模糊,iOS 顶部高斯模糊导航栏 + 页面内容穿越底部导航栏效果...
- php tp5 model 文件,tp5model的新增
- 三维点云学习(3)8- 实现Spectral谱聚类
- SCOM 常识概念—与其他SC产品集成
- 装机防骗武器——鲁大师