抽象

Posted 富坚老贼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了抽象相关的知识,希望对你有一定的参考价值。

一、函数定义和调用

1.定义函数用def

 

2.函数注释

在函数体里的开头写上字符串,可以起到说明的作用

 

 可以用函数名.__doc__的方式读取在函数开头加的字符串(双下划线

 内建的help()函数也能返回此信息

3.多返回值

返回多个值时,会以元组的形式返回

可以用序列解包的方式获取多个值

 

4.无返回值

当函数无返回值时,会自动返回None。return 的关键字可写可不写(但是最好写上,避免混乱)

 

5.递归函数

 

6.函数文档

def fun():
    """ 这是一个空函数

    什么都不做
    """
    pass


print(fun.__doc__)

 

7.函数标注

def fun(a: str) -> str:
    print(fun.__annotations__)
    return a + " hello"


print(fun("abc"))

 

 

二、函数参数

 

1、位置参数

固定顺序的参数就是位置参数

 

2、关键字参数

在调用函数时,通过实参赋值的方式传入参数

这种方式可以打乱传入的位置,

 

 调用时参数必须和定义参数时的变量名一致

这样就会出现错误

3.混用传参

可以同时使用位置参数,和关键字参数的方式,但是关键字参数必须位于位置参数之后

 

 

4.参数默认值

关键字参数还可以在定义函数时使用默认值

定义时默认写了参数则调用时不必再写

 

位置参数和关键字参数联合使用时,要把位置参数放在前面

 

3、收集参数

1、在函数定义形参时,形参前加个*,在调用函数时就可以传入任意多个实参进去。

加了*的参数会作为元组来存放传入的数据

2、当收集参数和关键字参数混用时就不能省略关键字参数了,而且能重新赋值

 

可变参数可以在函数的任意位置,但只能有一个

 

3.定义函数时形参前加**,调用函数时,可以已a=b的方式传入

最后以字典的方式存放数据

4.逆向参数收集

由序列传给函数,在由函数自动拆开序列的方式

 

 列表和元组用 *传入,字典用**传入

 5.函数的传递机制

如果传参是个字符串,函数外定义的字符串,在函数里重新赋值后外部是不变的

但如果传参是一个列表则可以改变函数外的列表值

????

6.变量作用域

 

7.函数变量

可以把函数赋值给变量来使用

8.函数参数

 可以把函数当做参数来传递

9.使用函数作为返回值

 

 

 

三、lambda表达式

 

四、作用域

 

locals()

globals()

以上是关于抽象的主要内容,如果未能解决你的问题,请参考以下文章

条件片段和导航重用

Android 逆向类加载器 ClassLoader ( 类加载器源码简介 | BaseDexClassLoader | DexClassLoader | PathClassLoader )(代码片段

如何将 ViewBinding 与抽象基类一起使用

Android片段和依赖注入

Android 片段和依赖注入

计算光栅化片段的数量