困困

pyton注释、变量、数据类型、变量缓存、类型转换

电脑版发表于:2022/2/22 19:51
# 变量的声明
# 方法 1
a = 1
b = 2
print(a)
print(b)
# 方法 2
c, d =3, 4
print(c, d)
# 变量的命名
# 字母数字下划线,首字符不能为数字
# 严格区分大小写,且不能用关键字
# 变量命名有意义,且不能用中文
# import 引入 keyword 模块名
import keyword
res = keyword.kwlist #kwlist 可以打印出所有的关键字
print(res)
# Number (int float bool complex)
# int 整型 (正整型 0 负整型)
intvar = 123
print(intvar)
# type 获取一个变量的类型 type(值)
na_1 = type (intvar)
print(na_1)
# id 获取该变量所指向的地址 id (值)
na_1 = id(intvar)
print(na_1)
# 打印二进制
intvar = 0b101
print(intvar)
print(type(intvar))
print(id(intvar))
# 打印八进制
intvar = 0o127
print(intvar)
print(type(intvar))
print(id(intvar))
# 打印十六进制
intvar = 0xff
print(intvar)
print(type(intvar))
print(id(intvar))
# (1)float 浮点型 小数
# 表达一
floatvar = 3.15
print(floatvar, type(floatvar))
# 表达二
floatvar = 5.35e-3 # e 小数点向左移动三位
print(floatvar, type(floatvar))
floatvar = 5.35e+3 # e 小数点向右移动三位
print(floatvar, type(floatvar))
# (2) bool 布尔类型
boolvar = True
boolvar = False
print(boolvar, type(boolvar))
# (3) complex 复数类型
# 复数: 实数加虚数
# j: 如果一个书的平方等于-1, 那么这个数就是j
# 科学家认为有,表达一个高精度的类型
# 方式 1
complexvar = 3 + 4j
print(complexvar, type(complexvar))
# 方式 2  complex(实数, 虚数)
complexvar = complex(-5, -2)
print(complexvar)
# 容器类型数据 (str list tuple dict set )
# str 字符串类型
# (1) 单引号
strvar = '爱杨奇超'
print(strvar, type(strvar))
# (2) 双引号
strvar = "爱\n杨奇超"
print(strvar, type(strvar))
# (3) 三引号 (支持跨行 无需对单双引号重新转义)
strvar = """本来无一物
何处惹尘埃"""
print(strvar)
str = '''本来"无"一'物',
何处惹尘埃'''
print(strvar)
# 源字符串 r (原型化输出字符串,让转义字符失效)
strvar: str = r"爱\r杨奇超"
strvar = r"C:\Program Files\AntiCheatExpert\SGuard"
print(strvar)
# 字符串的格式化 %d--整形占位符 %s--浮点型占位符 %f--字符型占位符
strvar = "我是美女,有%2d豪车"%(3)
print(strvar)
strvar = "我是美女,有%.2f豪车"%(5.56) # %.1f 存在四舍五入
print(strvar)
strvar = "%s"%("超超")
print(strvar)
# 容器类型数据 list tuple
# 定义一个空列表
listvar = []
print(listvar, type(listvar))
# 正向索引 0 1 2 3 4
listvar = [13,2.14,True,6-2j,"我是帅哥"]
# 反向索引 -5 -4 -3 -2 -1
# 获取列表当中的值
res = listvar [4]
print(res)
res = listvar [-1]
print(res)
# 通用 => 想要获取列表最后一个元素值 需要通过len函数
# len 用来获取容器类型数据的元素个数(长度)
res = len (listvar)-1
print(res)
print(listvar[res])
print(listvar[len(listvar)-1])
# 修改列表当中的值
listvar [3] = "爱超超"
listvar [-4] = "比养生"
print(listvar)
# tuple 可获取 不可修改 有序
# 证明一个元组的根本特征是逗号,声明一个孔院组,可以直接使用(),(1)表明一个整型
tuplevar = (1,2,3,4)
print(tuplevar,type(tuplevar))
tuplevar = (1,)
print(tuplevar,type(tuplevar))
tuplevar =1,2,3
print(tuplevar,type(tuplevar))
# 正向索引 0 1 2
tuplevar = ("a","b",False)
# 逆向索引 -3 -2 -1
res = tuplevar[-1]
print(res)
# 元组不可修改 tuplevar [-1] = True
# str 字符串和元组几乎一模一样, 只不过每一个元素都是字符
# 可获取 不可修改 有序
#          0 123  45 6 7 8
strvar = " 瞅你一眼,浑身哆嗦"
#          -9-8-7-6-5-4-3-2-1
# (1) 获取字符串中的一字
res = strvar [2]
print(res)
# (2) 字符串无法修改
# strvar [-1] = "!"      error
# 容器类型数据
# set 集合 (用来做前交叉并补 集合操作的)

# (1) 定义一个集合 无序 自动去重
setvar = set() # 强制转换
print(setvar,type(setvar))
setvar = {"周杰伦","王宝强","李宇春"}
print(setvar)
setvar = {"刘德华","张学友","郭富城","王文","王宝强"}
print(setvar)
# dict 字典 由键值对数据组成,有序
# 定义一个空字典
dictvar = {}
print(dictvar,type(dictvar))
# "键": "值"
dictvar = {"top": "程咬金","middle": "妖姬","bottom": "崔丝塔娜","jungle": "七大大声","support": "德玛西亚"}
print(dictvar,type(dictvar))
# 获取字典当中的值 (通过键来获取)
res = dictvar['middle']
print(res)
# 通过字典的键来修改值
dictvar ['top'] = "赵信"
print(dictvar)
# 关于字典 在3.6版本之前 字典无序
#          3.6版本之后 字典有序(看起来有序,本质无需)
# 哈希算法: 哈希值 (算法底层)
#         将不可变的长度值计算成具有固定长度的唯一值
#         这个值可正可负 通过计算出来的键来获取值 形成一一映射的效果
#         字典进行存储的时候,并不是按照字面顺序依次存在内存中
#         而是通过哈希算法 随机散列的把键所对应的值存储在底层 所以字典无序 【为了求效率】
#         可以通过哈希算出的键获取散列的值
#         3.6之后,记录了字典的字面顺序,进行重新排序,所以看起来有序,实际上无序
# 可哈希数据(不可变的数据): Number (int float complex bool) str tuple
# 不可哈希数据(可变数据): list set dict (set 顺序可变的
# 可哈希数据
dictvar = {35: 1, 36: True,3.15:"111",False:"112233",3+2j:12,"大帅哥":78,(11,22,333):4}
print(dictvar)
# 字典的键 集合的值 都需要可哈希数据
# 获取4
print(dictvar[(11,22,333)])
dictvar [False] = 67
print(dictvar)
# 可哈希数据 (集合)
# setvar = {1,2,3,4,{5,6,7}}
# print(setvar)

# 同一文件的变量缓存机制
# 变量的缓存机制是为了节省内存空间,提高效率
# 1.对于整型而言,-5 ~ 正无穷 范围内的相同值 id一致
intvar1 = 99
intvar2 =99
print(id(intvar1),id(intvar2))
# 2.对于浮点数而言,非负数范围内的相同值 id一致
a1 = 3.15
a2 = 3.15
print(id(a1),id(a2))
# f1 = -3.14
# f2 = -3.14
# print(id(f1),id(f2))
# 3.对于布尔值而言,值相同的情况下 id一致
t1 = True
t2 = True
print(id(t1),id(t2))
# 4.复数的id标识都不相同(在 实数 + 虚数 这样的结构中)
c1 = 3-2j
c2 = 3-2j
print(id(c1),id(c2))
# 只有虚数的情况下,在值相同时,地址相同
c1 = 6j
c2 = 6j
print(id(c1),id(c2))

# 自动类型转换 (针对于Number类型) bool float int complex
# 当Number不同的数据类型进行运算的时候,默认向更高精度转化
# 精度从高到低顺序:
# bool --> int --> float --> complex
# True 默认转化是1
# Flase 默认转化是0
# bool + int
res = True + 89
print(res)
# bool + float
res =True + 55.78
print(res)
# bool + complex
res = False + 2-4j
print(res)
# int + float
res = 31 + 4.1
print(res)
# int + complex
res = 16 + 4-7j
print(res)
# float + complex
res = 8.12 + 3+5j
print(res)
### 强制类型转换 Number => (int float bool complex)
var1 = 13
var2 = 99.12
var3 = True
var4 = 3 + 1j
var5 = "1234"
var6 = "你好123"
#  把数据强转为整型 int (整型 浮点型 布尔类型 纯数字字符串)
res = int(var2) # 也可成intvar2
print(res)
res = int(var3)
print(res)
# 把数据强转为浮点型 float (整型 浮点型 布尔类型 纯数字字符串)
res = float(var1)
print(res)
res = float(var3)
print(res)
res = float(var5)
print(res)
# 把数据强转为复数 complex (整型 浮点型 布尔类型 纯数字字符串 复数)
print("-----------")
res = complex(var1) # 13 + 0j
res = complex(var2) # 99.12 + 0j
res = complex(var3) # 0j
res = complex(var4)
print(res)
res = complex(var5)
print(res)
# 把数据强转为布尔类型 bool (所有数据类型) 无论是Number还是容器类型数据都可以墙砖, 要么Flase要么True
res = bool(var6)
res = bool(var4)
print(res)
"""
布尔类型为假的十种情况: 
0,0.0,Flase,0j,""字符空,[]列表空,()空元素,set()空集合,{}空字典,None
None 是字典的一个关键字 表示空的 什么也没有 一般做初始
2:56
"""


关于TNBLOG
TNBLOG,技术分享。技术交流:群号677373950
ICP备案 :渝ICP备18016597号-1
App store Android
精彩评论
{{item.replyName}}
{{item.content}}
{{item.time}}
{{subpj.replyName}}
@{{subpj.beReplyName}}{{subpj.content}}
{{subpj.time}}
猜你喜欢