15-python-局部变量全局变量

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))

但是递归函数效率不高。而且容易内存溢出。建议尽量不要使用。

原文地址:https://www.cnblogs.com/zhfang/p/8724984.html