'''
python变量与常量内容:
'''
# 变量:定义世间万物变化的状态
'''
height 180
weight 140
age 18
tree_name yuyang
'''
# print(180)
height = 180
print('height:', height)
weight = 140
print('weight:', weight)
age = 18
print('age:', age)
tree_name = 'yuyang'
print('tree_name:', tree_name)
# 变量的组成(符合变量名组成就不错)
# 变量名(描述;接收变量值) 赋值符号(赋值,把变量值传给变量名) 变量值(具体的值)
# 变量名的规范
akljfdksl = 10
print('akljfdksl:', akljfdksl)
# 1. 变量名必须要有描述意义
# 2. 变量名由数字/字母/下划线组成,且不能以数字开头
# $ = 10
# print($)
# 10tree = 10
# print(10tree)
# 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']
'''
# 定义变量的两种方式(代码至上而下运行,如果相同的变量名,执行后面的)
# 下划线一般用来连接单词
name_of_nick = 'nick' # 下划线式(建议,必须)
NameOfJason = 'jason' # 驼峰体
print(name_of_nick) # 先定义才能使用,没有引号的就是变量名
# 常量:不变化的量(变量名全大写)
# age = 1
#
# age = age + 1
#
# print(age)
# 常量:不变化是约定俗成的
AGE = 1
AGE = AGE + 1 # 傻屌才做
# 常量:约定俗称的不变化,实际能变化,但是当你强行变化的时候,你第二天就滚蛋了
# python内存管理
# 变量是python解释器提供的概念,运行python的时候才有
# 定义变量并运行 开辟一块新的内存空间存储变量
# 引用计数(针对变量值):变量值的引用次数
# age = 1000 # 1000的引用计数为1
# age1 = age # 1000的引用计数为2
# del age # delete删除age,1000的引用计数为1
# print(age1)
# del age1 # 1000的引用计数为0
# 垃圾回收机制:当一个变量值的引用计数为0的时候,会触发垃圾回收机制,改变量值会被回收
#
# # id
# age = 1000
# print(age) # 打印值
# print(id(age)) # 1507487488变量值的内存地址
# # 小整数池
# age1 = age
# print(id(age1))
#
# # 当python启动的时候,会自动定义[-5,256]之间的整数变量,他们的内存空间已经写死了
#
# age = 10
# age1 = age
# del age
# del age1
# 按理来说因该触发垃圾回收机制,但是由于10属于小整数池,不会触发垃圾回收机制
# 面试的时候可能会问你,这个才能考到你的水平 ---》 gil全局解释器锁
# 变量名用来接收变量值
# 定义变量就要开辟新的内存空间
# pycharm自行做了优化(短频快),pycharm把小整数池范围扩大了
# 打印值
print(age)
# 打印内存地址
print(id(age))
# 打印数据类型()
print(type(age))