函数基础
概念
对实现某一特定功能的代码段的封装
分类
自定义函数和内置函数
内置函数: 系统自带可直接使用的函数 如:print函数、len函数等
自定义函数: 程序员自己创建的函数
定义
def 函数名(参数列表):
函数体
# def:python中声明函数的关键字
# 函数名:标识符,不能是关键字;规范PEP8/见名知意
# 参数列表:参数可以有多个,用于传值的作用(将函数外的值传到函数里面)
# 函数体:实现函数功能的代码段,包含return时可用于函数内向外传值。
#函数只有在调用时才会执行
调用
函数名(实参列表)
# 执行调用的函数,所调用的函数必须先声明。
函数的调用过程
a.回到函数声明的位置
b.使用实参给形参赋值,即传参
c.执行函数体
d.返回返回值
- 案例
# 写一个函数,打印一个整数的阶乘
def factorial(num):
number =1
for n in range(1,num+1):
number *= n
print('number:%d' % number)
factorial(5)
result:
number:120
函数的声明和调用
参数 函数声明的时候的参数列表中参数是形参,调用函数的参数是实参
传参 实参赋值给形参的过程
实参
1.位置参数:传参的时候实参和形参的位置一一对应
2.关键字参数:通过'形参=实参'的方式传入参数,参数位置不用一一对应
参数的默认值
在声明函数的时候,可以参数赋默认值。有默认值的参数必须放置于参数最后,所有参数带默认值时也可以不传参数使用默认参数。
def func(a=1, b='zxc',c='lax'):
print(a, b, c)
func() #全部使用默认值
func(5,c='lucian') #部分使用默认值
result:
1 zxc lax
5 zxc lucian
不定长度参数
- python中通过在形参名前加
*
号,让形参变成一个元组,可以使形参同时接受到多个实参(0或多个) - 如果有普通参数和不定长参数,通常将不定长参数放在之后。或者普通参数用关键字参数表示。
- python中通过在形参名前加
**
号,让形参变成一个字典。
def func2(ano,*num,**da):
print(ano,num,type(num),da,type(da))
func2(2)
func2(2,2,{3:'2'})
result:
2 () <class 'tuple'> {} <class 'dict'>
2 (2, {3: '2'}) <class 'tuple'> {} <class 'dict'>
参数类型说明
- Python中不能直接约束一个变量的类型。但是可以通过调用说明,提示用户调用参数的类型。
- 它的好处是函数内相关参数使用函数也有提示
def func4(name:str, age:int, school):
print(name.upper(), age, school)
func4('da',10, 'adsads')
result:
DA 10 adsads
函数的返回值
- 函数的返回值就是
return
关键字的后面的表达式的值。就是函数调用表达式的结果。 - python中所有的函数都有返回值。
- 没有return时,调用表达式就返回None
- 调用函数的语句就是调用表达式
没有return关键字返回None
def func1():
print('没有return,默认返回None')
se = func1()
print(se)
result:
没有return,默认返回None
None
有return关键字
- 确定返回值
- 结束函数,遇到return函数立即结束
- 只要是实现函数的功能会产生新的数据,就通过返回值来处理。
注意: 看一个函数的返回值,要以函数执行过程中是否执行return而定。
def func2(n):
if n%2:
return False
else:
return True
words = func2(25)
print(words)
result:
False
判断函数的类型
- 判断函数的类型
isinstance(obj,type)
- bool类型中的true和false可以是bool,也可以是int
print(isinstance(False,int))
print(isinstance(False,bool))
result:
True
True