变量的进阶使用
- 1变量引用
- 2可变、不可变数据类型
- 3局部变量和全局变量
- 4.Tips
本系列博文来自学习《Python基础视频教程》笔记整理,视屏教程连接地址:http://yun.itheima.com/course/273.html
在博文:https://blog.csdn.net/sinat_40624829/article/details/89555165中简单的介绍了变量的使用之后,本博文主要总结变量的进阶使用。
1变量引用
变量和数据保存在内存,两者分开保存。
数据保存在内存中的一个位置,变量中保存着数据在内存中的地址。
变量中记录着数据的地址,这就叫做引用。
使用id()查看变量中保存的数据在内存中的地址。
实参通过引用调用,调用函数时,本质上保存的是:实参保存数据的引用(地址),而不是实参保存的数据。
函数的返回值传递引用(地址)
2可变、不可变数据类型
不可变数据类型:数字,字符串,元组
可变数据类型:列表、字典
a=1
一旦在某一个内存单元中指定了一个数字,这个单元中的数字就不能变了,但是a可以指向不同的地址,就好像a代表的数字在变一样。
a=“hello”
不可变
a=[1,2,3]
可变,可以通过方法A.append/A.pop来修改列表内容。
a=[3,2,1]
不是在修改原来的列表,而是新建了一个列表
对列表和字典操作:赋值语句会修改变量的引用
)
)
字典的Key不能是可变类型:s数字、元素、字符串可以作为键,列表字典不行,否则会报错。
)
)
报错信息:unhashable
哈希:看做一个函数,传入一个不可变数据类型,并且返回一个结果,提取数据的特征码,如果传递的内容是相同的,就能够返回相同的结果,如果传递的内容是不同的能够返回不同的结果。Hash函数只能接受一个不可变数据类型作为参数,不能接受可变类型参数。
在python设置字典键值时,为了后续增删查改的方便,解释器会对key进行hash操作,以决定如何在内存中保存字典数据。
3局部变量和全局变量
局部变量:函数内部定义的变量,只能在定义它的函数中使用
全局变量:函数外定义的变量,能够在所有函数中都使用
温馨提示;在其他编程语言中,不推荐使用全局变量,–可变范围大,导致函数不好维护,
在Python中有特定的设置,来避免一些问题。函数中要使用变量的时候,就近查找原则,找到就用。
3.1局部变量:临时保存一个函数内部使用的数据。
1.生命周期:创建到消亡,生命周期内才能使用变量。
2.使用细节:不同的函数内部,定义了相同名字变量,相互之间使用互不干扰。
3.2全局变量:
1.使用细节: 在函数内部,可以通过变量的引用获取对应的数据,但是不允许直接修改全局变量的引用。也就是只能用,不能对其使用赋值操作。
num=10 def demo_one():# 希望修改全局变量的值# 在python函数中不允许修改全局变量的值# 如果使用赋值语句,会在函数内部定义一个局部变量num = 99print("demo_one =>%d" %num) def demo_two():print("demo_two=>%d" % num) demo_one() demo_two()
输出:
demo_one =>99
demo_two=>10
2.在函数内部来修改全局变量的值:global声明全局变量
num=10 def demo_one():# 希望修改全局变量的值# 在python函数中不允许修改全局变量的值# 如果使用赋值语句,会在函数内部定义一个局部变量# 声明一下,就能够说后面的变量是全局变量,就不会创建一个局部变量global numnum = 99print("demo_one =>%d" %num) def demo_two():print("demo_two=>%d" % num) demo_one() demo_two()
输出:
demo_one =>99
demo_two=>99
3.全局变量定义的位置:在开发时,把所有的全局变量定义所有函数的上方,就可以保证所有的函数都能正常访访问所有的全局变量。
4.全局变量命名:不同公司对于全局变量的标记有不同的规则;在变量名前面增加gl_或者g_(到新的公司工作,可以问一下,领导全局变量的命名规则,可以显得你有开发经验)
4.Tips
1.Pycharm调试的小技巧:左下角的调试模块跳转。
2.Python代码结构:
shebang
import
全局变量
函数定义
执行代码
3.程序执行的顺序要清楚,老师每次说的时候大家都觉得很简单,但是在关键时刻才知道平时积累的重要性.