python基础----day4(函数)

 

 

 

 

 


#####全局变量与局部变量########

1.全局变量:(顶头写,没有任何的缩进),在文件中任何位置都可以调用

2.局部变量:在子程序里定义的变量

   ####如果函数内容无global 关键字,优先读取局部变量,无法对全局变量重新赋值。如果没有局部变量,只能读取全局变量。

           ----有声明局部变量

def liuxiangyu():
    NAME = '刘翔宇'
    print('我要搞',NAME)
liuxiangyu()

 

 

         ------ 无声明局部变量,读取全局变量

NAME = ['SB','刘翔宇']

def liuxiangyu():
   # NAME = '刘翔宇'
    print('我要搞',NAME)
liuxiangyu()

 但是对于可变类型,可以对内部元素进行操作

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

      ---无局部变量,直接读取全局变量

NAME = ['SB','刘翔宇']

def liuxiangyu():
    global NAME
    print('我要搞',NAME)
liuxiangyu()

 

     ---有局部变量,且局部变量在global关键字下方,该局部变量取代全局变量(局部变量在global关键字的上方,报错)

NAME = ['SB','刘翔宇']

def liuxiangyu():
    global NAME
    NAME = 'LI'
    print('我要搞',NAME)
liuxiangyu()

 

 

 

    

   

 

 

##########规则:全局变量变量名大写, 局部变量变量名小写   


name = '刘傻逼'

def liuxiangyu():
    name = '李奇好'
    def liuxiangyuyu():
        global name
        name = '冷静'
    liuxiangyuyu()
    print(name)

print(name)
liuxiangyu()
print(name)

 

 

name = '刘傻逼'

def liuxiangyu():
    name = '李奇好'
    def liuxiangyuyu():
        nonlocal name              #nonlocal ,指定上一级变量
        name = '冷静'
    liuxiangyuyu()
    print(name)

print(name)
liuxiangyu()
print(name)

 

 

 

 

posted @ 2019-10-14 22:31  liqihao  阅读(108)  评论(0)    收藏  举报