python学习之全局变量和局部变量(七)

全局变量和局部变量

全局变量:在程序的一开头就定义的变量叫作全局变量
局部变脸:在子程序中定义的变量叫做局部变量

区别

全局变量的作用域为整个程序,局部变量的作用域为改变量的字程序.
若全局变量和局部变量重命时,在定义局部变量的子程序内,局部变量起作用,其他地方则是全局变量起作用

name = '全局name'

def jubu():
    name = '局部name'
    print(name)

jubu()  #运行的是jubu方法里的内容,所以打印的是局部name
print(name) #这个直接打印的是全局name

运行结果

局部name
全局name

global的用法

如果需要在函数内部改变函数外部的变量,就可以通过在函数内部声明变量为global变量。这样当程序运行至global变量便会替换外部的同名变量

name = '全局name'

def jubu():
    global name
    name = '局部name'
    print(name)

jubu()  
print(name) 

运行结果

局部name
局部name

nonlocal

nonlocal
只在闭包里面生效,作用域就是闭包里面的,外函数和内函数都影响,但是闭包外面不影响

name ='全局name'
def  bianliang():
    name = '我是你爸'
    def bianliang1():
        nonlocal name #指定上一级变量 相当于把上级变量name = '我是你爸'替换成 name = '呵呵'
        name = '呵呵'

    bianliang1()
    print(name)

print(name) 
bianliang()
print(name)

运行结果

全局name
呵呵
全局name

函数即变量

可以把函数看成一个大的字符串,程序在运行时会先加载定义的函数再运行,否则会报错如下

def action():
    print('in the action')
    logger()

action()

def logger():
    print ('in the logger')

运行结果
NameError: name ‘logger’ is not defined

正确的应该是如下形式

def action():
    print('in the action')
    logger()
    
def logger():
    print ('in the logger')

action()

#或者是
def action():
    print('in the action')
    logger()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值