1.局部变量
def func(): # a计算局部变量 函数内部的变量 a = "下雨了" print(a) func() # name 'a' is not defined # 函数外部不能使用函数内部的变量 # print(a)
2.全局变量
# 全局变量 a = 100 def print_a(): # 函数内部可以使用全局变量 print(a) print_a() # 函数外部也可以使用全局变量 print(a)
3.共享全局变量
# 定义一个全局变量 glo_num = 0 def change_num(): # 全局变量全局化 可以使用函数内部可以修改全局变量 起到函数之间共享全局变量的作用 # 如果没有全局化 函数内部只能使用全局变量 但不能修改 global glo_num # 修改全局变量 glo_num = 100 def print_num(): # 打印全局变量 print(glo_num) change_num() # 如果修改成功 则打印100 # 但实际情况是没有修改成功 两个函数无法共享全局变量 print_num()
4.函数返回值进行传达
# 函数的返回值作为参数进行传达 # function 函数f(x) def func1(): return "给刘鸡鸡一耳光" def func2(var): # var = result = "给刘鸡鸡一耳光" print("你说", var) # result= “给刘鸡鸡一耳光” result = func1() print(result) # result 传达给var func2(result)
5.拆包元组
def tuple_func(): return 100, 200 # t1 = (100 200) 返回值是一个元组 t1 = tuple_func() print(t1, type(t1)) # 将元组拆包成两个数值 num1, num2 = tuple_func() # num1 = 100 ,num2 = 200 print(num1, num2, type(num1), type(num2))
6.拆包字典
name_dict = {"name": "刘东", "professional": "搬砖"} # 将字典拆开 接收的是键 不是值 # a = name, b=professional a, b = name_dict print(a, b) # 通过拆包之后的键 获取字典的值 print(name_dict[a]) print(name_dict[b])
7.递归
# # 函数调用另外一个函数 # def func(): # print("益阳职业狗不来") # # # def main(): # # 函数内部调用另外一个函数 # func() # main() # 递归特点一 函数自己调用自己 # def main(): # # 函数内部调用另外一个函数 # print("我想去北京") # main() # # # ''' # RecursionError: maximum recursion depth exceeded while calling a Python object # 自己调用自己 出现无法终止程序的特点 导致递归的深度超过性质 # 所以说递归需要一个出口 # ''' # # main() # 3.递归特点 函数必须要有出口 # 打印10 9 8 7 6 5 4 3 2 1 def print_num(num): print(num) # 递归出口但num -1是结束递归 if num == 1: return # 自己调用自己 print_num(num-1) # num = int() print_num(100) # print_num(9) # print_num(8)
8.使用递归实现1加到100
# result = 1 + 2 + 3 + 4 .......... 99 + 100 # def sum_num(num): # # num = 2 # # 递归出口 # if num == 1: # return 1 # # 返回值 # # 2 # # return num + sum_num(num - 1) # # # print(sum_num(100))