zoukankan      html  css  js  c++  java
  • python中的 += 与 +

    这一部分首先要理解python内存机制,Python中万物皆对象。

    对于不可变对象,改变了原来的值,其别名(变量名)绑定到了新值上面,id肯定会改变

         

    对于可变对象,+ 操作改变了值,id肯定会变,而+= 是本地操作,其值原地修改

    对于+号操作,可变对象和不可变对象调用的都是__add__操作

    对于+=号操作,可变对象调用__add__,不可变对象调用的是__iadd__(不可变对象没有__iadd__)   __iadd__是原地修改

     

    错误:

    注意:一个函数内部的任何类型的赋值都会把一个名称划分为本地的。这包括=语句,import中的模块名称、def中的函数名称、函数参数名称等。如果在def中以任意方式赋值一个名称,它都将对于该函数称为本地的。

    特别注意:原处改变的对象并不会把变量划分文本地变量,实际上,只是对变量名赋值才可以。例如变量名L在模块的顶层被赋值为一个列表,在函数内部的像L.append(x)这样的语句并不会将L划分为本地变量,而L=Y却可以。修改一个对象并不是对一个名称赋值。

    变量名解析:LEGB原则:

    在函数中使用未认证的变量名时,python搜索4个作用域:本地作用域(L),之后是上一层结构中的def或者lambda本地作用域(E),之后是全局作用域(G),最后是内置作用域(B)

  • 相关阅读:
    计划任务和压缩归档
    libevent 源码学习三 —— 基本使用场景和事件流程
    libevent 源码学习二 —— reactor 模式
    libevent 库源码学习
    手动配置固定IP参数vim vim
    软件相关
    写xhttpd服务器时 遇到segmentation fault
    c与c++中输出字符指针和字符串指针的问题
    char * argv[] ,string简析
    传入参数与传出参数
  • 原文地址:https://www.cnblogs.com/erbaodabao0611/p/7646945.html
Copyright © 2011-2022 走看看