广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python 函数定位参数+关键字参数+inspect模块
  • 799
分享到

python 函数定位参数+关键字参数+inspect模块

2024-04-02 19:04:59 799人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录函数内省(function introspection)定位参数和仅限关键字参数inspect模板函数内省(function introspection) 除了__doc__属性

函数内省(function introspection)

除了__doc__属性, 函数对象还有很多属性,对于下面的函数,可以使用dir()查看函数具有的属性:

>>> dir(factorial) ['__annotations__', '__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__fORMat__', '__ge__', '__get__', '__getattribute__', '__globals__', '__gt__', '__hash__', '__init__', '__kwdefaults__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__'] 

其中大多数是python常规类都有的属性,下面重点看看常规对象没有而函数对象有的属性:

>>> class C:pass
...
>>> obj = C()
>>> def func():pass
...
>>> sorted(set(dir(func)) - set(dir(obj))) # 计算差集,然后排序
['__annotations__', '__call__', '__closure__', '__code__', '__defaults__', '__get__', '__globals__', '__kwdefaults__', '__name__', '__qualname__']

对于上面列出的函数特有属性,说明如下:

  • __annotations__ dict 参数和返回值的注释
  • __call__ method-wrapper 实现()运算符,即可调用对象的协议
  • __closure__ tuple 函数闭包,即自由变量的绑定(通常是None)
  • __code__ code 编译成字节码的函数元数据和函数定义体
  • __defaults__ tuple 形式参数的默认值
  • __get__ method-wrapper 实现只读描述符协议
  • __globals__ dict 函数所在的模块中的全局变量
  • __kwdefaults__ dict 仅限关键字形式参数的默认值
  • __name__ str 函数名称
  • __qualname__ str 函数的限定名称

定位参数和仅限关键字参数

def tag(name,*content,cls=None,**attrs):
if cls is not None:
attrs['class'] = cls

if attrs:
attrs_str = ''.join(' %s="%s" ' % (attr,value) for attr,value in sorted(attrs.items()))
else:
attrs_str=''
if content:
return '\n'.join('<%s %s >%s</%s>' % (name,attrs_str,c,name) for c in content)
else:
return '<%s%s />' % (name,attrs_str)
print(tag('br'))#定位参数 name
print(tag('p','hello'))#hello 会被*conteng捕获 存入元组content = ('hello')
print(tag('p','hello','world'))#content = ('hello','world')
print(tag('p','hello',id=33)) #attrs={'id':33} content = ('hello')
print(tag('p','hello','world',cls='sidebar'))#cls 关键字传入 cls='sidebar'
print(tag(content='testing',name='img'))#第一个参数name 也能作为关键字传入
#同名键会绑定到对应的具名参数上,剩余的则会被**attrs捕获
print(tag(**{'name':'img','title':'sunset boulevard','src':'sunset.jpg','cls':'framed'}))
#仅限关键字参数是python3.0新增的特性,在上例中,cls参数只能通过关键字参数指定,他一定不会捕获未命名的定位参数
#定义函数时候,如果想指定仅限关键字参数,要把它们放到*的参数后面
def f(a,*,b):
return a,b
ff = f(1,b=2)
print(ff)
<br />
<p >hello</p>
<p >hello</p>
<p >world</p>
<p id="33" >hello</p>
<p class="sidebar" >hello</p>
<p class="sidebar" >world</p>
<img content="testing" />
<img class="framed" src="sunset.jpg" title="sunset boulevard" />
(1, 2)

inspect模板

def tag(name,*content,cls=None,**attrs):
if cls is not None:
attrs['class'] = cls
if attrs:
attrs_str = ''.join(' %s="%s" ' % (attr,value) for attr,value in sorted(attrs.items()))
else:
attrs_str=''
if content:
return '\n'.join('<%s %s >%s</%s>' % (name,attrs_str,c,name) for c in content)
else:
return '<%s%s />' % (name,attrs_str)
import inspect
sig = inspect.signature(tag)
print(sig)
my_tag = {'name':'img','title':'sun long','src':'sunlong.jpg','cls':'framed'}
bound_args = sig.bind(**my_tag)
for name,value in bound_args.arguments.items():
print(name,'=',value)
print(bound_args)

inspect模块把实参绑定给函数调用:

(name, *content, cls=None, **attrs)
name = img
cls = framed
attrs = {'title': 'sun long', 'src': 'sunlong.jpg'}
<BoundArguments (name='img', cls='framed', attrs={'title': 'sun long', 'src': 'sunlong.jpg'})>

到此这篇关于Python 函数定位参数+关键字参数+inspect模块的文章就介绍到这了,更多相关python inspect模块内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: python 函数定位参数+关键字参数+inspect模块

本文链接: https://www.lsjlt.com/news/117986.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python 函数定位参数+关键字参数+inspect模块
    目录函数内省(function introspection)定位参数和仅限关键字参数inspect模板函数内省(function introspection) 除了__doc__属性...
    99+
    2022-11-11
  • python参数+关键字参数+inspect模块实例分析
    这篇文章主要讲解了“python参数+关键字参数+inspect模块实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python参数+关键字参数+inspect模块实例分析”吧!函数内...
    99+
    2023-06-30
  • Python 关键字参数和可变参数
    关键字参数 如果你有一些具有许多参数的函数,而你又希望只对其中的一些进行指定,那么你可以通过命名它们来给这些参数赋值——这就是python关键字参数(Keyword Arguments)——我们使用命名(关键字)而非位置(一直以来我们所使...
    99+
    2023-01-31
    参数 关键字 Python
  • 【Python】函数进阶 ① ( 函数返回多个返回值 | 函数参数传递类型简介 | 位置参数 | 关键字参数 )
    文章目录 一、函数返回多个返回值二、函数参数传递类型1、位置参数2、关键字参数 一、函数返回多个返回值 在函数中 , 如果要 返回 多个返回值 , 可以 在 return ...
    99+
    2023-09-04
    python 开发语言 函数多返回值 位置参数 关键字参数 原力计划
  • Python 函数教程:如何使用默认参数和关键字参数?
    函数是 Python 中最基本的编程元素之一,可以将一段逻辑代码封装成一个可重复利用的单元。在 Python 中,函数定义的格式如下: def function_name(parameters): """docstring""" ...
    99+
    2023-06-29
    函数 教程 关键字
  • Python 函数教程:如何使用关键字参数?
    在 Python 编程中,函数是非常重要的概念,它们可以帮助我们封装代码、提高代码复用性、使代码更加模块化。在函数定义时,我们可以使用关键字参数,这样可以让我们的代码更加灵活、易读、易维护。在本篇文章中,我们将深入探讨 Python 函数...
    99+
    2023-06-29
    函数 教程 关键字
  • Python 函数教程:如何使用 lambda 函数和关键字参数?
    Python 是一种高级编程语言,可以通过函数来组织代码并实现代码的重用。Python 中的函数是一组语句,用于执行某项特定任务,并且可以在程序的任何地方调用。Python 中的函数非常灵活,可以使用不同的参数类型和返回值类型,以及不同的...
    99+
    2023-06-29
    函数 教程 关键字
  • python如何使用仅带关键字参数的函数
    这篇文章将为大家详细讲解有关python如何使用仅带关键字参数的函数,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。仅带关键字参数(kwargs)的函数有时候,使用仅支持关...
    99+
    2022-10-19
  • python如何实现只包含关键字参数的函数
    这篇文章将为大家详细讲解有关python如何实现只包含关键字参数的函数 ,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。只包含关键字参数的函数 (kwargs)当我们使用下面的函数时,创建仅仅需要关键字参数...
    99+
    2023-06-27
  • Python函数关键字参数及使用方法有哪些
    关键字参数是指使用形式参数的名字来确定输入的参数值。通过此方式指定函数实参时,不再需要与形参的位置完全一致,只要将参数名写正确即可。因此,Python 函数的参数名应该具有更好的语义,这样程序可以立刻明确传入函数的每个参数的含义。例如,在下...
    99+
    2023-05-15
    Python
  • python中什么是关键字参数
    今天就跟大家聊聊有关python中什么是关键字参数,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。python的五大特点是什么python的五大特点:1.简单易学,开发程序时,专注的是...
    99+
    2023-06-14
  • 关于Python函数的定义和参数
    目录什么是函数? Python中的函数定义函数的参数(带参数的函数)(1)定义(2)必须参数(又叫位置参数)(3)默认参数(4)关键字参数(5)可变长参数5.1单星号可变5...
    99+
    2023-05-17
    Python函数定义 Python函数参数
  • python中关键字怎么传递参数
    python中关键字怎么传递参数?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1、说明关键词传递以“形参变量名=实参”的形式参与实参关联,根据形参的名称进行参数传递,使实参...
    99+
    2023-06-15
  • python关键字传递参数实例分析
    1、说明 关键词传递以“形参变量名=实参”的形式参与实参关联,根据形参的名称进行参数传递,使实参和形参的顺序不一致。不用担心定义函数时参数的顺序,直接在传参时指定相应的名称即可。 2、两种形式 makeup_ur...
    99+
    2022-06-02
    python 关键字 传递参数
  • 如何在python中使用关键字参数
    本篇文章给大家分享的是有关如何在python中使用关键字参数,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。Python主要用来做什么Python主要应用于:1、Web开发;2、...
    99+
    2023-06-14
  • 深入理解 Python 函数:掌握关键字参数的使用方法
    Python 函数是 Python 编程中最常用的工具之一,它们是组织代码和模块化程序的基本构建块。Python 函数的优点之一是它们具有灵活性和可重复使用性。Python 函数的另一个强大功能是关键字参数。在本文中,我们将深入探讨 Pyt...
    99+
    2023-06-29
    函数 教程 关键字
  • python命名关键字参数的作用详解
    1、说明 *,nkw表示命名关键字参数,是用户想输入的关键字参数名称,定义方式是在nkw前追加*, 2、作用 限制调用者传达的参数名称。 3、实例 # 命名关键字参数 def p...
    99+
    2022-11-11
  • 想要提高 Python 编程技能?学习函数和关键字参数吧!
    Python 是一种广泛使用的高级编程语言,拥有丰富的函数库和工具。想要成为 Python 编程高手,学习函数和关键字参数是必不可少的。本文将深入介绍函数和关键字参数,并提供一些实用的示例代码,帮助您更好地理解。 一、函数是什么? 函数是一...
    99+
    2023-06-29
    函数 教程 关键字
  • python关键字参数的使用方法有哪些
    这篇“python关键字参数的使用方法有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“python关键字参数的使用方法有...
    99+
    2023-06-30
  • 为什么python中需要命名关键字参数
    这篇文章将为大家详细讲解有关为什么python中需要命名关键字参数,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1、说明*,nkw表示命名关键字参数,是用户想输入的关键字参数名称,定义方式是...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作