函数(一)

2020-05-20  本文已影响0人  Peng_001

调用函数

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)
'''

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

上一篇 下一篇

猜你喜欢

热点阅读