1. 小数据池,(其他语言又叫常量池)
id() 查看变量的内存地址
is和==
is 判断内存地址是否一致
== 判断内容是否一致
小数据池的作用: 为了快速的创建字符串对象, 可以减少内存的浪费
用缓存的前提:数据可以被共享。不可变.
2. 再谈编码
ascii: 数字,字母, 特殊字符。 字节: 8bit = 1byte
gbk: 国标码。16bit, 2byte
unicode: 万国码。32bit, 4byte
utf-8:可变长度的unicode
英文: 1byte 8bit
欧洲文字: 2byte,16bit
中文: 3byte, 24bit
python2中用的是ascii
python3用的是unicode
字符串如果传输:
encode(编码) 结果是bytes类型
接受到bytes之后。
需要解码 decode(解码). 结果是字符串
讲解:
# 有字符串 "k:1|k1:2|k2:3|k3:4" 处理成字典 {'k':1,'k1':2....} (升级题) # {'k':1,'k1':2....} # s = "k:1|k1:2|k2:3|k3:4" # lst = s.split(":") # ['k:1', 'k1:2', 'k2:3', 'k3:4'] # dic = {} # for el in lst: # 'k:1' # k, v = el.split(":") # 解包, 解构, 元祖和列表 # dic[k] = int(v) # print(dic)
# 输出商品列表,用户输入序号,显示用户选中的商品(升级题) # # 商品列表: # goods = [{"name": "电脑", "price": 1999}, # {"name": "鼠标", "price": 10}, # {"name": "游艇", "price": 20}, # {"name": "美女", "price": 998}, ] # # 要求: # 1:页面显示 序号 + 商品名称 + 商品价格,如: # 1 电脑 1999 # 2 鼠标 10 # 2:用户输入选择的商品序号,然后打印商品名称及商品价格 # 3:如果用户输入的商品序号有误,则提示输入有误,并重新输入。 # 4:用户输入Q或者q,退出程序。 # 扩展:准备一个购物车。把购买的商品保存到购物车。 用户可以随意的对购物车进行增删改查
# goods = [{"name": "电脑", "price": 1999}, # {"name": "鼠标", "price": 10}, # {"name": "游艇", "price": 20}, # {"name": "美女", "price": 998}, ] #
# for i in range(len(goods)): # good = goods[i] # print(i+1,good['name'], good['price'] ) # # while 1: # num = input("请输入你要购买的商品(序号):").strip() # 2 # if num.upper() == "Q": # break # # index = int(num) - 1 # 还原商品的索引 # 1 # if num.isdigit() and (index < 0 or index > len(goods)-1): # print("输入有误, 请重新输入") # continue # # print("您要购买的商品是%s, 价格是%s" % (goods[index]['name'], goods[index]['price']))