# day15全局变量和局部变量

day15全局变量和局部变量
def change_name(self)：
name='帅哥'
print(name)
change_name()

name='ajga'
def yangjiang(self):
name='shizhengwen'
print('我要搞',name)

def qupengfei(self):
name='jiyou'
print('我要搞',name)

global 会改变全局的变量

#如果函数的内容无global ,优先读取全局变量，无法对局部变量进行赋值
# 但是对于可变类型，无法对内部元素进行操作
#如果函数中有global 关键字，，变量的本质就是那个全局变量，可读取可赋值，
#可变类型，不可变类型

#全局变量需要存放在最上面
name=['昌平尽量','聊变更','股本金']
def quejg()
global name
name='jang'
print(name)

nonlocal 上级变量
global 全局变量

1.递归的效率不高
2.必须有个人明确的结束条件
3.递归的规模必须不断减少，

# import os
# name='ouyang'
# #print(name)
# def change_name(self):
# name = '帅哥'
# global name
# print('change_name',name)
# #nam=change_name(self='ouyang')
# #print(name)
# name='x'
# def huangwei():
# name='a'
# print(name)#a
# def liuyang():
# name='b'
# print(name)#b
# def niuluge():
# name='c'
# print(name)#c
# print(name)#b
# niuluge()
# liuyang()
# print(name)#a
# print(name)
# huangwei()
# print(name)

#
# name='gnama'
# def weihou():
# name='chenzuo'
# def weiweiho():
# global name
# name='lengjing'
# weiweiho()
# print(name)
# print(name)
# weihou()
# print(name)

#gname,chenzuo,gnama

# def bar():
# print('from bar')
# def foo():
# print('form foo')
# bar()
# foo()
#
# import time
# person_list=['a','b','c','d','e']
#
#
# if 0==len(person_list):
# return 'none one'
# person=person_list.pop(0)
# print(person)
# if person == 'e':
# print('yes')
# return 'e'
# print('where %s'%person)
# print('no %s,下一个%s'%(person,person_list[0]))
# time.sleep(2)
# return res
# print(res)
#
#

person_list=['a','b','c','d','e']
a=person_list.pop(0)
print(a)
a=person_list.pop(0)
print(a)
a=person_list.pop(0)
print(a)
a=person_list.pop(0)
print(a)
a=person_list.pop(0)
print(a)

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

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

# while True:
#     print(10)
#
# import time
#
# person_list=['alex','wupeiqi','linhaifeng','zsc']
#     print('-'*60)
#     if len(person_list) == 0:
#         return '根本没人知道'
#     person=person_list.pop(0)
#     if person == 'linhaifeng':
#         return '%s说:我知道,老男孩就在沙河汇德商厦,下地铁就是' %person
#
#     print('hi 美男[%s],敢问路在何方' % person)
#     print('%s回答道:我不知道,但念你慧眼识猪,你等着,我帮你问问%s...' % (person, person_list))
#     time.sleep(100)
#
#
#     print('%s问的结果是: %res' %(person,res))
#     return res
#
# print(res)
# 我          来英                杨建         是征文
# res等沙河      res等沙河       res等 沙河      return ‘沙河’
#                 print          printres

import time
res=time.sleep(100)
print('----------->')

===================递归===============
name='海风'
def huangwei():
name = "黄伟"
print(name)
def liuyang():
name = "刘洋"
print(name)
def nulige():
name = '炉指花'
print(name)
print(name)
nulige()
liuyang()
print(name)

print(name)
huangwei()
print(name)

def calc(n):
print(n)
if int(n / 2) == 0: # 10/2  5/2  2/2
return n
res=calc(int(n / 2))
return res

calc(10)

=====================向前引用==============

# def foo():
#     print('from foo')
#     bar()
#
# foo()

# def bar():
#     print('from bar')
# def foo():
#     print('from foo')
#     bar()
#
# foo()

# def foo():
#     print('from foo')
#     bar()
#
# def bar():
#     print('from bar')
# foo()

def foo():
print('from foo')
bar()

foo()

def bar():
print('from bar')

================全部变量和局部变量====================

# name='lhf'
#
#
# def change_name():
#     global name
#     name='帅了一比'
#     print('change_name',name)
#
#
# change_name()
# print(name)

# name='lhf'
#
# def change_name():
#     name1='帅了一比'
#     name2='帅了一比'
#     name3='帅了一比'
#     print('change_name',name)

# globals

# NAME = "杠娘"
#
# def yangjian():
#     # NAME = "史正文"
#     global NAME
#     NAME = "小东北"
#     print('我要搞', NAME)
#
# def qupengfei():
#     # NAME = "基"
#     print('我要搞', NAME)
#
# yangjian()
# qupengfei()

# NAME = "产品经理"
#
# def yangjian():
#     # NAME = "史正文"
#     global NAME # 已经声明，ＮＡＭＥ就是全局的的那个变量
#     print('我要搞', NAME)
#     NAME = "小东北"  # 修改 全局的变量
#     print('我要搞', NAME)
#
# def qupengfei():
#     NAME = "基"
#     print('我要搞', NAME)

# 如果函数的内容无global关键字，
#   - 有声明局部变量
# NAME = ["产品经理","廖波湿"]
# def qupengfei():
#     NAME = "自己"
#     print('我要搞', NAME)
# qupengfei()
#   - 无声明局部变量
# NAME = ["产品经理","廖波湿"]
# def qupengfei():
#     NAME.append('XXOO')
#     print('我要搞', NAME)
# qupengfei()

# 如果函数的内容有global关键字
#   - 有声明局部变量
# NAME = ["产品经理","廖波湿"]
# def qupengfei():
#     global NAME
#     NAME = "自己"
#     print('我要搞', NAME)
# qupengfei()
# 错误示例
# NAME = ["产品经理","廖波湿"]
# def qupengfei():
#     NAME = "自己"
#     global NAME
#     print('我要搞', NAME)
# qupengfei()
#   - 无声明局部变量
# NAME = ["产品经理","廖波湿"]
# def qupengfei():
#     global NAME
#     NAME = ["阿毛"]
#     NAME.append('XXOO')
#     print('我要搞', NAME)
# qupengfei()

######## 全局变量变量名大写
######## 局部变量变量名小写

# 优先读取局部变量，能读取全局变量，无法对全局变量重新赋值 NAME=“fff”，
#     但是对于可变类型，可以对内部元素进行操作
# 如果函数中有global关键字，变量本质上就是全局的那个变量，可读取可赋值 NAME=“fff”
# qupengfei()
# yangjian()

# NAME = ["产品经理","廖波湿"]
#
# def yangjian():
#     # NAME = "史正文"
#     global NAME # 已经声明，ＮＡＭＥ就是全局的的那个变量
#     print('我要搞', NAME)
#     NAME = "小东北"  # 修改 全局的变量
#     print('我要搞', NAME)
#
# def qupengfei():
#     # NAME = "aS"
#     NAME.append('天扎龙')
#     print('我要搞', NAME)
#
# qupengfei()

# NAME = ["产品经理","廖波湿"]
# def qupengfei():
#     name = "自己"
#     global NAME
#     print('我要搞', NAME)
# qupengfei()

# NAME = '海风'
#
# def huangwei():
#     name = "黄伟"
#     print(name)
#     def liuyang():
#         name = "刘洋"
#         print(name)
#         def nulige():
#             name = '沪指花'
#             print(name)
#         print(name)
#         nulige()
#     liuyang()
#     print(name)
#
# huangwei()

name = "刚娘"

def weihou():
name = "陈卓"
def weiweihou():
nonlocal name   # nonlocal，指定上一级变量，如果没有就继续往上直到找到为止
name = "冷静"

weiweihou()
print(name)

print(name)
weihou()
print(name)
# 刚娘
# 冷静
# 刚娘

• 广告
• 抄袭
• 版权
• 政治
• 色情
• 无意义
• 其他

120