Python(十一)——自定义函数的详细使用
1、函数的定义和调用
函数定义格式:
def 函数名(参数列表):
#代码块
[return [返回值]]
-
参数列表:函数可以接收多个参数,参数之间用逗号隔开
-
返回值:返回值可以有也可以没有
使用实例:打印两个数的最大值
def fun1(a, b):
if a >= b:
return a
else:
return b
#调用函数
print(fun1(10, 20))
执行结果:
20
形参和实参
形参:在定义函数时,函数名后面括号中的参数
实参:在调用函数时,函数名后面括号中的参数
#obj 形参
def demo(obj):
print(obj)
#a 实参
a = 'abc'
def(a)
位置参数和关键字参数
使用实例:
#位置参数:
fun1(10, 20)
#关键字参数:
fun1(a=10, b=20)
#混合传参:关键字参数必须位于所有的位置参数之后
fun1(10, b=20)
默认参数
在定义函数时,可以直接给形式参数指定一个默认值,在调用时不指定参数的值,也可以直接使用定义函数时设置的默认值。
定义时,有默认值的参数要定义在后面:
def fun2(b, a=10):
c = a+b
print(c)
#调用函数
fun2(20)
执行结果:调用时给b传的值为20,而a使用的是默认值10
30
2、全局变量和局部变量
局部变量:定义在函数内部的变量,只能在函数内部使用
def fun3():
#局部变量
a = 10
b = 20
print(a+b)
fun3()
#在外部使用局部变量
print(a+b)
执行结果:使用局部变量时报错,NameError: name ‘a’ is not defined 变量未定义
30
Traceback (most recent call last):
File "E:/Python学习代码/function.py", line 28, in <module>
print(a+b)
NameError: name 'a' is not defined
全局变量:定义在函数外部的变量,可以在函数外部使用,也可以在函数内部使用
#定义全局变量
c = 20
d = 30
def fun4():
print(c+d)
fun4()
print(c+d)
执行结果:全局变量在函数内外都被使用
50
50
3、局部函数
在函数内部定义的函数,称为局部函数
def outdef ():
#定义局部函数
def innerdef():
print("定义局部函数")
#局部函数作为返回值
return innerdef1()
outdef()
执行结果:将局部函数作为返回值,就可以在全局范围内使用
定义局部函数
注意事项:局部函数中不能定义有和所在函数中变量同名的变量,会报如下错误:UnboundLocalError: local variable ‘name’ referenced before assignment