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
递归特征:
必须有一个明确的结束条件
每次进入更深一层递归时,问题规模比上次递归逗应有所减少
递归效率不高,递归层次过多会导致栈溢出

浙公网安备 33010602011771号