解释经常在python源码中看到的@,->和:等符号。python在函数名或类名首字母用_来表示私有接口(仅供内部使用)。

标注

关联到某个变量、类属性、函数形参或返回值的标签,被约定作为类型提示来使用。
局部变量的标注在运行时不可访问,但全局变量、类属性和函数的标注会分别存放模块、类和函数的 __annotations __特殊属性中。

类型提示

标注为变量、类属性、函数的形参或返回值指定预期的类型。

类型提示属于可选项,Python 不要求提供,但其可对静态类型分析工具起作用,并可协助 IDE 实现代码补全与重构。

全局变量、类属性和函数的类型提示可以使用 typing.get_type_hints() 来访问,但局部变量则不可以。

typing.get_type_hints()

返回一个字典,字典内含有函数、方法、模块或类对象的类型提示。

一般情况下,与 obj.__annotations __相同。此外,可通过在 globals 与 locals 命名空间里进行评估,以此来处理编码为字符串字面量的前向引用。如有需要,在默认值设置为 None时,可为函数或方法注解添加 Optional[t]。对于类 C,则返回一个由所有__annotations__与 C.__mro__逆序合并而成的字典。

函数标注

即针对函数形参或返回值的标注。
函数标注通常用于类型提示:

形参标注:在形参名称后面加 : expression 即可。
函数返回标注:在形参列表后加 -> expression即可。

例如以下函数预期接受两个 int 参数并预期返回一个 int 值:

def sum_two_numbers(a: int, b: int) -> int:return a + b

变量标注

对变量或类属性的标注。

在标注变量或类属性时,还可选择为其赋值:

class C:field: 'annotation'

变量标注通常被用作类型提示:
例如以下变量预期接受 int 类型的值:

count: int = 0

装饰器

返回值为另一个函数的函数,通常使用@wrapper语法形式进行函数变换。
装饰器的常见例子包括 classmethod() 和 staticmethod()

装饰器语法只是一种语法糖,以下两个函数定义在语义上完全等价:

def f(...):...
f = staticmethod(f)@staticmethod
def f(...):...

@staticmethod

将方法转换为静态方法。
静态方法不会接收隐式的第一个参数。要声明一个静态方法,请使用此语法:

class C:@staticmethoddef f(arg1, arg2, ...): ...

静态方法的调用可以在类上进行 (例如 C.f()) 也可以在实例上进行 (例如 C().f())。
像所有装饰器一样,也可以像常规函数一样调用 staticmethod ,并对其结果执行某些操作。比如某些情况下需要从类主体引用函数并且您希望避免自动转换为实例方法。对于这些情况,请使用此语法:

class C:builtin_open = staticmethod(open)

@classmethod

把一个方法封装成类方法。
一个类方法把类自己作为第一个实参,就像一个实例方法把实例自己作为第一个实参。请用以下习惯来声明类方法:

class C:@classmethoddef f(cls, arg1, arg2, ...): ...

类方法的调用可以在类上进行 (例如 C.f()) 也可以在实例上进行 (例如 C().f())。 其所属类以外的类实例会被忽略。 如果类方法在其所属类的派生类上调用,则该派生类对象会被作为隐含的第一个参数被传入。

Python中的符号相关推荐

  1. python中的@符号的作用

    python中的@符号的作用_weixin_34014555的博客-CSDN博客 Python中的" @"(@)符号有什么作用?_p15097962069的博客-CSDN博客

  2. python中哪个符号用于从包中导入模块__学小易找答案

    [简答题]7个积分题 [单选题]5. Is it time for the meeting now? [单选题]result = lambda x: x * x print(result(5)) 以上 ...

  3. python中的符号下划线_详解Python中下划线的使用方法

    编程派微信号:codingpy 这篇文章讨论Python中下划线_的使用.跟Python中很多用法类似,下划线 _ 的不同用法绝大部分(不全是)都是一种惯例约定. 单个下划线(_) 主要有三种情况: ...

  4. python各种常用符号的意思_写一篇专门介绍python中各种符号的意义及用法

    挖槽,小米今天上市就破发了,好多认购的小伙伴有点慌了,其实对于小帅b来说这很正常,没必要慌,保持持有就好了,相信小米会越来越牛逼的.小米和可能会成为互联网新一代的霸主主一,到时候可能就不是BAT了,而 ...

  5. python中特殊符号怎么输入_python中怎么输入引号

    Python中的引号可分为单引号.双引号和三引号. 在Python中我们都知道单引号和双引号都可以用来表示一个字符串,比如str1 = 'python' str2 = "python&quo ...

  6. python中求和符号怎么打_SymPy求和表达式中的代换符号

    我想替换求和中的符号并打印出计算的表达式,但当我尝试这样做时,会遇到错误.在 正确的方法是什么?这可能吗?在 我用这种方式创建了一个求和表达式:>>> from sympy impo ...

  7. python中四则运算符号_Python-四则运算-蔡晓晴,杜婷萱

    一.需求 1.使用-n 参数控制生成题目的个数 2.使用-r 参数控制题目中数值(自然数.真分数和真分数分母)的范围 3.生成的题目中计算过程不能产生负数 4. 生成的题目中如果存在形如e1 ÷ e2 ...

  8. python中运算符号怎样表示_Python中的运算符与表达式

    你所编写的大多数语句(逻辑行)都包含了表达式(Expressions).一个表达式的简单例子便是 2+3.表达式可以拆分成运算符(Operators)与操作数(Operands). 运算符(Opera ...

  9. python中求和符号怎么打_参数siz向量的python符号求和与微分

    您可以使用SymPy 1.0版中引入的新张量数组模块.在 我假设您的K和M参数是数字,而不是符号(否则我建议使用symphy.tensor.索引).在 考虑两个向量的长度.因此,X是秩2和形(2,3) ...

最新文章

  1. python监控数据库_【Python】NavicatPre查询日志监控并转存数据库
  2. P3项目轶事之一票否决的新员工培训
  3. 计算机组成原理 — CPU — 缓存访问
  4. Binary Tree Preorder Traversal LeetCode OJ
  5. idea安装行号快速定位行快捷键以及设置方法
  6. 轴承新旧型号对照表_精密机床主轴轴承,高端轴承进口清关报关流程
  7. 前端学习(148):html和xhtml的区别
  8. java office文件加水印_永中Office与统一操作系统UOS完成适配,开辟高效智能办公新领域...
  9. 递归:我不用栈 非递归:栈使我快乐
  10. org.postgresql.util.PSQLException: 栏位索引超过许可范围:1,栏位数:0
  11. 组合数(nyoj32)
  12. 经验分享:java批量读取txt文件入库
  13. Redis 如何存储上亿级别的用户状态?
  14. 有符号char和无符号char
  15. 动手刷LeetCode-转换罗马字符
  16. JavaScript纯数字密码的密码复杂度简单校验
  17. Kali之——设置静态IP
  18. SSE(服务器推送事件)的介绍、问题及解决
  19. JVM虚拟机(JDK8)
  20. 小巧易用的分区工具——MiniTool Partition Wizard

热门文章

  1. 詹金斯搭建_与詹金斯一起将GitLab中的Gradle项目发布到Artifactory
  2. jdk8分组统计字段和_JDK 8流和分组
  3. 数据库 测试数据生成_测试数据生成器和对象母亲:另一种外观
  4. JMetro版本5发布
  5. 两个Oracle JDK的故事
  6. 使用RabbitMQ进行消息传递
  7. soa学习路线_Web服务安全性和SOA路线图的人为维度
  8. 使用Gatling + Gradle + Jenkins Pipeline为您的JAX-RS(和JavaEE)应用程序进行连续压力测试...
  9. 十大有用但又偏执的Java编程技术
  10. 不要被泛型和向后兼容性所愚弄。 使用泛型类型