调用函数
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)
'''
而因为在语法上,多个变量可以同时接受同一个元组信息,并且按位置赋值,而单个元组在返回时可以省略()
因此,会产生一种返回了两个数值的错觉,实际上只是返回了一个数值,其类型为元组。
网友评论