2018-6-6-Python全栈开发day15-part1-全局变量和局部变量

本文详细解释了Python中局部变量与全局变量的概念及其使用方式,并介绍了如何利用global和nonlocal关键字来改变变量的作用范围。此外,还探讨了函数作为变量的特性。

1.局部变量:在子程序中运行的变量。在目前所学习的过程中,只有函数是子程序,也就是在函数中定义的变量,就是局部变量

2.全局变量。变量前没有缩进,应用于整个py文件的变量,全部都可以调用。

#自己将全局变量和局部变量比作上下级关系,

  全局变量国家部分制作的法规,在全国通用,但是地方政府也可以针对法规根据自身进行修改,如果国家看中了某个地方法规,可以进行global,在全国进行推广试用。

  在代码规范中,默认全局变量大写,局部变量小写。

  

name='yehaibin'
def test1():

    global name#声明引用全局变量
    print(name)

    name='nishishiea '
    print(name)
def test2():
    #name='xuzheng'
    print(name)
test1()
test2()

如上代码所示,全局变量name的值为'yehaibin'。执行tese1时。通过global name,国家政府认为这个name可以推广到全国,此时还没有对name进行更改,所以print的值是全局变量yehaibin,然后通过对全局变量进行推广,name的值改为nishieshiea,这是print就改变了。

test2时。打印的name是更改后的全局变量,所以

yehaibin
nishishiea 
nishishiea 

。。如果去掉name=xuzheng这个#,则test2的地方政府法规依旧有效,听从地方政府的,打印xuzheng

 

 

3.global的用法

  如果函数内部没有global代码,则此时全局变量只能被调用,比如列表可以append,但是不能对其本身进行修改,

  如果有global代码,则可以对全局变量本身进行调用和修改,修改是作用在全局变量本身的。

3.1  nonlocal的用法

    和global类似,不过这个用法是上一级政府觉得地方政府的法规不错,对上一级政府的法规进行推广,

  也就是说,对上一级的变量进行修改,只在上一级中适用。

4.函数即变量

  在分析函数的调用时,可以将函数看做变量

  

a='123'

b='alex'

print(b)

print(a)
----
alex
123
#11
def test1():
    print(111)
def test2():
    print(222)
test1()
test2()
--
111
222
#222
def test1():
    print(111)
test1()
def test2():
    print(222)

test2()
--
111
222
---
此时函数可以运行
def test1():
    print(111)
test2()
def test2():
    print(222)

test1()
---
Traceback (most recent call last):
  File "C:/Users/brown/PycharmProjects/python_s3/day15/递归.py", line 3, in <module>
    test2()
NameError: name 'test2' is not defined
显示test2没有被定义,报错

和变量类似,

def test1():
    test2()


def test2():
    print(222)
test1()
----

 

总之将函数的调用看做变量,其上下关系就一目了然。  

转载于:https://www.cnblogs.com/hai125698/p/9147509.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值