函数签名对象,表示调用函数的方式,即定义了函数的输入和输出。
在Python中,可以使用标准库inspect的一些方法或类,来操作或创建函数签名。
获取函数签名及参数
使用标准库的signature方法,获取函数签名对象;通过函数签名的parameters属性,获取函数参数。
# 注意是小写的signature from inspect import signature def foo(value): return value # 获取函数签名 foo_sig = signature(foo) # 通过函数签名的parameters属性,可以获取函数参数 foo_params = foo_sig.parameters
创建函数签名
使用类Parameter的实例创建函数参数列表;使用Signature类,接受函数参数列表,实例化出函数签名实例。
# 注意是首字母大写的Signature from inspect import Signature, Parameter # 创建一个函数参数列表,列表内的元素由类Parameter的实例组成 # Parameter实例化时,依次接受参数名、参数类型、默认值和参数注解 # 默认值和参数类型默认为空,这里的空值不是None,而是Parameter.empty,代表没有值 parms = [Parameter('x', Parameter.POSITIONAL_OR_KEYWORD), Parameter('y', Parameter.POSITIONAL_OR_KEYWORD), Parameter('z', Parameter.KEYWORD_ONLY, default=9)] # 使用Signature类,接受函数参数列表,实例化出函数签名实例 sig = Signature(parms)
检查函数参数是否匹配签名
使用函数签名的bind的方法,检查函数参数是否匹配签名。
延续上面的例子,通过函数签名的bind方法,接受函数参数,如果匹配,返回参数BoundArguments实例,如果不匹配,则抛出TypeError,并给出详细的异常信息。
通过BoundArguments实例的属性,可以获取函数签名、参数的值等内容。
bound_args_01 = sig.bind(1, 2, z=3) # <BoundArguments (x=1, y=2, z=3)> bound_args_02 = sig.bind(1, 2) # <BoundArguments (x=1, y=2)> bound_args_03 = sig.bind(1) # TypeError # missing a required argument: 'y'
以上这篇对python函数签名的方法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。
本文向大家介绍对python打乱数据集中X,y标签对的方法详解,包括了对python打乱数据集中X,y标签对的方法详解的使用技巧和注意事项,需要的朋友参考一下 今天踩过的两个小坑: 一.用random的shuffle打乱数据集中的数据-标签对 结果shuffle完以后index变成None了,看了下api,这样说明的: 这个函数如果返回值,就返回None,所以用index=balabala就把in
本文向大家介绍python super函数使用方法详解,包括了python super函数使用方法详解的使用技巧和注意事项,需要的朋友参考一下 一、super函数简介 python内置函数super()主要用于类的多继承中,用来查找并调用父类的方法,所以在单重继承中用不用 super 都没关系;但是,使用 super() 是一个好的习惯。一般我们在子类中需要调用父类的方法时才会这么用; 二、sup
本文向大家介绍python用match()函数爬数据方法详解,包括了python用match()函数爬数据方法详解的使用技巧和注意事项,需要的朋友参考一下 match()函数的使用。以及从文本中提取数据的方法。在学习re模块的相关函数前应了解正则表达式的特殊字符 准备一个要爬取的文本文档: 直接从某个网页拷贝一份代码,粘贴在 一个txt文件里,以供学习。 方法很简单,比如打开百度视频的热门电影网页
问题内容: 假设我有一个泛型函数。我想以 编程方式 创建一个功能与相同但具有自定义签名的函数。 更多详情 给定一个列表和字典,我希望能够: 将的非关键字参数设置为中的字符串 将的关键字参数设置为中的键,将默认值设置为的值 即。假设我们有 然后我想要一个带有签名的函数: 一个特定的用例 这只是我的特定用例的简化版本。我仅作为示例。 我的实际用例(简化)如下。我们有一个通用的初始化函数: 我们想在多个
主要内容:1、函数声明,2、函数调用,3、没有参数和返回值的函数,4、有参数但没有返回值的函数,5、有参数且有返回值的函数,6、类中的静态函数C# 中的函数(也可以称为方法)是一段具有签名(由函数名、参数类型和参数修饰符组成的函数信息)的代码块,可以用来实现特定的功能。一般情况下一个函数由以下几个部分组成: 访问权限修饰符:用于指定函数对一个类的可见性; 返回值类型:用于指定函数返回值的数据类型; 函数名称:用于进行函数调用的唯一名称; 参数列表:在调用函数时需要传递给函数的参数,参数列表是可选
本文向大家介绍对python过滤器和lambda函数的用法详解,包括了对python过滤器和lambda函数的用法详解的使用技巧和注意事项,需要的朋友参考一下 1. 过滤器 Python 具有通过列表解析 将列表映射到其它列表的强大能力。这种能力同过滤机制结合使用,使列表中的有些元素被映射的同时跳过另外一些元素。 过滤列表语法: [ mapping-expression for element i