Python变量详解

一、变量的定义

  变量:记录事物变化的状态。

  为了让计算机具备人的某项功能,能更好的完成人类下达的任务,由此诞生了变量。

二、变量组成的三部分

变量是有三部分构成。

# 变量名 赋值符号 变量值
name = "Tom"

  

2.1 变量名

  当变量定义的时候,会在内存中申请一块空间专门用来存放变量值,而变量名,就是这个空间的门牌号,能方便的找到这块内存空间。

2.1.1 变量名的命名规范

  变量名要能描述变量值的意思,最好做到顾名知意,合理的变量名命名可以让你的程序的可阅读性提高。

  1. 为了提高自己在程序员中的地位,切记不可用拼音。
  2. 为了提高自己在程序员中的地位,切忌不可用中文。
  3. 不可使用Python中的关键字。
  4. 不可数字开头。

2.1.2 变量名的命名风格

  变量名一般有三种命名方式。

  1. 纯小写+数字+下划线。变量名一般会采用这种方式。
  2. 驼峰体。首字母大写。
  3. 纯大写。这一般是用来定义程序中的常量。注意,这是约定俗成的规范,不是Python本身的语法。

2.2 赋值符号

  这个等号就是变量的赋值符号。它的意义是将右侧的变量值内存地址绑给左侧的变量名,当我们在使用变量名的时候就可以找到变量值了。

2.3 变量值

  变量值就是事物的状态了,定义的之后可以用变量名来访问。变量值有一个引用次数,一旦这块空间被引用次数为0,就意味着我们没有途径能找到这块空间了,如果不进行清理, 会导致内存被占用。一旦找不到这块空间,就会触发Python的内存管理:垃圾回收机制,对该空间进行回收在利用。

三、变量的三个重要特性

3.1 特性

  变量一共有三个特性

  1. id.就是变量值得内存空间地址,每一个值都有唯一一个id。内存地址不同,id就不相同。可以使用id()来查看变量的内存地址。
  2. type。不同类型的值记录事物的状态有所不同,这就是Python的数据类型。可以使用type()来查看。
  3. 变量值。就是存储值的本身。

3.2 is和==

  两者都是用来比较的,但是又不相同。

  is:主要是用来判断两个值是不是属于同一个内存空间,即内存地址是否相同。

  ==:是判断值是否相等,而不管是否是一个内存空间。

3.3 小整数池

  我们不说pycharm中的变化,只说python解释器中的变化。

  通常来说,我们定义两个值相同的变量,他们会存在两个不同的内存空间,如此的话,他们的id肯定会有所不同,但是实际情况是,我们会发现在python交互式环境下,定义的两个值相同的变量的id是相同的,为什么会发生这种变化呢?

  小整数池的概念就来了,当Python解释器运行的饿时候,它会把一些常用的整数和字母先提前定义,我们在使用的时候,不是申请内存空间,而是直接使用的已经定义好的空间,这就是小整数池。

  小整数池的范围是[-5,256],还有纯字母,笔者实验了字母加数字,依然得到id相同。

  注意:python解释器和pycharm有所不同,pycharm中对常用的小整数池进行了扩容,建议开发时以Python解释器为主。

tip:练习作业

#1、病毒程序需要定期将监控到的数据写入日志文件,请记录下日志文件路径C:\a\b\c\adhsvc.dll.system32,方便后期处理
LOGFILELOAD = C:\a\b\c\adhsvc.dll.system32
#2、病毒程序在上传文件时,发送的报头数据里需要包含文件信息:文件名a.txt、大小360,请记录下文件信息
head_info = {"file_name": "a.txt",
"file_size": 360}
#3、程序运行过程中有一段错误日志需要记录下来,错误日志为"上传文件失败"
mis_info = "上传文件失败"
#4、假设我收到一条信息要记录,信息为中病毒客户端的信息"[2020-02-18-17:00:48] 癞蛤蟆病毒感染者-> 80.82.70.187:33649 正在上传数据"
msg_client = "[2020-02-18-17:00:48] 癞蛤蟆病毒感染者-> 80.82.70.187:33649 正在上传数据"
#5、把服务端ip地址存放下来,ip地址为10.0.10.11
server_ip = "10.0.10.11"
#6、病毒程序需要每隔3秒才运行一次,请记录下这个时间间隔
interval_seconds = 3

最新文章

  1. springMVC异常&&重定向&&转发
  2. css3圆角(还有百分比设置椭圆) 阴影 字体
  3. Oracle 行转列,列转行
  4. Oracle异常处理,动态游标
  5. 第四章:javascript: 栈
  6. 函数式C代码
  7. jdbc 处理mysql procedure返回的多个结果集
  8. mac中eclipse安装openExplore插件
  9. Java6和Java8在Windows上共存
  10. C#版[击败98.85%的提交] - Leetcode717. 1比特与2比特字符 - 题解
  11. 字符串函数之Strtok()函数
  12. 【nodejs】让nodejs像后端mvc框架(asp.net mvc)一样处理请求--参数自动映射篇(6/8)
  13. 006、容器 What、Why、How(2018-12-21 周五)
  14. 10.14 预订会议室的小Demo
  15. Node.js版本管理工具 nvm
  16. springboot项目的重定向和转发
  17. [二叉树建树]1119. Pre- and Post-order Traversals (30) (前序和后序遍历建立二叉树)
  18. 使用Word 进行UTF8 以及字符串编码的转换操作
  19. (转) SpringBoot非官方教程 | 第二篇:Spring Boot配置文件详解
  20. Win10 Bash更改默认用户

热门文章

  1. Mysql数据库设置权限
  2. JavaScript模块化-CommonJS、AMD、CMD、UMD、ES6
  3. shell脚本中的case条件语句介绍和使用案例
  4. DrQA 阅读维基百科来回答开放问题 Reading Wikipedia to Answer Open-Domain Questions
  5. Kubernetes(K8s) 安装(使用kubeadm安装Kubernetes集群)
  6. 记录一个不同的流媒体网站实现方法,和用Python爬虫爬它的坑
  7. hive的基本操作与应用
  8. jsp学习笔记day2
  9. [vijos1234]口袋的天空<最小生成树>
  10. springBoot集成zuul路由forward,设置setSendZuulResponse无效