zoukankan      html  css  js  c++  java
  • 《Python 学习手册4th》 第十七章 作用域

    '''
    时间: 9月5日 - 9月30日
    要求:
    1. 书本内容总结归纳,整理在博客园笔记上传
    2. 完成所有课后习题
    注:“#” 后加的是备注内容
    (每天看42页内容,可以保证月底看完此书)
    “重点笔记”“本章习题” - 标题1,二级标题用- 标题2,笔记大纲标题、习题题目- 加粗,16px
    '''

    重点笔记

    一. Python作用域基础

      Python创建、改变或者查找变量名都是在所谓的命名空间中进行的。在代码中变量名赋值的位置决定了这个变量名能被访问到的范围。

      变量可以在3个不同的地方分配,分别对应3种不同的作用域:

    •   如果一个变量在def内赋值,它被定位在这个函数之内;
    •   如果一个变量在一个嵌套的def中赋值,对于嵌套的函数来说,它是非本地的;
    •   如果在def之外赋值,它就是整个文件全局的

    二. 作用域法则

      内嵌的模块是全局作用域

      全局作用域的作用范围仅限于单个文件

      每次对函数的调用都创建了一个新的本地作用域

      赋值的变量名除非声明为全局变量或非本地变量,否则均为本地变量

      所有其他的变量都可以归纳为本地、全局或者内置的

    三. global语句

    •   全局变量是位于模块文件内部的顶层的变量名
    •   全局变量如果是在函数被赋值的话,必须经过声明
    •   全局变量名在函数的内部不经过声明也可以被引用

      global允许我们修改一个函数之外的模块的名称。nonlocal则相反。

      global 声明会强制函数中赋值的变量引用其所在的全局作用域中的变量。

    四. 作用域和嵌套函数

      global使得作用域查找从嵌套的模块的作用域开始,并且允许对那里的名称赋值。如果名称不存在于该模块中,作用域查找继续到内置作用域,但是对全局名称的赋值总是在模块的作用域中创建或者修改它们

      nonlocal 先知作用域查找只是嵌套的def,要求名称已经存在于那里,并且允许对它们赋值。作用域查找不会继续到全局或者内置作用域。

  • 相关阅读:
    [置顶网]POWER 9为云与智能打造强大引擎
    [丁香医生]百亿保健帝国权健,和它阴影下的中国家庭---保存一下
    【菜鸟】RESTful 架构详解
    搞笑三问
    [置顶网] 世界服务器出货量
    [51CTO]新说MySQL事务隔离级别!
    Win2008r2 由ESXi 转换到 HyperV的处理过程
    Postgresql迁移数据文件存放位置
    极简版 卸载 home 扩充 根分区--centos7 xfs 文件格式
    CentOS下面磁盘扩容处理
  • 原文地址:https://www.cnblogs.com/wuzhiming/p/3981554.html
Copyright © 2011-2022 走看看