Python-变量和常量

python 变量和常量

1.变量

1.1.变量理解

  • 1)什么是变量
变量即变化的量,核心是“变”与“量”二字,变即变化,量即衡量状态。
完整的变量包括:变量名,等号,变量值
对于计算机,变量可以看做是一种存放信息的容器,用于存储在计算机程序中需要引用和操作的信息。
对于人,提供一种用描述性的名称对数据进行标记的方法,这样我们写的程序就可以更清楚地被读者和我们自己理解。
Python的变量不需要特别的声明,数据类型是Python自动决定的,可以直接输入
  • 拓展知识:
变量的声明、定义、赋值和初始化有什么区别?
变量声明或定义:在环境中指定一个变量的名字。代表在内存中开辟一块区域。
赋值:销毁一个变量原来的值,并赋予一个新值。相当于改变了一个变量的状态。更改内存区域里的值。
初始化:一个声明后尚未初始化的变量一个有意义的初始值。即开辟内存区域时赋的值。不指定的话开辟时赋该类型的默认值。
注意:应注意区分初始化和赋值,在初始化之前不应该允许对变量进行赋值操作。
  • 2)为什么要有变量
程序执行的本质就是一系列状态的变化,变是程序执行的直接体现,所以我们需要有一种机制能够反映或者说是保存下来程序执行时状态以及状态的变化。
  • 3)何时需要用到变量
一段程序或者数值需要在后面经常用到就可以用变量

1.2.变量的定义及命名规范

  • 1)变量名要具有描述性的作用,要写的简洁直观易懂,且不要太长

  • 2)变量名只能是字母、数字或下划线的任意组合,且不能以数字开头,可以下划线开头。

  • 3)变量名可以用中文和拼音,但是尽量不要这样定义

  • 4)以下关键字不能声明为变量名(被系统占用)

['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']
  • 5)变量定义的等号左右建议用空格隔开(有无空格效果相同)

  • 6)有两种定义方式:驼峰体和下划线

实例:
studentNumber = 30          # 驼峰体,java,asp开发人员常用
student_number = 30         # python常用这种的,下划线连接词组
  • 7)定义函数用小写字母(习惯)
def sayhi                   # 全小写
  • 8)定义类用驼峰体(习惯)
class LuffyCity             # 驼峰体
  • 实例演示:变量的定义
name1 = "aaa,bbb,ccc"
name2 = "aaa bbb ccc"
print(name1)
print(name2)

---------------------------
aaa,bbb,ccc
aaa bbb ccc
---------------------------
# 结论:双引号里面的内容是一个字符串,逗号或者空格不起间隔作用
  • 在 linux 下声明变量:变量名=变量值, 等号 "=" 左右不能有空格,使用"$变量名"进行调用

  • 在 python 中没有严格规定,空格可有可没有,建议等号左右加空格

1.3.变量的多行赋值-格式化输出

  • 多行打印-注释符号的其他应用
name1 = "ddd"
name2 = name1
msg = '''
name1 = "ddd"
name2 = name1
'''
print(msg,name1,name2)

---------------------------
name1 = "ddd"
name2 = name1
 ddd ddd
---------------------------
总结:打印的多行内容只作为了字符串

1.4.变量的修改-重新赋值

  • 如果想让 name1 存储不同的数据,不需要删除原有变量就可以直接赋值
  • 相当于取消并重建变量名与变量值的关系
name1 = 111
name1 = 1.3
print(name1,type(name1))

---------------------------
1.3 <class 'float'>
---------------------------

1.5.变量删除

  • 变量回收

1.5.1.手动清理

name1 = 111
print(name1)
del name1
print(name1,type(name1))

---------------------------
111
Traceback (most recent call last):
  File "D:/workspace/zsdocs/python.zs/python_project/helloworld.py", line 10, in <module>
    print(name1,type(name1))
NameError: name 'name1' is not defined
---------------------------

1.5.2.超时清理

python有自己的内存回收机制,每隔一段时间,检查没有变量名的变量值,进行清理,一般不用担心内存会变满

1.6.变量二次赋值问题

  • 用变量为变量赋值时会遇到,有两种情况
1)直接赋字符串
2)用变量为变量赋值(需要注意)
# 默认:不加引号的字符串都认为是变量,会被系统认为是使用变量对变量进行赋值
  • 实例演示:
name1 = "aaa"
name2 = name1
print(name1,name2)
---------------------------
aaa aaa
---------------------------

name1 = "bbb"
print (name1,name2)
---------------------------
bbb aaa
---------------------------
  • 结论:
1.用变量 name1 给变量 name2 赋值,name1 只是将他当前的值交付给 name2,
2.赋完值之后 name2 获取到新的值,也就是 name1 的值,之后他们俩就没有关系了
3.此时无论 name1 如何变化也不会影响 name2 的值,因为 name2 = name1 并不是建立 name1 和 name2 值的关系

1.7.变量的其他知识

  • 定义变量会产生 id,type,value 等信息

  • 1)== 等号比较的是变量的 value 值

  • 2)is 比较的是变量的 id 值

  • 3)id 相同的两个变量,代表占用的同一块内存空间,所以其 type 和 value 必定相同

  • 4)两个变量的 value 相同,那么 type 肯定相同,但 id 可能不同,如下

  • 实例演示:

# 定义两个变量 x 和 y
x="I'm 18"
y="I'm 18"

# 查看 x 和 y 的 id
id(x)
-------------------------
139641415263432
-------------------------

id(y)
-------------------------
139641415263488
-------------------------

# 比较 x 和 y 的变量值,相同
x == y
-------------------------
True
-------------------------

# 比较 x 和 y 的 id 值,不同
x is y
-------------------------
False
-------------------------

1.8.小整数池问题

  • 1)在交互式模式下:python 实现 int 的时候有个小整数池。为了避免因创建相同的值而重复申请内存空间所带来的效率问题, Python 解释器会在启动时创建出小整数池,范围是 [-5,256],该范围内的小整数对象是全局解释器范围内被重复使用,永远不会被 GC 回收,每创建一个 -5 到 256 之间的整数,都是直接从这个池里直接拿走一个值,例如
# 定义变量 y,查看变量 id
y=4
id(y)
-------------------------
4297641184
-------------------------

# 定义变量 x,并进行加运算,查看变量 id
x=3
x+=1
id(x)
-------------------------
4297641184
-------------------------
  • 2)在 pycharm 中运行 python 程序,pycharm 出于对性能的考虑,会扩大小整数池的范围,其他的字符串等不可变类型也都包含在内一起采用相同的方式处理了,我们只需要记住这是一种优化机制,至于范围到底多大,无需细究

  • 拓展:什么是可变和不可变的数据类型:

1.可变类型:在 id 不变的情况下,value 可以变,则称为可变类型,如列表,字典
2.不可变类型:value 一旦改变,id 也改变,则称为不可变类型(id 变,意味着创建了新的内存空间)

2.常量-不变的量

2.1.什么是常量

  • 约定:全部都大写的名称用于表示常量
例如:
PIE = 3.1415926...

2.2.常量和变量区分

  • 1)在 Python 中没有一个专门的语法代表常量,所有的变量都是可变的,程序员约定俗成用变量名全部大写代表常量,
  • 2)常量也可以修改,但不建议
  • 3)全大写字母用于表示常量,全小写字母用于表示变量
  • 4)在 c 语言中有专门的常量定义语法,const int count = 60;一旦定义为常量,更改即会报错
posted @ 2017-12-09 20:37  天生帅才  阅读(1577)  评论(0编辑  收藏  举报
// 百度统计