Python函数基础
基本定义
作用:封装代码,高效的代码重用
使用步骤
-
定义函数
def 函数名(): 代码1 代码2 ... -
调用函数
函数名() -
函数的参数:函数调用时候可以传入的真实数据,增大函数使用的灵活性
- 形参:函数定义时书写的参数(非真实数据)
- 实参:函数调用时书写的参数(真实数据)
-
函数的返回值
-
作用:函数调用后,返回需要的计算结果
-
写法
return 表达式
-
-
函数的说明文档
-
作用:保存函数解释说明的信息
-
写法
def 函数名(): """函数说明文档"""
-
-
函数的嵌套调用:一个函数内部嵌套调用另外一个函数
变量的作用域和global变量
变量作用域指的是变量生效的范围,主要分为两类:局部变量和全局变量。
- 局部变量
所谓局部变量是定义在函数体内部的变量,即只在函数体内部生效。
def testA():
a = 100
print(a)
testA() # 100
print(a) # 报错:name 'a' is not defined
变量a是定义在
testA函数内部的变量,在函数外部访问则立即报错。
局部变量的作用:在函数体内部,临时保存数据,即当函数调用完成后,则销毁局部变量。
- 全局变量
所谓全局变量,指的是在函数体内、外都能生效的变量。
# 定义全局变量a
a = 100
def testA():
print(a) # 访问全局变量a,并打印变量a存储的数据
def testB():
print(a) # 访问全局变量a,并打印变量a存储的数据
testA() # 100
testB() # 100
思考:testB函数需求修改变量a的值为200,如何修改程序?
a = 100
def testA():
print(a)
def testB():
a = 200
print(a)
testA() # 100
testB() # 200
print(f'全局变量a = {a}') # 全局变量a = 100
思考:在testB函数内部的a = 200中的变量a是在修改全局变量a吗?
答:不是。观察上述代码发现,15行得到a的数据是100,仍然是定义全局变量a时候的值,而没有返回
testB函数内部的200。综上:testB函数内部的a = 200是定义了一个局部变量。
a = 100
def testA():
print(a)
def testB():
# global 关键字声明a是全局变量
global a
a = 200
print(a)
testA() # 100
testB() # 200
print(f'全局变量a = {a}') # 全局变量a = 200
函数的返回值
思考:如果一个函数如些两个return (如下所示),程序如何执行?
def return_num():
return 1
return 2
result = return_num()
print(result) # 1
答:只执行了第一个return,原因是因为return可以退出当前函数,导致return下方的代码不执行。
思考:如果一个函数要有多个返回值,该如何书写代码?
def return_num():
return 1, 2
result = return_num()
print(result) # (1, 2)
注意:
return a, b写法,返回多个数据的时候,默认是元组类型。- return后面可以连接列表、元组或字典,以返回多个值。
拆包
- 拆包:元组
def return_num():
return 100, 200
num1, num2 = return_num()
print(num1) # 100
print(num2) # 200
- 拆包:字典
dict1 = {'name': 'TOM', 'age': 18}
a, b = dict1
# 对字典进行拆包,取出来的是字典的key
print(a) # name
print(b) # age
print(dict1[a]) # TOM
print(dict1[b]) # 18

浙公网安备 33010602011771号