作用域

作用域

全局变量的作用域为整个程序,而局部变量的作用域为当前函数或循环等
x = 50             # 全局变量(外层)

def foo(x):
    print('x is',x)
    # 第二种输出
    # print('x is {}'.format(x))
    x = 2          # 局部变量
    print('x is {}'.format(x))

# def boo(x):
#     y = 0
#     y = y + 1      # A函数不能直接引用B函数的局部变量   也就是说局部函数不能引用局部函数

foo(x)             #  x is 50

# 全局变量传入函数,局部变量打印了一次全局变量
# 又声明了一个新的局部变量并打印了一次

print('x is {}'.format(x))      # 调用外部函数

# 外部变量:函数之外的变量。
# 局部变量local variable:函数内定义变量
# 局部变量的作用域:局部变量的函数内。声明函数之间不能互相调用各自的局部变量。
# 外部直接调用内部变量会报NameError错误。函数内按块级作用域判断。
作用域链
name = '小明'

def f1():
    name = '小李'

    def f2():
        # name = '小红'
        print(name)
    f2()

f1()

# 作用域嵌套:例如上例全局套着函数1,函数1套着函数2。调用变量时会现在当前函数作用域中查找,如果找不到的话会去上一级函数的作用域中查找。 当前层< 父层< 最外层全局。
# 平时代码应该避免函数复杂嵌套,变量作用域把握不准时声明不同名字的变量。

# 练习
name = '小明'

def f1():
    print(name)

def f2():
    name= '小红'
    f1()

f2()

# 4内置作用域
# 在上面的例子中,你可以在任何地方使用print type abs一些函数,函数其实是一个指向功能的变量。这些函数的作用域是内置作用域。

# 作用域范围从小到大:  内层局部 < 外层局部 < 全局 < 内置全局
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值