一、全局变量与局部变量(函数)
①函数的特性:
1.函数内可以调用自己的函数
2.函数内可以定义新函数,新函数只可以在函数内部使用,不能在其他作用域内使用
②global、nonlocal关键字
(1)global
函数内部调用全局变量,在全局变量前加global,相当于对全局变量的引用,
在函数内对全局变量操作,会改变全局变量的值。
a=1
def text():
global a
a=2
text()
print(a) #2
(2)nonlocal
对上一级变量的引用,如果上一级没有找到,就继续往上走,
直到找到为止(但是不能超出作用域,比如函数内部不能找到函数外)
a=1
def weihou():
a=2
def weiweihou():
nonlocal a
a = 3
weiweihou()
print(a) #3
weihou()
print(a) #1
二、风湿定理之函数即变量
概念:定义函数时相当于定义了一个变量,没有调用时不会执行功能,
但是存在于程序中,下面举两个例子,比较容易理解
例1:程序不会出错
def foo():
print('from foo')
bar()
def bar():
print('from bar')
foo() #在执行foo函数前已经定义好了bar
例2:程序会出错
def foo():
print('from foo')
bar()
foo() #在调用foo前没有定义好bar函数
def bar():
print('from bar')
三、函数递归
一个问路实例:
import time
persons=["马飞翔","刘健康","董雨生","陈果"]
def FindWay(perosns):
time.sleep(2)
print("=====================")
person=persons.pop(0)
if person=="董雨生":
print("%s说:我知道路在哪里"%person)
return
else:
print("%s说:我不知道路在哪里,我帮你问问:%s"%(person,persons))
return FindWay(persons)
FindWay(persons)