Python基础篇 第五节课

全局变量与局部变量

name = "kly"      #全部变量

def change_name():
    name = "帅的一匹"   #局部变量
    print("change_name",name)

change_name()


#输出change_name 帅的一匹

 

更改全局变量

name = "kly"

def change_name():
    global name
    name = "帅的一匹"
    print("change_name",name)

change_name()
print(name)

#输出
change_name 帅的一匹
帅的一匹

 

name = "rng"

def JZH():
    name = "太强了"
    print("adc",name)

JZH()

#输出adc 太强了
name = "rng"

def JZH():
    global name
    print("adc",name)

JZH()

#输出adc rng

  如果函数内容无global关键字,优先读取局部变量,当无局部变量时,只能读取全局变量重新赋值(但对于可变类型,可对内部元素操作)

  如果函数中有global关键字,变量本质上就是全局的那个变量,可读取可赋值

name = "我很帅"

def test():
    global name
    print('是的',name)
    name = "我非常帅"
    print("是的",name)
test()
def test1():
    name = ""
    print("是的",name)
test1()
print(name)

#输出
是的 我很帅
是的 我非常帅
是的 帅
我非常帅
name = "我很帅"

def test():
    global name
print('是的',name)
    name = "我非常帅"
    print("是的",name)
test()
def test1():
    print("是的",name)
test1()
print(name)

#输出
是的 我很帅
是的 我非常帅
是的 我非常帅
我非常帅

.全局变量是列表

name = ["rng","ig","rw"]
def champion():
    name = "rng"
    print("冠军",name)
champion()


#输出冠军 rng
def champion():
    print("冠军",name)
champion()

#输出冠军 ['rng', 'ig', 'rw']

 

name = ["rng","ig","rw"]
def champion():
    global name
    name = "是强者"
    print("冠军",name)
champion()

#输出冠军 是强者
name = ["rng","ig","rw"]
def champion():
    name.append("edg")
    print("冠军",name)
champion()

#输出冠军 ['rng', 'ig', 'rw', 'edg']
NAME = "电竞"               #1
def jianzihao():
    name = "简自豪"         #3
    print(name)             #4
    def shisenming():
        name = "小明"       #6
        print(name)         #7
        def xiye():
            name = "兮夜"   #10
        print(name)         #11
        xiye()              #9
    print(name)             #8
    shisenming()            #5
    print(name)             #12
jianzihao()                 #2

#输出
简自豪
简自豪
小明
小明
简自豪
name = "亚运会冠军"                  #1
def China():
    name = "冠军"                    #4
    def korea():
            global name              #7
            name = "亚军"            #8
    korea()                          #6
    print(name)                      #9
print(name)                          #5
China()                              #3
print(name)                          #2


#输出
亚运会冠军
冠军
亚军

向前引用

def bar():
    print("form bar")    #4
def foo():
    print("form foo")    #2
    bar()           #3 
foo()                      #1


#输出
form foo
form bar
def foo():
    print("from foo")      #2
    bar()             #3
def bar():
    print("from bar")      #4
foo()               #1


#输出
from foo
from bar
def bar():
    print("from bar")   #4
def foo():
    print("from foo")   #2
    bar()               #3
foo()                   #1

#输出
from foo
from bar

风湿理论:函数及变量

NAME = "中国电竞"               #1
def RNG():                      #2
    name = "冠军"               #4.1
    print(name)                 #4.2
    def IG():                   #4.3
        name = "亚军"           #4.4.1
        print(name)             #4.4.2
        def RW():               #4.4.3
            name = "季军"       #4.4.6
            print(name)         #4.4.7
        print(name)             #4.4.4
        RW()                    #4.4.5
    IG()                        #4.4
    print(name)                 #4.5
print(NAME)                     #3
RNG()                           #4
print(NAME)                     #5


#输出
中国电竞
冠军
亚军
亚军
季军
冠军
中国电竞
NAME = "帅哥"           #1
def vian():             #2
    name = "美女"       #4.1
    def vivian():       #4.2
        global name     #4.3.1
        name = "吓人"   #4.3.2
    vivian()            #4.3
    print(name)         #4.4
print(NAME)             #3
vian()                  #4
print(name)             #5


#输出
帅哥
美女
吓人

递归

def calc(n):
    print(n)
    if int(n / 2) == 0:
        return n
    return calc(int( n / 2))

calc(10)

#输出
10
5
2
1
person_list = ["letme","mlxg","xioahu","uzi","ming"]
import time
def ask_adc(person_list):
    print("-"*60)
    if len(person_list) == 0:
        return "没人知道"
    person = person_list.pop(0)
    if person == "uzi":
        return "%s 说:我是adc" %person

    print("hi 帅哥[%s],谁是adc" %person)
    print("%s回答:我不知道,但我可以帮你问问%s" %(person,person_list))
    time.sleep(3)
    res = ask_adc(person_list)
    # print("%问的结果是:%res" %(person,res))
    return res

res = ask_adc(person_list)
print(res)

#输出
------------------------------------------------------------
hi 帅哥[letme],谁是adc
letme回答:我不知道,但我可以帮你问问['mlxg', 'xioahu', 'uzi', 'ming']
------------------------------------------------------------
hi 帅哥[mlxg],谁是adc
mlxg回答:我不知道,但我可以帮你问问['xioahu', 'uzi', 'ming']
------------------------------------------------------------
hi 帅哥[xioahu],谁是adc
xioahu回答:我不知道,但我可以帮你问问['uzi', 'ming']
------------------------------------------------------------
uzi 说:我是adc

递归特征:

必须有一个明确的结束条件

每次进入更深一层递归时,问题规模比上次递归逗应有所减少

递归效率不高,递归层次过多会导致栈溢出

posted @ 2018-08-30 23:27  Lune23333  阅读(127)  评论(0)    收藏  举报