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']
#
# def ask_way(person_list):
#
# 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)
# res=ask_way(person_list)
# return res
# res=ask_way(person_list)
# 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']
# def ask_way(person_list):
#     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)
#     res=ask_way(person_list)
#
#
#     print('%s問的結果是: %res' %(person,res))
#     return res
#
# res=ask_way(person_list)
# 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 # 已經聲明,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 # 已經聲明,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)
# 剛娘
# 冷靜
# 剛娘



































發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章