首页 > 编程语言 >Python中的函数注释:参数有冒号,声明后有-> 箭头

Python中的函数注释:参数有冒号,声明后有-> 箭头

时间:2023-09-27 11:08:07浏览次数:61  
标签:冒号 函数 Python 箭头 参数 str 类型 Optional Annotations


Python中的函数注释:参数有冒号,声明后有-> 箭头_类型参数

我在查看python的fixture源码时发现 fixture的方法定义形式如下:

def fixture(

    fixture_function: Optional[_FixtureFunction] = None,

    *,

    scope: "Union[_Scope, Callable[[str, Config], _Scope]]" = "function",

    params: Optional[Iterable[object]] = None,

    autouse: bool = False,

    ids: Optional[

        Union[

            Iterable[Union[None, str, float, int, bool]],

            Callable[[Any], Optional[object]],

        ]

    ] = None,

    name: Optional[str] = None,

) -> Union[FixtureFunctionMarker, _FixtureFunction]:

我顿时有些凌乱,不知这是什么东东,经过各种网上查找资料,发现这是Python 3.X新增加的一个特性,叫作函数注释 Function Annotations。它的用途虽然不是语法级别的硬性要求,但是顾名思义,它可作为函数额外的注释来用。他的用法也很简单。

在python中定义普通的函数,方法如下:

def f1(a,b):

    return a+b

通过函数注释,方法定义如下:

def f2(a: "str类型参数a", b: "str类型参数b") -> str:

    print("Annotations:", f2.__annotations__)

    return a+b

其中

a: "str类型参数a"代表了对参数a的说明

b: "str类型参数b"代表了对参数b的说明

-> str:代表了函数的返回值

f2.__annotations__查看函数的注释说明

运行 print(f2(‘aa’,‘bb’)),输出:

Annotations: {‘a’: ‘str类型参数a’, ‘b’: ‘str类型参数b’, ‘return’: <class ‘str’>}

aabb

那么定义了函数的参数类型和返回值类型我们是否就不可以对其进行修改了呢,让我们做如下尝试:

print(f2(1,2)),输出:

Annotations: {‘a’: ‘str类型参数a’, ‘b’: ‘str类型参数b’, ‘return’: <class ‘str’>}

3

可见, Function Annotations它的作用仅仅是为函数进行注释来用,并不能指定参数类型。


标签:冒号,函数,Python,箭头,参数,str,类型,Optional,Annotations
From: https://blog.51cto.com/liwen629/7621617

相关文章

  • 接口测试系列文章3——Python接口测试其实只需三步!
    接口测试通用步骤小品中曾说过,大象放冰箱里分三步!分别是:一、把冰箱门打开二、把大象放到冰箱里三、把门关上那么问题来了!通过代码做接口测试分几步呢?答:也分三步!其实无论是手工进行接口测试还是通过代码进行接口测试,三个核心步骤如下:构建接口发送接口校验接口Python编码进行......
  • 进阶Python,从编写Python函数开始!
    好多同学都有这样的疑惑,我学习了python的基础语法,那么具体应用该从哪里入手呢?首先大家要确定,代码必须用起来才能越来越熟练!读懂十行代码不如自己亲自上手遍写一行!代码想熟练最好的方法就是能够通过代码解决工作中的实际问题,例如完成UI自动化测试、接口测试、创建测试数据、构建测试......
  • 测试同学必须熟悉的python模块
    测试同学在进行python的面试过程中,必问的问题是你最常用的python模块有哪些?这些模块解决了你工作中的哪些问题?在这里我把测试同学在实际工作中常用的py模块进行了汇总,本文编写的目的是对各个模块的功能进行概要介绍并没有提供具体api的使用方法,如果大家想要深入了解各个模块api的具......
  • Python高频面试题——装饰器(带大家理解装饰器的本质)
    装饰器概念装饰器本质上是一个python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限验证等场景,装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可......
  • Python高频面试题——生成器(最通俗的讲解)
    生成器定义在Python中,使用了yield的函数被称为生成器(generator)。跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。在调用生成器运行的过程中,每次遇到yield时函数会暂停并保存当前所有的运行信息,返回yield的值,并在......
  • playwright python环境运行报错 ImportError: DLL load failed
    网上建议网上好多文章介绍playwright的环境搭建,用以下两条语句即可完成pipinstallplaywrightplaywrightinstall安装完毕后,尝试执行一段经典的pythondemofromplaywright.sync_apiimportsync_playwrightwithsync_playwright()asp:browser=p.chromium.launch()page......
  • Python高频面试题——迭代器和可迭代对象
     无论是面试测试还是运维涉及到python编码岗位时,迭代器和可迭代对象都是绕不开的一个问题,本文对这两个概念进行重点讲解,本文从什么是迭代讲起,然后介绍迭代器和可迭代对象二者的区别,最后通过for循环和自定义迭代器来加深读者对这两个概念的理解,只要认真阅读完文章,相信一定会帮助到......
  • Python爬虫-爬取百度搜索结果页的网页标题及其真实网址
    共两个依赖的需提前安装的第三方库:requests和bs4库cmd命令行输入安装requests库:pip3install-ihttps://pypi.douban.com/simplerequests安装bs4库:pip3install-ihttps://pypi.douban.com/simplebeautifulsoup4 本微项目源文件下载地址:https://wwuw.lanzouj.com/i1Au51......
  • Python 图片并行下载
    需求:有大量图片的url需要将其快速下载到本地技术点:采用编写并发代码的库asyncio以及基于asyncio实现的HTTP框架aiohttppipinstallasynciopipinstallaiohttp代码如下:importjsonimportosimportrequestsimportaiohttpimportasyncioimage_save_dir="images"......
  • Python面试高频问题:修改list中某个元素时的坑
    在Python面试中经常会考这样一个题目,遍历列表,如果列表中有某某元素,那么将其替换成"test"。题目看似简单,其实有个坑在里面!从面试结果来看,大多数同学都会这样写:l=["a","b","c"]foriinl:if"a"==i:i="test"print(l)运行后,大家会发现输出的l值还是['a',......