当前位置: 首页 > news >正文

python语法之变量、常量

文章目录

  • 变量
      • 变量的使用
      • 1.定义变量
      • 2.引用变量
      • 3.变量名所在位置的意义
    • **变量的两大特征**
      • `id` : 变量值的身份证, 反应的是内存地址
      • `type` : 变量值的类型
    • 小整数池
      • 在 pycharm 中
  • 常量
      • 什么是常量?
      • 为什么要有常量?
      • 怎么使用常量?

变量

什么是变量?

  • 变量就是可以变化的量
  • 量指的是事物的状态,比如人的年龄、性别,游戏角色的等级、金钱等等
  • 变量是一种存去内存的机制

为什么要有变量?

# 为了让计算机能够像人一样去记忆事物的某种状态,并且状态是可以发生变化的
# 详细地说:
# 程序执行的本质就是一系列状态的变化,变是程序执行的直接体现,所以我们需要有一种机制能够反映或者说是保存下来程序执行时状态,以及状态的变化。

怎么使用变量?

原则:先定义后使用

变量的定义由三部分组成,如下图:

未命名文件(2)

定义变量三大组成部分:

1 变量名:是用来访问变量值的
2 赋值符号:把值的内存地址绑定给变量名
3 变量值:记录的事物的状态,即存的数据

定义变量示范如下

age = 18        #记下年龄为18
sex = '男'       #记下人的性别为男性
name = "egon"   #记下名字

解释器执行到变量定义的代码时会申请内存空间存放变量值,然后将变量值的内存地址绑定给变量名,以变量的定义age=18为列

定义变量申请内存

通过变量即可引用对应的值

#通过变量名即可引用到值,我们可以结合print()功能将其打印出来
print(age)  #通过变量名age找到值18,然后执行print(18),输出:18

变量名的命名规范

变量名的命名应该见名知意

# 如果我们要存储的数据18代表的是一个人的年龄,那么变量名推荐命名为age
age = 18 
# 如果我们要存储的数据18代表的是一个人的等级,那么变量名推荐命名为level
level = 18

其他详细规范如下

# 命名规范
1. 变量名只能是 字母、数字或下划线的任意组合
2. 变量名的第一个字符不能是数字
3. 关键字不能声明为变量名,常用关键字如下
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from','global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

# 错误示范如下:
*a=123
$b=456
c$=789
2_name='lili'
123='lili'
and=123
年龄=18 # 强烈建议不要使用中文命名

# 正确示范如下
age_of_jason=31
page1='首页'
_class='终极一班'

变量名的命名风格

#方式一:驼峰体
AgeOfOldboy = 56 
NumberOfStudents = 80
#方式二:下划线(推荐使用)
age_of_oldboy = 56 
number_of_students = 80

定义变量名不好的方式

1.变量名为中文、拼音
2、变量名过长
3、变量名词不达意

变量的使用

1.定义变量

age = 18

level = 10

name = “shawn”

2.引用变量

print(age)

print(name)

3.变量名所在位置的意义

变量名在左边代表赋值

age = 18

左边的是赋值,右边的是取值

age = age + 1 # age = 18+1 = 19

变量的两大特征

一个变量的"id""type"
x = "aaa"
print(id(x))  #2282514548400
print(type(x))  #<class 'str'>

"id"一样,代表内存地址一样,指向的是同一个内存空间,值一定一样
x = 10
y = 10
print(id(x))  #140724873359904
print(id(y))  #140724873359904
print(type(x))  #<class 'int'>
print(type(y))  #<class 'int'>

# 如果值一样(即==成立),id可以不一样,也就说不同的内存空间里可以放相同的值
# >>> x="info==>name:egon age:18 >>>"
# >>> y="info==>name:egon age:18 >>>"
# >>>
# >>> x == y
# True
# >>> id(x)
# 2601843368304
# >>> id(y)
# 2601843368384
# >>> x is y
# False
# >>>

小整数池

在交互式模式下

  • Python实现 int 的时候有个小整数池
  • 为了避免因创建相同的值而重复申请内存空间所带来的效率问题
  • Python解释器会在启动时创建出小整数池,范围是**[-5,256]**
  • 该范围内的小整数对象是全局解释器范围内被重复使用,永远不会被 GC 回收
"-5~256"都是同一个池子里拿的,所以内存地址相同
>>> y=4
>>> id(y)
4297641184
>>> 
>>> x=3
>>> x+=1
>>> id(x)
4297641184

在 pycharm 中

  • 但在pycharm中运行python程序,pycharm出于对性能的考虑,会扩大小整数池的范围
  • 其他的字符串等不可变类型也都包含在内一便采用相同的方式处理了
  • 我们只需要记住这是一种优化机制,至于范围到底多大,无需细究

常量

什么是常量?

常量指在程序运行过程中不会改变的量

为什么要有常量?

在程序运行过程中,有些值是固定的、不应该被改变,比如圆周率 3.141592653…

怎么使用常量?

在Python中没有一个专门的语法定义常量,约定俗成是用全部大写的变量名表示常量。如:PI=3.14159。所以单从语法层面去讲,常量的使用与变量完全一致。

相关文章:

  • Python基本运算符
  • Python语法入门之垃圾回收机制
  • Python格式化字符串的4种方式
  • Python语法入门之基本数据类型
  • Python语法入门之与用户交互与格式化输出
  • python之数据类型之可变与不可变类型
  • python流程控制之for循环
  • python流程控制之while循环
  • Python语法入门之流程控制if判断
  • IDE集成开发环境的基本使用
  • Python实战演练:ATM + 购物车项目开发
  • 博客搬家通告!
  • python之深浅copy
  • python小数据池,代码块的深入剖析
  • 软件开发的目录规范
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • Android框架之Volley
  • angular2 简述
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • MySQL QA
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • Otto开发初探——微服务依赖管理新利器
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • vagrant 添加本地 box 安装 laravel homestead
  • 爱情 北京女病人
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 浮现式设计
  • 将 Measurements 和 Units 应用到物理学
  • 讲清楚之javascript作用域
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 前端之React实战:创建跨平台的项目架构
  • 如何胜任知名企业的商业数据分析师?
  • 微信小程序实战练习(仿五洲到家微信版)
  • 移动端 h5开发相关内容总结(三)
  • 用简单代码看卷积组块发展
  • 走向全栈之MongoDB的使用
  • # 数论-逆元
  • ###C语言程序设计-----C语言学习(6)#
  • (11)MATLAB PCA+SVM 人脸识别
  • (2)(2.10) LTM telemetry
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (附源码)php投票系统 毕业设计 121500
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (一)Neo4j下载安装以及初次使用
  • (一)插入排序
  • (转)Groupon前传:从10个月的失败作品修改,1个月找到成功
  • (转)树状数组
  • .htaccess 强制https 单独排除某个目录
  • .jks文件(JAVA KeyStore)
  • .Net 6.0 处理跨域的方式
  • .net framework 4.0中如何 输出 form 的name属性。
  • .net FrameWork简介,数组,枚举
  • .NET Micro Framework 4.2 beta 源码探析