1、变量

1、变量如何使用

1.什么是变量?

即变化的量,用于记录事物的某种状态(模仿人类事物记忆能力)

2.如何使用变量

'''日常生活中:
name: HammerZe
age: 18
hobby: basketball 程序中:
username = 'HammerZe'
age = 18
hobby = 'basketball'
''' #语法格式:变量名 赋值符号 变量值
eg:username = 'HammerZe'
注.'='不是等号,是赋值符号!

2、变量存储的原理 --[ 重点 ]

Python的变量,粗放来说有数值型,布尔型,字符串类型,列表,元组,字典等6大类。那么不同变量类型在底层是如何存储的,关系到变量的引用,能否正确的掌握变量的相关操作?

其实变量存储的过程中,底层的存储过程并不难理解。下面用python举个例子:

name = '张三'
print(name)
'''
1.在内存中首先申请一块空间存储'张三'
2.将'张三'所在的内存空间地址绑定给name
3.如果访问输出'张三'就要通过name访问
'''

图示如下:



3、变量存储要遵循印射关系

  • 印射关系非常好理解,就拿娶媳妇来说,当然是一夫一妻制,不能一夫多妻!

  • 变量印射也是这样


#实例如下:
age = 18
age = 20
print(age) #这样18就会被当成垃圾pass掉,最后输出20

图示如下:



类比刚才的例子对比一下:



但是但是,女孩子可以‘养鱼’了,就是你想的那个样子我把字体搞小省的挨揍!


图示如下:



这样就是完全可以的!类比刚才的例子:



这样相比明白存储的原理了吧!

4、变量三要素

  1. 变量的值
  2. 变量的内存地址
  3. 变量的数据类型

这里用到几个小方法:

#实例如下:
name = 'HammerZe'
print(name) #变量的值
print(id(name)) #变量的内存地址
print(type(name)) #变量的数据类型

2、常量

主要用于记录一些不变的状态

在python中没有实际意义上的常量,都可以称为变量,但是我们墨守成规的将全大写的变量看成是常量。

#实例如下:
HOST = '127.0.0.1' 其他编程语言存在常量,定义了就无法修改!
const pi = 3.14 # 定义常量
pi = 4 # 不支持修改

3、底层优化

当数据量很小的时候,如果有多个变量名需要使用,那么就会指向同一块地址!

印射关系:一个变量名只能指向一个内存地址,一个内存地址可以有多个变量名指向(上面的一夫一妻制!)

#实例如下:



4、垃圾回收机制

Python的内存管理机制可以从以下三个方面来讲,Python垃圾回收主要以引用计数为主,分代回收为辅。

  • 引用计数
  • 标记清除
  • 分代回收

1. 引用计数

内存中变量值身上有几个变量名绑定引用计数就是几,只要不为0就不是垃圾

2. 标记清除

当内存即将沾满的时候 python会自动暂停程序的执行 从头到尾将内存中数据进行扫描,并打上标记,之后一次性清除掉标记的数据

3. 分代回收

会将数据的监管分为三个层次,随着层级的下降监督的频率降低


最后给大家分享一个官网学习网站,一起从小白成长成大牛,欢迎学习交流并指正错误,卷起来:

[Learn PyCharm]https://www.jetbrains.com/pycharm/learn/


最新文章

  1. response.sendRedirect()与request.getRequestDispatcher().forward()区别
  2. qml中打开本地html
  3. 黑马程序员:Java编程_7K面试题之银行业务调度系统
  4. .NET破解之google瓦片下载及拼接
  5. 安装mysql之后,存入中文出现乱码 02
  6. iOS CoreAnimation剖析
  7. 拉格朗日对偶(Lagrange duality)
  8. Direct 2D实现界面库 (2)
  9. 动态规划——线性dp
  10. 自己动手写 ASP.NET MVC 分页 part1
  11. 成小胖学习ActiveMQ·基础篇
  12. ubuntu14.04 安装Jenkins
  13. Delphi的RzDbgrid改变某行的背景色
  14. TCP三次握手四次挥手最通俗理解
  15. dedecms二次开发
  16. 使用maven插件构建docker镜像
  17. python datetime学习
  18. Spring中Model,ModelMap以及ModelAndView之间的区别
  19. WinForm DataGridView新增加行
  20. 阿里云Centos6.9安装图形化界面

热门文章

  1. Java中JDK、JRE和JVM三者之间有什么区别和联系?Java基础!
  2. macbook air m1上传文件到github
  3. 基于nginx实现私有yum仓库
  4. 一个神秘的oj2587 你猜是不是dp(线段树优化建图)
  5. codeforces316E3 Summer Homework(线段树,斐波那契数列)
  6. SyntaxError: Non-UTF-8 code starting with '\xbb' in file D:\流畅学python\ex32.py on line 1, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
  7. cassandra表中主键的类型
  8. 【c++ Prime 学习笔记】第9章 顺序容器
  9. oo第三次博客-JML规格
  10. Noip模拟32(再度翻车) 2021.8.7