python获取调用函数的注释,如何使用函数注释验证函数调用类型
我最近才发现有一种叫做函数注释的东西,但我不太确定如何使用它。到目前为止,我得到的是:def check_type(f):
def decorated(*args, **kwargs):
counter=0
for arg, type in zip(args, f.__annotations__.items()):
if not isinstance(arg, type[1]):
msg = 'Not the valid type'
raise ValueError(msg)
counter+=1
return f(*args, **kwargs)
return decorated
@check_type
def foo(a: int, b: list, c: str): #a must be int, b must be list, c must be str
print(a,b,c)
foo(12, [1,2], '12') #This works
foo(12, 12, 12) #This raises a value error just as I wanted to
foo(a=12, b=12, c=12) #But this works too:(
如您所见,我尝试使用注释和修饰符检查a、b和{}的类型,如果不是正确的类型,则会引发{}。当我在调用时不使用关键字参数时,它工作得很好。但是如果我使用关键字参数,类型就不会被检查。我想让它成功,但我没有运气。在
我的代码不支持关键字参数。因为我没有任何东西能证明这一点。我也不知道怎么检查。这就是我需要帮助的地方。在
我也是这样做的:
^{pr2}$
python获取调用函数的注释,如何使用函数注释验证函数调用类型相关推荐
- python获取字符串首字母_Python中用startswith()函数判断字符串开头的教程
Python中用startswith()函数判断字符串开头的教程 函数:startswith() 作用:判断字符串是否以指定字符或子字符串开头 一.函数说明语法:string.startswith(s ...
- python 获取系统相关编码的函数
怎么避免UnicodeEncodeError: 'ascii' codec can't-类似的错误? 1.首先在py文件头部指定文件内容编码,例如:# coding: utf8 2.文件保存的时候要和 ...
- Python 获取网站证书有效期
Python获取网站证书有效期 Python获取网站证书有效期 python:OpenSSL和ssl python+shell:subprocess和curl Python获取网站证书有效期 由于某些 ...
- python获取代码当前行数_Python实验室一段日志代码,获取当前调用的函数名和行号...
代码如下: #............. class CrawlerLog(object): def __init__(self, logName=None): #............ self. ...
- python如何调用cpp文件的接口函数_C++中嵌入Python调用
python嵌入到C++中 把python嵌入的C++里面需要做一些步骤 安装python程序,这样才能使用python的头文件和库 在我们写的源文件中增加"Python.h"头文 ...
- python调用php命令行,python调用php函数 python怎样调用php文件中的函数详解
前言 python调用php代码实现思路:php文件可通过在terminal中使用php命令行进行调用,因此可使用python开启子进程执行命令行代码.函数所需的参数可通过命令行传递. 测试环境 1. ...
- python怎么调用函数的返回值类型,10、Python基础之函数的调用与返回值
一.函数参数 1.1 不定长参数 当我们定义函数时,可能需要定义一个函数能处理比当初声明时更多的参数,这些参数叫做不定长参数. 我们可以在形参前面加上一个 * ,这样这个形参就可以获取所有的实参,它将 ...
- python 实例方法调用时可以忽略第一个参数_盘点Python中易忽略的函数
Python 内置函数 1.ord() 函数是 chr() 函数(对于8位的ASCII字符串)或 unichr() 函数(对于Unicode对象)的配对函数,它以一个字符(长度为1的字符串)作为参数, ...
- python getattr调用自己模块_在Python中通过getattr获取对象引用的方法
getattr函数 (1)使用 getattr 函数,可以得到一个直到运行时才知道名称的函数的引用. >>> li = ["Larry", "Curly ...
最新文章
- 网络编程应用:基于TCP协议【实现文件上传】--练习
- 狂神说mysql笔记_Mybatis学习笔记(狂神说)
- ArrayList方法源码
- 3月任务--target
- 让媒体播放控件,播放媒体 0201
- springcloud微服务系列之服务注册与发现组件Eureka
- Bailian2914 计算概论习题-动态存储【排序】
- php7会不会出问题,升级到PHP7后会话不工作
- Journaling日志功能
- 窗口设置的一般操作方法
- 百度地图离线调用(详细教程)
- 华为USG6000V防火墙简单配置案例
- 视频教程-HTML零基础经典入门视频-HTML5/CSS
- FTP,SFTP,FTPS,TF区别
- 奉子成婚,永远不可能成为潮流
- SDHC 存储卡会导致刷机模式不被识别
- 一个屌丝程序员的青春(二二三)
- 树莓派触摸屏翻转显示以及触摸翻转
- IA32 gnu assembly 32 bit instruction pretend to be 64 bit instruction
- 开放机器人控制软件Orocos