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

学习:python进阶 (一)

时间:2022-08-27 15:55:51浏览次数:46  
标签:进阶 迭代 python 内存空间 学习 引用 100 变量

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,变量
From: https://www.cnblogs.com/datizi/p/16630704.html

相关文章

  • Python中itertools
    一、介绍itertools是python的迭代器,itertools提供的工具相当高效且节省内存使用这些工具,可创建自己定制的迭代器用于高效率循环1.count(初值=0,步长=1):1fromitertool......
  • Rust学习笔记-初识
    很早以前,看到马斯克说:“我是Rust的粉丝,但是为了性能会选择C。”之后就对Rust产生了一些兴趣,不过由于时间关系没有及时深入了解。最近,又看到Meta选定四种编程语言作为首选......
  • 低代码平台amis学习 一:部署+初步试用
    之前用django+vue写过一个数据构造平台:通过把业务逻辑接口在后台串起来,前端暴露简要的一个字段,来帮助自己快速构造数据在平时业务测试过程中,这个平台使用的还是挺频繁的......
  • Python - Requests(文件上传)
    文件上传(Form表单方式)1,单文件上传(1)下面是最简单的文件上传代码,运行后将logo.png这个文件上传到服务器:importrequests......Python-第三方HTTP库Requests使......
  • Python环境安装
    一、下载地址https://www.python.org/downloads/二、安装软件这里介绍Windows系统下python环境安装InstallNow:为默认安装(不建议),不然会把环境自动安装到个人目录里,找......
  • WDA学习(24):Context Menu使用
    1.17UIElement:ContextMenu使用本实例测试创建ContextMenu.1.创建Component,View:V_CONTEXT_MENU;2.创建Context节点;创建Node:NODE_TV,Cardinality:1..1;创建Att......
  • WDA学习(25):DateNavigator使用
    1.18UIElement:DateNavigator使用本实例测试创建DateNavigator;1.创建Component,View:V_DATE_NAVIGATOR;2.创建Context节点;创建NODE:NODE_DATENAV,Cardinality:......
  • 学习随笔——codeforces题目Build Permutation解答
    摘要:本题属于构造算法,虽然简单但对思维提升有一定帮助题目原地址如下:https://codeforces.com/problemset/problem/1713/C题目截图如下:  关键词:构造算法,动态规划,*120......
  • WDA学习(23):UI Element:Radio Button Group & CheckBox Group使用
    1.16UIElement:RadioButton&CheckBox使用本实例测试RadioButtonGroup,CheckBoxGroup等的使用。注:DropdownByKey,DropdownByIndex使用方式和RadioButtonGroupByKe......
  • python基础__装饰器(修饰器)
    装饰器处理逻辑当解释器读到@装饰符,会先解析@下一行的内容,把下一行的函数或者类作为@后边的函数的参数,执行被装饰的函数。例子1:被修饰函数不带参数1deflog(func):......