网站首页 > 文章中心 > 其它

python局部变量函数

作者:小编 更新时间:2023-08-31 14:12:37 浏览量:473人看过

python中使用闭包及修改外部函数的局部变量

在python中,函数可以被嵌套定义,也就是说,函数中可以定义函数.该函数还可以将其内部定义的函数作为返回值返回.

闭包的定义:一般来说,我们可以认为,如果一个函数可以读取其他函数中的局部变量,那么它们就构成了闭包.

注意 :闭包的定义不是特别清晰,但大体上的意思是这样的.

我们知道,普通的函数是可以使用全局变量的

类似的,函数中定义的函数,也是可以使用外部函数的变量的.所以呢,满足了函数读取了其他函数局部变量的这一条件,他们所以呢构成了闭包.

在闭包的使用中,我们可以先给外部的函数赋予不同的局部变量,然后再调用其中内部的函数时,就可以读取到这些不同的局部变量了.

外部变量的使用 在普通函数中,虽然可以直接使用全局变量,但是不可以直接修改全局变量.从变量的作用域来说,一旦你尝试修改全局变量,那么就会尝试创建并使用一个同名的局部变量.所以呢,如果你需要在普通函数中修改全局变量,需要使用global

同样的,如果你希望通过定义在内部的函数去修改其外部函数的变量,那么必须使用nonlocal

python中变量的引用、可变和不可变类型、局部变量和全局变量

变量的引用

变量和数据都是保存在内存中的

变量和数据是分开存储的

数据保存在内存中某个位置,通过地址来标记

变量保存的是数据的地址,通过地址可以找到数据在内存空间的位置

把变量保存数据地址的过程称为引用

变量的重新赋值修改的是变量中引用数据的内存地址

变量之间的赋值实际是引用的传递

函数参数的传递,本质也是引用的传递

函数的返回值本身也是引用的传递

可变和不可变类型

可变类型,内存中的数据可以被修改:列表list、字典dict

无论是可变还是不可变数据类型,通过赋值语句,都会改变变量的引用

Hash函数只能接收不可变数据类型,字典的键也只能是不可变数据类型,字典的value值可以是任意数据类型

局部变量

①在函数内部定义的变量就是局部变量(作用范围只能是当前函数内部)

全局变量

①在所有函数外边定义的变量就是全局变量

函数的多个返回值

python局部变量与全局变量

(1)局部变量 是在 函数内部定义的变量,只能在函数内部使用

示例:

结果:

所谓生命周期就是变量从被创建到被系统回收的过程

(1)局部变量在函数执行时才会被创建

(1)为了避免局部变量和全局变量出现混淆,在定义全局变量时,有些公司会有一些开发要求,例如:全局变量名前加上gl_或者g_的前缀,但不同公司可能不一致;

python函数中局部变量与全局变量遵守规则

(1)简单数据类型变量无论是否与全局变量重名,仅在函数内部创建和使用,函数退出后变量被释放,如有全局同名变量,其值不变.

*<>.高等教育出版社

python中局部变量和全局变量的区别

全局变量:在函数外或全局空间中声明的变量称为全局变量,这些变量可以由程序中的任何函数访问;

局部变量:在函数内声明的任何变量都称为局部变量,此变量存在局部空间中,而不是全局空间中.

Python中的类变量、实例变量、局部变量

类体内,所有函数外定义.

所有实例对象共享.

只有通过类名调用时才能修改,通过实例调用时无法修改.

假设某类变量名为"name",如果用该类的某个实例x来为name赋值:x.name = 'xxx',实质是为该实例新定义了一个变量name.且之后无法再通过该实例调用类变量name了.因为使用实例调用某名为"xxx"变量时,若该实例没有名为"xxx"的实例变量,则会去调用名为"xxx"的类变量;若有该名称的实例变量,则该实例无法再直接调用该名称对应的类变量.所以呢也不推荐通过实例来调用类变量.

即:通过类实例修改类变量的值时,实际是在定义新的与类变量同名的实例变量.

类体内,某函数(一般是__ init __ ())内定义. "self.变量名"

因为是属于某个具体实例的,所以呢不能通过类名访问.

如果不在__ init __ () 中调用(该函数会在创建实例时自动调用一次),则只有调用该实例中定义目标实例变量的那个函数后,才能使用目标实例变量.所以呢最好在__ init __ () 中定义实例变量.

类体内,某函数内定义.

直接在函数内用"变量名=值"的方式进行定义.

函数执行完毕后,该局部变量即被销毁.

以上就是土嘎嘎小编为大家整理的python局部变量函数相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章