编程语言
首页 > 编程语言> > 学习:python进阶 (一)

学习:python进阶 (一)

作者:互联网

python解释器多版本共存

1.下载需要的版本安装包

2.增加环境变量,把优先用的python放到第一个

修改python.exe可执行文件,在终端输入对应名称可以指定需要运行的python版本

虚拟环境

python3 -m venv 虚拟环境路径 #新建虚拟环境

cd 虚拟环境路径/Script

acticate.bat #开启虚拟环境

使用pycharm提供的工具

 

 变量赋值和引用

变量赋值的本质

每当定义一个新变量时,就会在内存中开辟一块空间用于数据存储

所以不同的变量他们的内存地址时不同的,使用id()获取内存地址,使用is 判断变量内存地址是否相同

name="张三"

age=18

#例如 以上两个变量的赋值,就是定义了两个变量,便令名分别是name和age

#本质上分别开辟了两块不同的内存控制,存放字符串“zhangsan”和数字18

#当我们访问name和age时,就会在对应的内存空间上获取值

【变量引用的本质】

把一个变量的内存地址,同时关联到另一个变量上,于是两个变量对应一块内存地址

a=100

b=a

#此时a和b指向同一块内存空间,即 id(a) == id(b)

案例 一

a = 100

b = a

a=200

print(a,b)  结果 200  100   重新赋值的a 已经作废了以前的引用 所以新的a指向了200

 

案例二

a=[1,2,3,4]

b=a

a[0]=100

print(a,b)  结果 [100,2,3,4] [100,2,3,4]  因为修改的是a指向里面的元素 所以a与b打印结果还是相同

小整数池

python在内存上有一定的优化,比如小整数池和字符串驻留

【小整数池】 python解释器会在程序开始运行的时候预先开辟一块内存空间,存放一部分整数

以后程序需要用到一些变量绑定这些值时,直接绑定到这个内存地址上,不需要在逐个开辟空间(开辟空间访问硬件需要资源消耗)这是python的一种资源优化机制 范围:-5~256

【字符串驻留】python的驻留机制对相同的字符串只保留一份拷贝,后续创建相同字符串时,不会开辟新空间,而是把该字符串的地址赋给新创建的变量。 范围 英文字母 数字 下划线

垃圾回收机制

变量使用前需要定义,

定义变量就是在内存中开辟一块空间用于数据储存,如果需要使用很多数据需要开辟很多内存空间

内存空间是有限的,如果定义了很多不再使用的变量,会导致内存浪费,甚至内存溢出的问题

这就需要我们在变量使用后 及时释放这个变量所占用的内存空间

但是这个释放内存空间的工作时复杂且有 风险的,幸运的是python解释器帮我们做了这部分工作

python解释器内存主要使用 引用计数 的方式回收垃圾

什么是垃圾:垃圾是指没有绑定变量名的值,也就是无法访问的值,即没有用的值

如何回收垃圾:引用计数的方式,每当这个值被引用,即被绑定到一个新的变量名上,引用计数+1

#通过 del  方法可以将变量名和值解绑,将引用计数减少

import sys

sys.getrefcount(值) #查看引用计数

标记回收、分代回收

#标记清除解决循环引用造成的问题

#分代回收解决引用计数效率低的问题

 

 

迭代器

可迭代对象(iterable)

指的是可以依次返回其内部成员的对象。比如字符串、列表、字典、文件都是可迭代对象。

迭代器(iterator)内置函数 iter(可迭代对象)得到迭代器,本质上迭代器也是可迭代对象

 

标签:进阶,迭代,python,内存空间,学习,引用,100,变量
来源: https://www.cnblogs.com/datizi/p/16630704.html