首页 > 编程语言 > 详细

python课堂整理10---局部变量与全局变量

时间:2019-06-16 14:24:14      阅读:86      评论:0      收藏:0      [点我收藏+]

一、局部变量与全局变量

1. 没有缩进,顶头写的变量为全局变量

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

3. 只有函数能把变量私有化

name = ‘lhf‘  #全局变量
def change_name():
    name = ‘大帅比‘  #局部变量  只在这一段函数里生效
    print(name)      #先从当前作用域找name,找不到再往外层找

change_name()
print(name)

技术分享图片

二、修改全局变量

1.  global 总是把最外层的全局变量拿来用

NAME = ‘lhf‘
def change_name():
    global NAME   #声明全局变量,把最外层的全局变量NAME 拿来用
    NAME = "dabai"  #修改全局变量
    print(NAME)
print(NAME)
change_name()
print(NAME)

技术分享图片

2.  如果函数内部变量前无 global 关键字,优先读取局部变量,无局部变量再读取全局变量

对于可变变量,可以对内部元素进行操作,但无法对变量本身重新赋值 name = ‘ fff ‘

- 有声明局部变量

NAME = [1, 2]
def test():
    NAME = ‘自己‘   #又新定义了一个局部变量
    print(‘我爱‘, NAME)
test()
print(NAME)

技术分享图片

- 无声明局部变量

NAME = [1, 2]
def test():
    NAME.append(‘你‘)  #对可变的全局变量进行内部修改
    print(‘我爱‘, NAME[2])
test()
print(NAME)

技术分享图片

-  有global 且声明了局部变量

NAME = [1, 2]
def test():
    global NAME
    NAME = ‘自己‘
    print(‘我爱‘,NAME)
test()
print(NAME)

错误示例:函数内既有局部变量,又有全局变量,名字重复,所以调用失败

NAME = [1, 2]
def test():
    NAME = ‘自己‘
    global NAME
    print(‘我爱‘,NAME)
test()
print(NAME)

技术分享图片

所以 我们把全局变量的变量名用大写  局部变量的变量名用小写

三、有函数的程序执行顺序

技术分享图片

python 的代码从上往下执行,但遇到函数,并不执行,而是只编译,调用函数时才回去执行。

name = ‘大白‘

def cuoai():
    name = ‘liu‘
    def pianai():
        global name
        name = ‘wen‘
    pianai()
    print(name)
print(name)
cuoai()
print(name)

技术分享图片

四、nonlocal  指代上一级变量,跟global 用法一样

name = ‘大白‘

def cuoai():
    name = ‘liu‘
    def pianai():
        nonlocal name
        name = ‘wen‘
    pianai()
    print(name)
print(name)
cuoai()
print(name)

技术分享图片

python课堂整理10---局部变量与全局变量

原文:https://www.cnblogs.com/dabai123/p/11031342.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!