美文网首页
函数(一)

函数(一)

作者: Peng_001 | 来源:发表于2020-05-20 17:04 被阅读0次

    调用函数

    python 内置了很多函数。如 abs, max等等

    对于内建函数的说明,官方提供了相应的介绍文档学习。
    https://docs.python.org/3/library/functions.html
    如果对相关函数不清楚,也可以使用help()命令帮助查看。

    当我们使用非python 内置函数,如自己设计的或其他人封装好的包时,就需要使用import

    报错

    当调用函数,传入的参数数量不对时,会报TypeError。并且会告诉你参数的正确数量。

    当传入的参数类型不正确,也会报TypeError,并会告诉你正确的类型。

    数据类型转换

    int()
    float()
    str()
    bool()
    

    函数赋值

    函数名,其实也就是对函数对象的引用。因此也可以将函数名赋值给变量。

    定义函数

    python 中,使用def 来对函数进行定义,其实和R 中的function 是非常类似的。并且最终使用return 返回指定的值。

    比如,我们自己可以定义一个abs 函数。

    # 定义函数
    def my_abs(x):
        if x >= 0:
            return x
        if x < 0:
            return -x
    
    a = -10
    # 调用函数
    print(my_abs(a))
    

    而函数内部,通过条件和循环语句,便可以实现非常复杂的结构,以达到复杂的功能。

    还要注意的是,一旦执行到return,程序就执行完毕,并返回结果。如果没有return 语句,除了内部执行的交互指令外(print等),函数会返回None

    空函数

    什么是空函数?

    就是什么也不做的函数。可以通过 pass 作为函数的内部信息。

    def nada():
      pass
    

    那空函数有什么用呢?

    使用pass,可以起到占位符的作用。即如果我们想定义某个函数,并给它起了个名字。但是在程序中,还一时半会想不到该用它来做些什么,这时候,我们就可以使用空函数,利用pass,先占个坑,一会儿再来补上它,而不至于程序无法运行。

    除此之外,pass还可以应用在其他语句中,如while, if, for 中,同样起到“占坑”目的,不使程序报错。

    参数检查

    一般一个好的函数,都会对其输入的参数进行检查。比如,我想设计一个计算平均分的小程序,那录入的参数类型一定不可能是str

    python 的参数检查可以用内置的函数isinstance() 来执行。
    还是用之前的abs 函数。
    isinstance() 包含两个参数信息,isinstance(object, classinfo),前者是定义的参数对象,后者是指定的条件类型,int, float, 或是 str等。

    # 定义函数
    def my_abs(x):
        if not isinstance(x, (int, float)):
            raise TypeError("bad operand type")
        if x >= 0:
            return x
        if x < 0:
            return -x
    

    返回多个值

    有的时候,我们可能需要返回多个值。

    比如当我想做一个函数,可以一次将两个数字取abs。

    def my_max(a, b):
        if a > 0 and b > 0:
            return a, b 
        if a < 0 and b < 0:
            return -a, -b
        if a > 0 and b < 0:
            return a, -b
        if a < 0 and b >0:
            return -a, b
    
    a, b = my_max(-2, 5)
    print(a, b)
    

    我们便可以同时获得两个返回值。

    假象

    如果我们直接定义

    a = my_max(-2, 5)
    print(a)
    '''
    返回值会是一个元组
    (2, 5)
    '''
    

    而因为在语法上,多个变量可以同时接受同一个元组信息,并且按位置赋值,而单个元组在返回时可以省略() 因此,会产生一种返回了两个数值的错觉,实际上只是返回了一个数值,其类型为元组。

    相关文章

      网友评论

          本文标题:函数(一)

          本文链接:https://www.haomeiwen.com/subject/ypigohtx.html