专栏首页不仅仅是python(三十五) 初遇python之变量范围作用域

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

各位读者大大们大家好,今天学习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记公众号

本文分享自微信公众号 - yale记(python_yale_learning),作者:yale记

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-06-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • (十七) 初遇python甚是喜爱之pip包管理工具使用

    各位读者大大们大家好,今天学习python的pip包管理工具,并记录学习过程欢迎大家一起交流分享。

    亚乐记
  • 机器学习-决策树(Decision Tree)案例

    这是我最喜欢的算法之一,我经常使用它。它是一种监督学习算法,主要用于分类问题。令人惊讶的是,它适用于分类和连续因变量。在该算法中,我们将总体分成两个或更多个同类...

    亚乐记
  • 数据分析-Pandas 多格式数据文件读取和保存

    Pandas能够读取和保存格式为csv,excel数据,hdf,sql,json,msgpack,html,gbq,stata,clipboard和pickle...

    亚乐记
  • nodejs安装以及服务启动 转

    //放在服务器后解压,我是linux,所以就下载linux,还需要注意事32位的系统还是64位的系统

    双面人
  • 确保云安全的最佳方法是什么?

    随着云计算成为企业开展业务的一种基础技术,云安全已变得至关重要。然而,充分了解云安全的最佳策略是一个真正的挑战。

    静一
  • FPGA和外围接口-第一章 爱上FPGA(1.3.3 1.3.4))

    1.3.3 Intel FPGA 主流芯片命名规则 1.3.4 Xilinx FPGA 命名规则

    碎碎思
  • iOS 视图,动画渲染机制探究

    终端的开发,首当其冲的就是视图、动画的渲染,切换等等。用户使用 App 时最直接的体验就是这个界面好不好看,动画炫不炫,滑动流不流畅。UI就是 App 的门面,...

    腾讯Bugly
  • iOS 视图,动画渲染机制探究

    终端的开发,首当其冲的就是视图、动画的渲染,切换等等。用户使用 App 时最直接的体验就是这个界面好不好看,动画炫不炫,滑动流不流畅。UI就是 App 的门面,...

    QQ音乐技术团队
  • Python: simple drawi

    py3study
  • 机器学习读书笔记系列之正则化与模型选择

    链接:https://wei2624.github.io/MachineLearning/

    用户2769421

扫码关注云+社区

领取腾讯云代金券