小甲鱼 发表于 2022-3-11 04:50:26

已有 25 人购买  本主题需向作者支付 5 鱼币 才能浏览 购买主题

小古比鱼 发表于 2022-4-14 10:40:39

本节讲了几个有趣的概念——首先是函数文档,也就是函数的说明书,只需使用字符串(三引号多行字符串)即可创建,写在函数最顶部,函数主体之前,可使用help()函数进行查看;其次是类型注释,也就是函数作者为函数参数类型及返回值类型写的提示,是函数作者的一种期望,可以违反,这也是Python 3为满足用户需求催生出的新特性,还可以使用第三方模块Mypy让Python帮忙真正做一下类型检测;最后是内省,也叫自省,是程序运行时进行自我检测的机制,通过一些特殊的属性来实现,如__name__获取函数名,__annotations__获取类型注释,__doc__获取函数文档等。总之,这些都是与函数息息相关的“冷知识”,在现实开发中常会用到。期待后续有关类、对象以及魔法方法的介绍!

fishcyou 发表于 2022-5-5 11:14:46

函数文档:

def exchange(dollar, rate=6.5):
    """
    功能:汇率转换,美元 -> 人民币
    参数:
    - dollar 美元数量
    - rate 汇率,默认值是 6.5
    返回值:
    - 人民币的数量
    """
    return dollar * rate

help(exchange)
>>>
Help on function exchange in module __main__:

exchange(dollar, rate=6.5)
    功能:汇率转换,美元 -> 人民币
    参数:
    - dollar 美元数量
    - rate 汇率,默认值是 6.5
    返回值:
    - 人民币的数量

exchange(20)
>>>
130.0

内省也叫自省,是程序运行时进行自我检测的机制,通过一些特殊的属性来实现。
如果想获取我们之前定义的exchange函数文档:

print(exchange.__doc__)

    功能:汇率转换,美元 -> 人民币
    参数:
    - dollar 美元数量
    - rate 汇率,默认值是 6.5
    返回值:
    - 人民币的数量

类型注释是给人看的,程序默认是不会检测的。

def times(s:list, n:int = 3) -> list:
    return s * n

times()
>>>


# :后面的为类型注释

炎凉来寻 发表于 2022-9-16 21:03:08

打卡{:10_257:}

chenjinchao 发表于 2022-10-11 15:36:28

卡打

墨墨在努力吖 发表于 2022-10-18 17:58:47

>>> def times(s:list,n:int=2) -> list:
        return s*n

Traceback (most recent call last):
File "<pyshell#40>", line 1, in <module>
    def times(s:list,n:int=2) -> list:
TypeError: 'type' object is not subscriptable
>>> def times(s:dict,n:int=2)->list:
        return list(s.keys())*n

Traceback (most recent call last):
File "<pyshell#43>", line 1, in <module>
    def times(s:dict,n:int=2)->list:
TypeError: 'type' object is not subscriptable “类型对象不可下标”!!!

是因为版本太低吗?我现在用的是3.7.3

求解答{:10_269:}

migu_sm1 发表于 2022-11-10 11:16:28

Learning...3.10版一切正常.

lxping 发表于 2022-11-15 23:02:04

打卡

andyleesh 发表于 2023-1-4 19:13:34

打卡,本节理论和概念比较强,还可以
页: [1]
查看完整版本: 第051讲:函数(XI)- 函数文档、类型注释、内省