19、python 函数(局部变量和全局变量 global 与nonlocal )

局部变量和全局变量
a = "Life is short,you need Python"
def func1():
    print(a)
def func2():
    #global  b
    b = "人生不如意事十之九八,可与人言者并无二三"
    print(b)
func1()
func2()
print(a)
print(b) # NameError: name 'b' is not defined
#global b  print(b)  #做出声明,此时打印就不会再报错了

局部变量:在函数内部定义的普通变量,只在函数内部作用,函数执行结束变量会自动删除,函数执行结束后,函数执行结束后,函数内部的局部变量,会被系统回收
全局变量:定义在函数外的拥有全局作用域,全局变量可以在整个程序范围内访问
全局变量与局部变量两者的本质区别就是在于作用域:全局变量是在整个py文件中声明,全局范围内都可以访问,局部变量是在某个函数中声明的,只能在该函数中调用它,如果试图在超出范围的地方调用,程序就报错


global关键字与 nonlocal关键字


a = "Life is short,you need Python"
def func1():
    print(a)
def func2():
    #global  b
    b = "人生不如意事十之九八,可与人言者并无二三"
    print(b)
func1()
func2()
print(a)
print(b) # NameError: name 'b' is not defined
#global b  print(b)  #做出声明,此时打印就不会再报错了


a = "Life is short,you need Python"
def func1():
     a = "生而为人,我感到抱歉"
     print (a)
def func2():
     print(a)
func1()  #此时证明局部变量优先于全局变量
func2()
print(a)  #无论你在函数内怎样改动这个函数的值,只有在函数内生效,对全局来说是没有任何影响的

a = 6         # 定义全局变量a
def func():
    #global  a
    a = a * 3
    print (a)
func()
在python的函数中=号左边表示定义了一个局部变量,待赋值,而上面的例子中就相当于你定义了一个局部变量a,但你还没赋值就拿来进行运算,自然就会报错了。


def func():
    global a        # 利用global关键词定义全局变量
    a= "Life is short,you need Python"
    print (a)
#print(a) #打印时候报错  global定义全局变量的时候不能同时赋值,要在下一行才能赋值,其次,在函数中定义了全局变量后,要这个函数执行了,全局变量才生效
func()  #调用函数不报错


def func1():
     a = "Life is short,you need Python"
     def func2():
          nonlocal a  # 使用nonlocal不是局部变量
          a = a * 3
          print(a)
     return func2()
func1()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值