美文网首页
Python局部变量和全局变量修改

Python局部变量和全局变量修改

作者: 小胖_09da | 来源:发表于2018-08-23 14:00 被阅读0次

Python对变量进行修改只是更改了变量所指向的地址

1.不可变对象(数字,字符串,元组)

python对不可变对象这种类型的变量进行修改的时候只能更改该变量指向的地址,因为对于不可变变量,创建以后变量的内容就固定在某一个地址了,这个地址的内容是不能更改的,因为如果有其他变量想要存储相同的内容时我们可以直接让该变量也指向同一个地址就行,可以节省内存。当我们对不可变对象重新赋值的时候就相当于让这个变量指向另一个地址。

而在函数内部,当我们想要修改一个外部的不可变对象变量时,是无法直接进行重新赋值的,因为函数内部没有权限直接修改外部变量的指向,如果我们在函数内部直接对外部的变量进行赋值,实际上是创建了一个局部变量,外部变量的内容是没有更改的,如果后面有被调用,那么访问的也是这个局部变量的内容。如果函数内部没有对外部变量的赋值语句,那么函数内部是可以直接访问外部变量的,也就是可以查看外部变量的值,但是如果在函数内部先有一句调用外部变量的语句,后面又有一句修改外部变量的语句的话,这个变量就会被认为是局部变量,所以在执行前面那句调用的语句的时候就会报错,说未定义,这是因为这个局部变量是在后面创建的(也就是我们想用来修改外部变量的这一句)。

2.可变对象(列表,字典)

当我们创建一个可变对象的时候,会在内存里面重新开辟一个空间,存放这个列表或者字典里面元素的地址,我们每次直接给这个变量整体重新赋值(不是通过下标改变里面的元素,而是直接通过变量名重新赋值),都会重新开辟一个空间,就算我们这次赋的值和原来的值一样,也会重新开辟一个空间,我们可以把一个可变对象反复赋予相同的值,然后每次查看一下这个变量的id,会发现每次都不一样。

3.函数内部如何更改外部变量

方法一:在函数内部通过global关键字声明这是个全局变量,这就相当于拿到尚方宝剑了,就可以在函数内部直接更改这个全局变量的指向。

方法二:使用返回值,在调用函数的地方把返回值传递给原变量。

相关文章

  • python

    函数内全局变量赋值 Python中有局部变量和全局变量,当局部变量名字和全局变量名字重复时,局部变量会覆盖掉全局变...

  • python基础

    1.局部变量、全局变量 在函数内部修改全局变量时局部变量会创建一个和全局变量一样名称的局部变量,在更改的时候只会更...

  • block为啥可以修改全局变量而局部变量修改需要加__blcok

    block为啥可以修改全局变量而局部变量修改需要加__blcok block可以修改全局变量,是因为全局变量放在推...

  • iOS-block全局变量和局部变量的引用

    1、全局变量,block可以进行读取和修改。 2、局部变量,block只能读取,不能修改局部变量。这个时候是值传递...

  • Python局部变量和全局变量修改

    Python对变量进行修改只是更改了变量所指向的地址 1.不可变对象(数字,字符串,元组) python对不可变对...

  • python的全局列表变量

    大家知道在python中,对一个非列表、字典的变量,对与全局变量同名的局部变量进行修改,不会影响全局变量。如果局部...

  • python 局部变量和全局变量使用 2021-11-05

    python 局部变量和全局变量使用 a = 666 def modify_a():global aa = 20...

  • python函数

    函数 全局变量 获取全局变量python获取全局变量直接获取 修改全局变量python不允许直接修改全局变量如果要...

  • python变量区域的一个坑

    python有两种变量,全局变量和局部变量。 全局变量的scope是整个module,局部变量是函数或者class...

  • [Python] global,nonlocal

    (1)global:修改全局变量 (2)nonlocal:修改外层词法变量 (3)default:创建局部变量

网友评论

      本文标题:Python局部变量和全局变量修改

      本文链接:https://www.haomeiwen.com/subject/kfopiftx.html