python中变量的引用、可变和不可变类型、局部变量和全局变量
变量的引用
成都创新互联公司是网站建设技术企业,为成都企业提供专业的成都网站建设、成都网站设计,网站设计,网站制作,网站改版等技术服务。拥有十载丰富建站经验和众多成功案例,为您定制适合企业的网站。十载品质,值得信赖!
变量和数据都是保存在内存中的
变量和数据是分开存储的
数据保存在内存中某个位置,通过地址来标记
变量保存的是数据的地址,通过地址可以找到数据在内存空间的位置
把变量保存数据地址的过程称为引用
变量的重新赋值修改的是变量中引用数据的内存地址
变量之间的赋值实际是引用的传递
函数参数的传递,本质也是引用的传递
函数的返回值本身也是引用的传递
可变和不可变类型
不可变类型,内存中的数据不允许被修改:数字类型(int,bool,float,complex,long(2,x)、字符串、元组(tuple)
可变类型,内存中的数据可以被修改:列表list、字典dict
无论是可变还是不可变数据类型,通过赋值语句,都会改变变量的引用
Hash函数只能接收不可变数据类型,字典的键也只能是不可变数据类型,字典的value值可以是任意数据类型
局部变量
1.在函数内部定义的变量就是局部变量(作用范围只能是当前函数内部)
2.在函数外部无法直接访问局部变量
3.不同的函数中可以定义同名的局部变量
4.局部变量的生命周期:从定义变量时开始,到函数运行结束
全局变量
1.在所有函数外边定义的变量就是全局变量
2.让所有函数都能访问到,可以作为函数通信的桥梁
3.一般情况下,为了和普通变量的区别,需要加上g_或gl_前缀
4.全局变量一般放在所有函数的最上面
5.在函数内部修改全局变量,必须要加上global关键字,如果不加global只是定义了一个同名的局部变量
函数的多个返回值
python中函数中定义的变量只能在该函数题中起作用对吗
函数中定义的变量只能在函数体重起作用,Python在函数中定义的变量只能在该函数体中才可以起作用,只要出了这个函数,那么其他的地方就无法访问这个变量,因为该变量的作用域只在这个函数中,所以只在本函数体内有效。
因为定义了局部变量只能在其被声明的函数内部访问,要想在程序的全域进行访问只能通过定义全局变量的方法进行实现,这些只要在程序控制范围内都可以调用。
一般情况下变量就分为这两大类,一类是全局变量,一类是局部变量。
Python常用的控制语句:
1、if语句,当条件成立时运行语句块。经常与else,elif(相当于else if)配合使用、for语句,遍历列表、字符串、字典、集合等迭代器,依次处理迭代器中的每个元素。
2、while语句,当条件为真时,循环运行语句块、try语句,与except,finally配合使用处理在程序运行中出现的异常情况、class语句,用于定义类型。
3、def语句,用于定义函数和类型的方法、pass语句,表示此行为空,不运行任何操作。
4、from… import语句,从包导入模块或从模块导入某个对象、import … as语句,将导入的对象赋值给一个变量、in语句,判断一个对象是否在一个字符串、列表、元组里。
Python代码编写注意:
开发者有意让违反了缩进规则的程序不能通过编译,所以在进行Python代码的书写时一定要注意代码的缩进。
以上内容参考:百度百科-Python
python函数中局部变量与全局变量遵守规则
(1)简单数据类型变量无论是否与全局变量重名,仅在函数内部创建和使用,函数退出后变量被释放,如有全局同名变量,其值不变。
(2)简单数据类型变量在用global保留字声明后,作为全局变量使用,函数退出后该变量保留且值被函数改变。
(3)对于组合数据类型的全局变量,如果在函数内部没有被真实创建的同名变量,则函数内部可以直接使用并修改全局变量的值。
(4)如果函数内部真实创建了组合数据类型变量,无论是否有同名全局变量,函数仅对局部变量进行操作,函数退出后局部变量被释放,全局变量值不变。
*《python语言程序设计基础》.高等教育出版社
Python中的类变量、实例变量、局部变量
类体内,所有函数外定义。
所有实例对象共享。
只有通过类名调用时才能修改,通过实例调用时无法修改。
假设某类变量名为“name",如果用该类的某个实例x来为name赋值:x.name = 'xxx',实质是为该实例新定义了一个变量name。且之后无法再通过该实例调用类变量name了。因为使用实例调用某名为“xxx”变量时,若该实例没有名为“xxx”的实例变量,则会去调用名为“xxx”的类变量;若有该名称的实例变量,则该实例无法再直接调用该名称对应的类变量。因此也不推荐通过实例来调用类变量。
即:通过类实例修改类变量的值时,实际是在定义新的与类变量同名的实例变量。
类体内,某函数(一般是__ init __ ())内定义。 “self.变量名”
因为是属于某个具体实例的,因此不能通过类名访问。
如果不在__ init __ () 中调用(该函数会在创建实例时自动调用一次),则只有调用该实例中定义目标实例变量的那个函数后,才能使用目标实例变量。因此最好在__ init __ () 中定义实例变量。
类体内,某函数内定义。
直接在函数内用“变量名=值”的方式进行定义。
函数执行完毕后,该局部变量即被销毁。
Python函数和模块的定义与使用,包括变量的类型及匿名函数用法
函数是组织好,可重复使用的,用来实现相关功能的代码段
函数提高了代码的重复利用率和应用的模块性。
除Python自带的函数之外,也可以自己创建函数,叫做自定义函数
语法:
函数代码块以 def 开头
参数为 输入值 ,放于函数名后口号里面,
函数内容以冒号:开始,函数体缩进, return 返回 输出值
函数调用使用关键字参数来确定传入的参数值,此时,如果多个函数则不需要按照指定顺序。
在定义函数时,指定参数默认值。调用时如果不传入参数,则使用默认值
不定长部分如果没有指定参数,传入是一个空元组
加了 两个星号 ** 的参数会以字典的形式导入
/ 用来指明函数形参必须使用指定位置参数,不能使用关键字参数的形式。
3.8版本之后的才能使用
不使用 def 定义函数,没有函数名
lamdba主体时一个表达式,而不是代码块,函数体比def简单很多
定义在函数内部的为局部变量,仅能在函数内部使用
定义在函数外部的为全局变量,可在全局使用
模块是将包含所有定义的函数和变量的文件,一般将同类功能的函数组和在一起称为模块。
模块需要导入后,在调用相应函数进行使用
模块导入的方法:
从模块中导入一个指定的部分
把一个模块的所有内容全都导入
网站标题:python函数内部变量 python函数内部变量未定义
文章出自:http://lswzjz.com/article/hiccpd.html