1、局部变量与全局变量
1 # -*- coding:utf-8 -*- 2 name = "zf" # 全局变量 3 4 5 def change_name(): 6 name = "123" # 这个name只在函数里面执行 局部变量 global name 定义一个全局变量name 7 print("change_name", name) 8 9 10 change_name() 11 print(name)
全局变量都要大写
局部变量都要小写
nonlocal 指同名的上一级变量
2、风湿理论
函数即变量
把函数看成变量来使用
1 # -*- coding:utf-8 -*- 2 def bar(): 3 print("from bar") 4 5 6 def foo(): 7 print("from foo") 8 bar() 9 10 11 foo()
3、递归
递归函数必须要有一个明确的结束条件,下面的程序没有结束条件
1 # -*- coding:utf-8 -*- 2 def calc(n): 3 print(n) 4 calc(n) 5 6 7 calc(10)
带有结束条件的递归函数程序
1 # -*- coding:utf-8 -*- 2 def calc(n): 3 print(n) 4 if int(n / 2) == 0: 5 return n 6 return calc(int(n / 2)) 7 8 9 calc(10)
1 # -*- coding:utf-8 -*- 2 import time 3 4 person_list = ["1", "2", "3", "4", "5"] 5 6 7 def ask_way(person_list, n=0): 8 print("-"*40) 9 if n == len(person_list): 10 return "没人知道=000" 11 person = person_list[n] 12 if person == "3": 13 return "%s知道=666" % person 14 print("我不知道,我要去问下一个") 15 n = n + 1 16 return ask_way(person_list, n) # 这行代码必须要有return 17 18 print(ask_way(person_list))
但是递归函数效率不高。而且容易内存溢出。建议尽量不要使用。