一、函数的定义
1.函数的组成部分
- 函数名:遵循变量命名规则,应具有描述性
- 参数:传递给函数的值(可选)
- 函数体:包含实际执行的代码
- return 语句:返回结果(可选,默认返回 None)
创建一个新函数。使用形式如下:
def 函数名(参数):
代码块
return 返回值
注意点:
- def 是函数的保留字,表示创建一个函数。不能忽略def语句最右边的冒号。
- 函数名表示被定义的函数名称。函数名可任意指定,但需要遵守有函数命名规则(与变量命名规则相同)
- 代码块即用于实现函数功能的具体代码内容。需要注意的是代码块相对于def行要缩进一个制表符。
- return用于将函数执行后的数据返回给调用函数。如果不需要将数据返回给调用函数,则不需要将数据返回给调用函数,则不必要使用return语句。
创建一个简单函数
def fun1():
for i in range(10):
print(i,end='')
fun()
fun1右侧括号为空,表明函数无需接收参数。
代码块表示输出数字0~9。定义函数后不会被执行,只有调用函数才会被执行
2.函数的调用
创建完一个函数后,对其进行使用的过程称为函数的调用。
形式如下:
函数名(参数)
fun1()
执行结果如下
3.函数的复用
定义函数最大的优点在于如果需要经常使用某些功能,将这些功能创建成函数,避免了重复编写繁杂代码,使用时只需调用即可。
示例代码(实现计算多个数值的阶乘)
def fun3(n):
b=1
for i in range(1,n+1):
b=int(i)*b
return b
b=fun3(4)+fun3(5)+fun3(6)
print(b)
return 返回值:
return
语句是 Python 函数中最重要的组成部分之一,它决定了函数的输出和终止时机。
return有以下四种功能
- 返回单个值
def add(a, b):
return a + b
result = add(3, 5)
print(result) # 输出: 8
- 返回多个值(一般以元组的形式返回所有值)
def fun2():
ls = ['张三','李四']
a = len(ls)
b = ls.pop()
return a,b
print(fun2())
- 无返回值
定义函数不带return语句。函数执行完毕后,调用函数的代码将默认接收到一个空值,即None
def fun3():
for i in range(10):
print(i)
print(fun3())
二、函数的参数
1. 形参和实参:
def 函数名(形参1,形参2.......)
代码块
return 返回值
函数名(实参1,实参2........)
由该框架可知,定义函数处函数名括号内为形参(为变量),参数之间用逗号隔开
调用函数时,使用实际数据为 实参,将实参带入函数中。
例:
def fun3(n): #n为形参 是个变量
b = 1
for i in range(1,n+1):
b = int(i)*b
return b
a = input("请输入一个数字:")
#fun3(int(a)) 其中int(a)为实参为一个实际数字
print(a,'的阶乘:',fun3(int(a)))
2.默认参数
指函数定义时,形参被赋值为默认参数。使用形式如下
def 函数名(形参1,形参2=数据2):
代码块
return 语句
注:
- 当调用函数没有填入实参2数据时,形参2默认为数据2,进入函数。
- 当调用函数填入看实参2数据时,则数据2会被实参2数据覆盖。
例
def circle_s(r,pi=3.14):
return r*r*pi
a = circle_s(3)
b = circle_s(3,pi=3.1415926)
print(a,b)
传递顺序与形参数据不同时,形参接收参数时,会根据变量名来进行匹配
3.可变参数
当不确定函数中需要接收参数的个数时,可以使用可变参数。在参数前面加入一个*即可将其转换为可变参数。其使用形式如下:
def 函数名(形参1,*形参2):
注:
- 可变参数必须位于必填参数的右边以保证必填参数先接受到数据,再将剩余的数据传递给可变参数。
- 可变参数以元组的形式接收数据
例 :
def fn(a,*b): #b为可变参数
print(b) #输出元组
c = 0
for i in b:
c += a*i
return c
print(fn(3,2,5,6,7))
三、全局变量和局部变量
1.全局变量
全局变量可以在整个代码文件中被使用,函数内部代码也可以使用外部定义的全局变量。
示例代码
def fun5(a,b,c=10):
d = a*a+b*b+c*c+e
return d
e = 10
print(fun5(1,2,3))
2.局部变量
示例代码
运行结果中的“ name 'a' is not define'表面a只能局部范围(函数内)使用a,b,c均为局部变量。
def fun5(a,b,c=10):
d = a*a+b*b+c*c
return d
print(fun5(1,2,3))
print(a)
注:1.当在函数中使用全局变量且对全局变量进行了赋值时,将会重新在函数内部创建一个新的局部变量,而不是直接使用全局变量
例: 报错:'a' referenced before assignment可知全局变量a被重新赋值,创建了一个新的局部变量‘a'所以第一个print内的a为被赋值。
删去第一个‘print('a+b的值: ',a+b)’得出以下代码以及运行结果
2.如果需要在函数内外都使用一个变量,可以在函数中使用global关键字声明变量。
global声明全局变量示例代码:
用global声明a,函数内部的“a“变为全局变量,该代码不再报错 。