对python函数签名的方法详解

 更新时间:2019年01月22日 10:01:14   作者:BlackMatrix  
今天小编就为大家分享一篇对python函数签名的方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

函数签名对象,表示调用函数的方式,即定义了函数的输入和输出。

在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使用pandas实现对数据进行特定排序

    Python使用pandas实现对数据进行特定排序

    在数据分析和处理过程中,排序是一项常见而重要的操作,本文将详细介绍如何利用pandas对数据进行特定排序,包括基本排序、多列排序、自定义排序规则等方面的内容,需要的可以了解下
    2024-03-03
  • python Dejavu库快速识别音频指纹实例探究

    python Dejavu库快速识别音频指纹实例探究

    这篇文章主要为大家介绍了python Dejavu库快速识别音频指纹实例探究,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • Python入门基础之变量及字符串

    Python入门基础之变量及字符串

    Python是一个不错的语言,Python语言简单易懂还具有强大的编程能力,同时对于大数据分析有很明显的帮助,这篇文章主要给大家介绍了关于Python入门基础之变量及字符串的相关资料,需要的朋友可以参考下
    2022-01-01
  • python中矩阵合并、拼接、组合的实现示例

    python中矩阵合并、拼接、组合的实现示例

    本文主要介绍了python中矩阵合并、拼接、组合的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • 使用 OpenCV-Python 识别答题卡判卷功能

    使用 OpenCV-Python 识别答题卡判卷功能

    这篇文章主要介绍了使用 OpenCV-Python 识别答题卡判卷,本文分步骤通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-12-12
  • python解析库Beautiful Soup安装的详细步骤

    python解析库Beautiful Soup安装的详细步骤

    Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据,下面这篇文章主要给大家介绍了关于python解析库Beautiful Soup安装的详细步骤,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-04-04
  • Python数据分析基础之异常值检测和处理方式

    Python数据分析基础之异常值检测和处理方式

    这篇文章主要介绍了Python数据分析基础之异常值检测和处理方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • 如何用Python实现简单的Markdown转换器

    如何用Python实现简单的Markdown转换器

    这篇文章主要介绍了如何用Python实现简单的Markdown转换器,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • python实现水印图片功能

    python实现水印图片功能

    这篇文章主要为大家详细介绍了python实现水印图片功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • Python3标准库之dbm UNIX键-值数据库问题

    Python3标准库之dbm UNIX键-值数据库问题

    dbm是面向DBM数据库的一个前端,DBM数据库使用简单的字符串值作为键来访问包含字符串的记录。这篇文章主要介绍了Python3标准库:dbm UNIX键-值数据库的相关知识,需要的朋友可以参考下
    2020-03-03

最新评论