本文目录一览:
- 1、python变量与地址的关系
- 2、python中变量定义的问题
- 3、Python变量可以只定义不赋值吗?
- 4、Python入门编程(1)变量
- 5、Python:Python 中的变量到底是什么
- 6、python中变量的引用、可变和不可变类型、局部变量和全局变量
python变量与地址的关系
在C语言中,系统会为每个变量分配内存空间,当改变变量的值时,改变的是内存空间中的值,变量的地址是不改变的。
而在python中,Python采用的是基于值的管理方式。当给变量赋值时,系统会为这个值分配内存空间,然后让这个变量指向这个值;当改变变量的值时,系统会为这个新的值分配另一个内存空间,然后还是让这个变量指向这个新值。
这时,如果没有任何变量指向内存空间的某个值,这个值称为垃圾数据,系统会自动将其删除,回收它占用的内存空间。
例如:
x=12
x=3.1415926
变量x在指向3.1415926后,数值12就变成了垃圾数据。也可以使用del 命令 删除变量,但是删除之后就不能再使用了。否则会报错:变量没有定义。
也就是说,C语言中变量变的是内存空间中的值,不变的是地址;而在Python中,变量变的是地址,不变的是内存空间中的值。
python中查看变量地址可用:id(变量名)
python中变量定义的问题
要知道一个对象与变量名的关系。在python中变量名与对象是不同的东西。一般来说,通过赋值语句会生成一个对象,但这个对象一般不能直接使用,需要通过一个引用来使用它,即给它一个名字。也就是等号左边是一个变量名,右边是生成对象的代码,因此在执行这条赋值语句后就存在了两个东西,一个是名字,一个是对象。在Python中把名字与变量关联起来叫绑定。因此在后面你如果继续对同一个变量名赋值的话,其实是实现了对变量名与新对象的重新绑定,在Python中这是允许的,原来绑定的对象如果无人再使用就自动回收,否则就将引用计数减一。而这个对象是无法改变类型了。因此你上面的a是变量名,后面才是对象的定义。不知道你是否理解。
Python变量可以只定义不赋值吗?
题主你好,
答案肯定是不可以的.
我在官方文档上找了一段话,希望对你的理解有帮助:
先看第二个红框,说的是:
如果使用一个未被定义的变量, 解释器会报错.
关键是括号中粉底的那三个词assigned a value,用来解释python中怎么才叫定义一个变量,也就是说你想定义一个变量必须要给它赋值,只有给一个名称赋了值,才叫定义了一个变量. //有的语言中, 可以使用某个关键字先声明一个变量, 而赋值的操作可以后面做; 还有的语言,你可以只声明变量而不赋值, 后面使用该未赋值的变量时, 解释器会根据你声明的类型赋一个默认值,等等; 也就是说不同语言对变量的处理逻辑可能不同.而 python对变量的处理逻辑就是: 定义和赋值二者绑在一块了, 即赋值的过程同时完成了"定义+赋值", 不存在"只定义"这个过程.
而python中变量的赋值在第一个红框中也说明了,就是 使用等号连接变量和值, 左边变量右边值.
-----
希望可以帮到题主, 欢迎追问, 如果有啥错误欢迎指正.
Python入门编程(1)变量
在开始本次的学习之前,我们先运行一下Test1.py。程序输出了 helloworld ,下面我们再进行一些更深入的思考,当这个文件被运行时,Python都做了些什么。
Test1.py
在运行这个文件时,它的 .py 后缀说明这是一个Python程序,因此 编译器 会使用 Python解释器 来运行它。接着解释器会读取整个程序,并且确认其中每个单词的含义。比如在这个程序中解释器遇到了 print() 这个单词,它便会把括号内的内容打印出来,而不管括号里面是什么。
在你编写程序时,编译器在会把程序中每个不同的不同用不同的颜色显示。比如 :
print (" helloworld ")
这种非常实用的方法叫做 语法突出 。
以上这些内容只是需要进行理解即可,接下来的内容我们便需要认真学习了。
让我们对 Test1.py 稍加修改,在这个程序中加入一个变量 sentence , 并且对print函数内的内容稍加修改,以便于让我们更好的认识变量。
通过这个程序的运行结果我们可见,修改之后的程序与先前的程序输出相同。在这里我们添加了一个名为 sentence 的变量,可知:
每个变量都储存了一个对应的值,这个值就是与变量相关联的信息。
现在我们对这个程序再加一点点的修改:
此时可以看出,同一个变量进行了两次不同的输出,这便是:
你可以随时在程序中修改变量的值,并且Python将变量的最新值记录下来。
程序员几乎每天都会犯错,下面这是一种我们初学阶段很有可能反的错误,下面我们来了解并学习如何解决它。
我们来看看这个新的程序。
Test2.py
在程序出现错误时,编译器无法对其进行下一步编译,此时编译器便会返回给我们一个 Traceback 。其是一条记录,它会解释器在运行代码时在哪里陷入困境,以上我提供的便是变量名拼写错误所被提供的 Traceback 。
编译器已经指出,在我运行Test2.py这个程序时,我们想输出的变量 sentece 并未被定义,程序无法找到识别我所提供的变量名。
名称错误的两种情况:1.在使用变量前未给变量赋值。2.变量名拼写错误。
在我这个提供的例子中,我们只需要将 sentece 修改为 sentence 便可以使程序正确运行了。
在创建程序中的变量名和编写代码时不必遵循英语的语法与拼写规则。
其实绝大多数的报错无非是在程序的某一行多写或少写一个字符,或是一些逻辑性的错误。在阅读Traceback以及寻找解决这些Bug的方法时我们应当 耐心 和 冷静 。这样会提升你解决问题的速度。
本次的文章对变量进行了初步的认识与学习,在接下来的文章中,我们将对更多Python中的相关知识进行阐述与学习。
本次的文章就先写到这里,下次我们将会进行对 数据类型 的学习。
Python:Python 中的变量到底是什么
-- 用标识符命名的存储单元的地址称为变量;
-- 变量是用来存储数据的,通过标识符可以获取变量的值,也可以对变量进行赋值;
-- 通过上面的示例我们发现,我们将 a 赋值给 b 以后,对 b 的 append 操作直接影响了 a,导致 a 也跟着 append 一个 4 元素;
-- 这从侧面说明 a 和 b 两个变量指向同一块内存区域。
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只是定义了一个同名的局部变量
函数的多个返回值