前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python - typing 模块 —— Optional

Python - typing 模块 —— Optional

作者头像
小菠萝测试笔记
发布2021-08-25 11:16:27
1.2K0
发布2021-08-25 11:16:27
举报

前言

typing 是在 python 3.5 才有的模块

前置学习

Python 类型提示:https://cloud.tencent.com/developer/article/1864619

常用类型提示

https://cloud.tencent.com/developer/article/1866298

类型别名

https://www.cnblogs.com/poloyy/p/15153883.html

NewType

https://cloud.tencent.com/developer/article/1866296

Callable

https://cloud.tencent.com/developer/article/1866297

TypeVar 泛型

https://cloud.tencent.com/developer/article/1866293

Any Type

https://cloud.tencent.com/developer/article/1866294

Union

https://cloud.tencent.com/developer/article/1867496

Optional

可选类型

和默认参数有什么不一样

  • 官方原话:可选参数具有默认值,具有默认值的可选参数不需要在其类型批注上使用 Optional,因为它是可选的
  • 不过 Optional 和默认参数其实没啥实质上的区别,只是写法不同
  • 使用 Optional 是为了让 IDE 识别到该参数有一个类型提示,可以传指定的类型和 None,且参数是可选非必传的
代码语言:javascript
复制
# 可选参数
def foo(arg: int = 0) -> None:
    ...


# 不传 arg 默认取 0
foo()

重点

  • Optionalint 等价于 Unionint, None
  • 意味着:既可以传指定的类型 int,也可以传 None

实际栗子

代码语言:javascript
复制
def foo_func(arg: Optional[int] = None):
    print(arg)


foo_func()
foo_func(1)


# 输出结果
None
1
使用默认参数的写法
代码语言:javascript
复制
def foo_func(arg: int = None):
    print(arg)


foo_func()
foo_func(1)


# 输出结果
None
1

这种写法,Pycharm 并不会 warning

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-08-21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
    • 前置学习
    • 常用类型提示
    • 类型别名
    • NewType
    • Callable
    • TypeVar 泛型
    • Any Type
    • Union
    • Optional
      • 和默认参数有什么不一样
      • 重点
        • 实际栗子
          • 使用默认参数的写法
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档