Python笔记(6)——函数的定义域

简单定义:

所谓定义域,在数学中就是自变量的‘取值范围’,或者说是‘定义范围’,而在程序中,就是一个变量的作用范围。

也就是说,一个变量的定义域如果是全局,它就能在全局的任何一个地方发挥作用,如果是某个函数,那你如果离开了函数就用不了了。

number = 1      #全局变量

def test():  #局部变量定义
    number_1 = 5
    print(number_1)
    print(number)    #在函数中引用全局变量

print(number)
test()        #函数的引用

结果是:

1

5

1

如果说我们在最后再加上一个print(number_1),那么一定会报错,因为在函数外,我们没有进行变量'number_1'的定义。

分类:

函数的定义域有四种,它们的按作用范围大小,从大到小排列:

Python内置作用域 > 当前模块中的全局 > 外层作用域 > 局部作用域

这里的Python内置作用域就是Python的一些内置函数,比如说print()等等,我们没有在py文件中进行这个函数的定义,但是我们却可以直接使用。

外层作用域则是在函数嵌套的时候,在最小作用域之外的作用域。

注意事项:

      1.  我们可以在函数中重新定义全局变量,但是并不影响全局变量的数值,举个栗子:

number = 1      #全局变量

def test():
    number = 2  #局部变量定义
    print(number)

print(number)
test()          #引用函数
print(number)    #检验number的值是否改变

 

结果是:

1

2

1

      2.  我们在不使用关键字的时候,不能在局部修改全局变量,因为函数在定义的时候已经压入内存,如果你在局部中修改,则会提示你让你在此变量之前定义变量,比如这样:

def test2():
    number = number + 1
    print(number)


test2()

会有如下错误:

local variable 'number' referenced before assignment

    大家应该看到我上面的那一段话有一个前提“在不使用关键字的时候”,那么如果使用了关键字了呢?关键字是什么呢?

    是global,全球的意思,这个关键字是把局部变量看做全局变量,因此我们可以修改变量,那么让我们梅开二度:

def test2():
    global number
    number = number + 1
    print(number)
test2()

这样就能运行了~~

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值