我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python参数+关键字参数+inspect模块实例分析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python参数+关键字参数+inspect模块实例分析

这篇文章主要讲解了“python参数+关键字参数+inspect模块实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python参数+关键字参数+inspect模块实例分析”吧!

函数内省(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'] = clsif 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'))#定位参数 nameprint(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','class="lazy" data-src':'sunset.jpg','cls':'framed'}))#仅限关键字参数是python3.0新增的特性,在上例中,cls参数只能通过关键字参数指定,他一定不会捕获未命名的定位参数#定义函数时候,如果想指定仅限关键字参数,要把它们放到*的参数后面def f(a,*,b):return a,bff = 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" class="lazy" data-src="sunset.jpg" title="sunset boulevard" />(1, 2)

inspect模板

def tag(name,*content,cls=None,**attrs):if cls is not None:attrs['class'] = clsif 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 inspectsig = inspect.signature(tag)print(sig)my_tag = {'name':'img','title':'sun long','class="lazy" data-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 = imgcls = framedattrs = {'title': 'sun long', 'class="lazy" data-src': 'sunlong.jpg'}<BoundArguments (name='img', cls='framed', attrs={'title': 'sun long', 'class="lazy" data-src': 'sunlong.jpg'})>

感谢各位的阅读,以上就是“python参数+关键字参数+inspect模块实例分析”的内容了,经过本文的学习后,相信大家对python参数+关键字参数+inspect模块实例分析这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python参数+关键字参数+inspect模块实例分析

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

下载Word文档

猜你喜欢

python参数+关键字参数+inspect模块实例分析

这篇文章主要讲解了“python参数+关键字参数+inspect模块实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python参数+关键字参数+inspect模块实例分析”吧!函数内
2023-06-30

python关键字传递参数实例分析

1、说明 关键词传递以“形参变量名=实参”的形式参与实参关联,根据形参的名称进行参数传递,使实参和形参的顺序不一致。不用担心定义函数时参数的顺序,直接在传参时指定相应的名称即可。 2、两种形式makeup_url(protocal='htt
2022-06-02

Python argparse参数模块之命令行参数实例分析

这篇文章主要介绍“Python argparse参数模块之命令行参数实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python argparse参数模块之命令行参数实例分析”文章能帮助大家解
2023-07-02

Python函数参数实例分析

本文小编为大家详细介绍“Python函数参数实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python函数参数实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1.函数参数# 1.位置参数:调用函数
2023-06-28

Python中变量,参数和模块的示例分析

这篇文章主要介绍Python中变量,参数和模块的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1 变量首先,在python中,变量是存储在内存的值,程序在执行创建变量时会在内存中创建一个空间,并且根据变量的数
2023-06-22

Python的pytest参数化实例分析

今天小编给大家分享一下Python的pytest参数化实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。源代码分析def
2023-06-26

Python map接收参数实例分析

这篇文章主要介绍“Python map接收参数实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python map接收参数实例分析”文章能帮助大家解决问题。说明1、map函数接收两个参数,一个
2023-06-30

python中命名关键字参数的使用示例

小编给大家分享一下python中命名关键字参数的使用示例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、如果函数定义中已经有了一个可变参数,后面跟着的命名关键字
2023-06-15

Python可变参数用法实例分析

本文实例讲述了Python可变参数用法。分享给大家供大家参考,具体如下:#!/usr/bin/env python # -*- coding: utf-8 -*- import math def calc(*numbers):sum=0fo
2022-06-04

Python之matplotlib.pyplot基本参数实例分析

这篇文章主要介绍了Python之matplotlib.pyplot基本参数实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Python之matplotlib.pyplot基本参数实例分析文章都会有所收获,
2023-07-02

Python中函数的参数类型实例分析

今天小编给大家分享一下Python中函数的参数类型实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1、Python的函
2023-07-02

python如何实现只包含关键字参数的函数

这篇文章将为大家详细讲解有关python如何实现只包含关键字参数的函数 ,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。只包含关键字参数的函数 (kwargs)当我们使用下面的函数时,创建仅仅需要关键字参数
2023-06-27

C语言数据类型与sizeof关键字实例分析

这篇文章主要介绍“C语言数据类型与sizeof关键字实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C语言数据类型与sizeof关键字实例分析”文章能帮助大家解决问题。一、前言介绍C语言当中的
2023-06-30

mybatis分割字符串并循环实现in多个参数的示例分析

这篇文章主要为大家展示了“mybatis分割字符串并循环实现in多个参数的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“mybatis分割字符串并循环实现in多个参数的示例分析”这篇文章
2023-06-15

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录