首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >(三十五) 初遇python之变量范围作用域

(三十五) 初遇python之变量范围作用域

作者头像
XXXX-user
修改2019-07-30 10:38:43
5670
修改2019-07-30 10:38:43
举报

各位读者大大们大家好,今天学习python的量范围作用域,并记录学习过程欢迎大家一起交流分享。

新建一个python文件命名为py3_scope.py,在这个文件中进行操作代码编写:

#变量作用域范围
#Local局部变量
#Enclosing封闭函数变量,闭包中常见
#Global 全局变量
#Built-in 内置模块
#python中查找一个变量准守LEGB规则
#优先从L->E->G-B查找
#定义全局变量
x = 'global x'
#定义函数,y为局部变量
#函数内有效
def test():
  y = 'local y'
  print(y)#调用局部变量
  print(x)#调用全局变量
test()    
#如果直接打印y会报错,因为是局部变量
#print(y)
#打印全局变量x
print(x)
#使用关键字global将函数内的局部变量变成全局
def test():
  global x
  x = 'local x'
  print(x)#调用局部变量
#调用函数
test()  #local x
#打印全局变量x
print(x)#local x
#函数中参数为局部变量:
def test(z):
  print(z)#调用局部变量
test('local z')
#如果直接打印z会报错,因为是局部变量
#print(z)
#嵌套函数中封闭函数变量
def outer():
  x = 'outer x'
  def inner():
    x = 'inner x'
    print(x)

  inner()
  print(x)
#调用函数
outer()
#inner x
#outer x
#根据LEGB规则
#调用函数outer()
#先是执行inner()中的x打印
#然后执行outer()x的打印
#接下来我们注释掉inner中的x变量
def outer():
  x = 'outer x'
  def inner():
    #x = 'inner x'
    print(x)

  inner()
  print(x)
#调用函数
outer()
#outer x
#outer x
#结果是打印两次outer x
#调用函数outer()后,首先执行inner()
#发现没有local变量,根据LEGB规则,寻找闭包函数中的变量
#输出outer()中 x的值
#继续调用outer()中x的值,直接打印输出outer x
#接下来修改inner()中x的变量为nonlocal
#作用域为闭包函数中,不使用全局global修饰
#防止影响全局作用域
def outer():
  x = 'outer x'
  def inner():
    nonlocal x
    x = 'inner x'
    print(x)

  inner()
  print(x)
#调用函数
outer()
#inner x
#inner x
#内置模块变量
#首先导入内置模块
import builtins
#查看内置模块中的函数等信息
print(dir(builtins))
#定义一个函数min()
def min():
  pass
#这里以min()函数获取最小值为例
#m = min([1,2,3,4,5])
#print(m)
#根据变量作用域的LEGB规则,会先去Local中去找
#所以运行会出现错误,需要特别注意

今天初学python的变量作用域范围学习就到这里!

关注公号

下面的是我的公众号二维码图片,欢迎关注。

yale记公众号

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 yale记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关注公号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档