变量
(1)变量的概念
可以改变的量就是变量,实际指代的是内存中的一块空间
(2)变量的声明
a = 100 # 将值100的内存地址赋予变量名a
b = 200 # 将值200的内存地址赋予变量名b (如下图所示)
相同赋值效果的,python独有的简化写法:
a,b = 100 , 200
将相同的值赋予给两个变量的简化写法:
链式赋值
a = b = 500
(3)变量的命名
说到变量的命名,唐代诗人王闻曾作诗一首,以警世人
《变量的命名》
字母数字下划线,首字符不能为数字.
严格区分大小写,且不能使用关键字.
变量命名有意义,且不能使用中文哦.
—————王闻
短短数句,却将从古至今变量命名的真谛呈现给世人,以容纳百川的胸怀,孜孜不倦的教诲着一代又一代程序员
今日有幸引用王先生的诗词给大家讲讲:
变量名仅由字母,数字,下划线组成,首字符不能为数字,严格区分大小写,且不能使用语言中的各种keyword(如:Ture、print),
变量名要取一个有对应意义的名字,不能以中文命名,下划线多用在变量名中间充当空格,或单独拿来命名无意义值。
python 支持中文命名变量,但是严禁使用(容易出现乱码,占用空间)
utf-8 国际标准编码(可变长的unicode编码) 中文字符占用3个字节 , 英文数字特殊符号占用1个字节
gbk 国标编码 , 中文字符占用2个字节,英文或者符号占用1个字节
所以在用不同编码解读程序时会因为中文字符的解读方式不同出现乱码
(4)变量的交换
我们先了解下垃圾回收机制
垃圾回收机制:简要概括,当某一值没有被任何对象引用时,该值会从内存里被删除
然后来看看大部分语言使用的通用写法
a = 20
b = 21
tmp = a
a = b
b = tmp
这里的tmp就是为了继承变量:a之前被赋予的值:20,因为在 a 被赋予 b 的 21时,如果没有tmp,
失去了赋予对象 a 的值 20 就会被垃圾回收机制删除,之后再将tmp对应的 20 赋予给 b,
完成a与b的值的交换。
python特有的值交换写法
交叉赋值
a = 20
b = 21
a,b = b,a
与通用写法得到的结果完全一样
解压赋值
lst = [0,1,2,3,4,5,6]
a,b,c,d,e,f = lst
- 注意,上述解压赋值,等号左边的变量名个数必须与右面包含值的个数相同,否则会报错
但如果我们只想取头尾的几个值,可以用*_匹配
lst = [0,1,2,3,4,5,6]
a,b,*_ = lst # 只赋值列表头部两个值给a,b,后面值都被*_接收
(5)定义常量 :
约定俗成全都变成大写,这个值永远不能改变
python中所谓的常量也能改变,但约定俗成将全由大写字母组成的变量,理解为常量,这个值不能改变
如:QQACCOUNTNUMBER = 123463922
数据类型
需要掌握的代码:
# type 获取一个值的类型
res = type(intvar)
print(res) #输出对应值的数据类型
# id 获取一个值的地址
res = id(intvar)
print(res) #输出对应值的地址
(1) int 整型
正整数、 0、 负整数就是整型
如:intvar = 255
print(type(intvar)) #输出会得到数据类型为 int
int 还能将由整形组成的字符串转化为整形
如:a = int('13') #最后会将13的字符串变成整形13赋予给变量a
各种不同进制的整型
二进制整型格式开头加0b,如:0b10
八进制整型格式开头加0o,如:0o127
十六进制整型格式开头加0x,如:0xff
(2) float 浮点型
带小数点的数字类型就是浮点型
表达方式1
floatvar = 3.14
print(type(floatvar)) #输出会得到数据类型为 float
表达方式2 科学计数法
floatvar = 5.1e4 #5.1e4指的是将5.1的小数点向右移4位,也就是5.1*10^4
print(floatvar) #这里会输出51000.0
(2) bool 布尔型
布尔型只有两个值:True(真的) , False(假的)
(3) complex 复数
complex 复数:实数+虚数 如:5+3j 5代表是实数 3j是虚数
科学家认为有一个数,他的平方等于-1,那么这个数就是j,表达一个高精度的类型
表达方式1
complexvar1 = 3-10j
complexvar2 = 20j
表达方式2
complexvar = complex(3,-10)
print(complexvar) #输出结果为3-10j
(4)str 字符串
转义字符
转义字符 : \ + 某个字符
(1) 将有意义的字符变得无意义
(2) 将无意义的字符变得有意义
\n,\r\n 换行
\t 缩进 水平制表符(一般是四个空格的距离,同tab效果)
\r 将\r后面的字符直接拉到当前行行首
sprint("乌贼今天偷懒了吗\n并没有") #输出结果为:乌贼今天偷懒了吗
并没有
sprint("乌贼今天偷懒了吗\r并没有") #输出结果为: 并没有
sprint("乌贼今天偷懒了吗\n并\r没有") #输出结果为: 乌贼今天偷懒了吗
没有
三引号字符串 ‘’’ “”" (支持跨行效果)
strvar = '''
黑夜给了我黑色的眼睛,
但是我却用它翻白眼
'''
strvar = """
黑夜给了我'黑'色的"眼睛",
但是我却用它翻白眼
"""
元字符串 r"字符串"
不转义字符,原型化输出字符串
strvar = r"E:\python30\nay2"
print(strvar) #输出结果为 E:\python30\nay2,其中\n不会被程序当成换行符
格式化字符串
语法: "字符串" % (值1,值2,值3)
%d 整型占位符
%f 浮点型占位符
%s 字符串占位符
%d 整型占位符
strvar = "张恒学习犯困,买了%d个风油精" % (1000)
print(strvar) 输出结果为 张恒学习犯困,买了1000个风油精
# %2d 占2位 原字符串默认居右
strvar = "黄俊今年%2d岁" % (7)
print(strvar) 输出结果为 黄俊今年 7岁
# %-2d 占2位 原字符串默认居左
strvar = "黄俊今年%-2d岁" % (7)
print(strvar) 输出结果为 黄俊今年7 岁
%f 浮点型占位符
strvar = "大太阳同学今天开工资,发了%f元" % (9.9)
print(strvar) 输出结果为 大太阳同学今天开工资,发了9.9元
# %.2f 小数点保留2位
strvar = "大太阳同学今天开工资,发了%.2f元" % (9.9)
print(strvar) 输出结果为 大太阳同学今天开工资,发了9.90元
# %f 存在四舍五入的情况
strvar = "大太阳同学今天开工资,发了%.1f元" % (9.18)
print(strvar) 输出结果为 大太阳同学今天开工资,发了9.2元
%s 字符串占位符
strvar = "%s" % ("云超这个名字很霸气,上古时期,祖上有人")
print(strvar) 输出结果为 云超这个名字很霸气,上古时期,祖上有人
# 综合案例
strvar = "%s看好了一辆车,特斯拉model x,买了%d辆,花了%.1f元" % ("尉翼麟",10,9.9)
print(strvar) 输出结果为 尉翼麟看好了一辆车,特斯拉model x,买了10辆,花了9.9元
# 可以全都用%s占位符进行取代.
strvar = "%s看好了一辆车,特斯拉model x,买了%s辆,花了%s元" % ("尉翼麟",10,9.9)
print(strvar) 输出结果为 尉翼麟看好了一辆车,特斯拉model x,买了10辆,花了9.9元
【新知识】字符串的拼接重复
用加号将两个字符串相加可以使之拼接在一起
将字符串乘以正整数,可以使之重复相应的次数并拼接在一起
- 但这样做,在计算机底层是复制并创建新的内存空间来接收拼接重复的结果,不推荐使用
(5) 容器型
list 列表
特点: 可获取,可修改,有序
列表型能利用索引读写对应值
# 正向索引 0 1 2 3 4
listvar = [90,19.9,True,8+90j,"祁雯鹏"]
# 逆向索引 -5 -4 -3 -2 -1
# python 特有的反向取值(直接通过-1下标取元素)
读写索引对应的值
res = listvar[3]
listvar[-2] = false
其他语言通用写法
如果列表内值过多,取末尾值时
len 获取容器类型数据的长度,元素的总个数
count = len(listvar)
res = listvar[count - 1]
tuple 元组
可获取 不可修改 有序
定义一个空元组
tuplevar = ()
定义一个普通的元组
# 正向索引 0 1 2 3 4
tuplevar = ("王振","xd","宋普东","房志宽","朱家熠")
# 逆向索引 -5 -4 -3 -2 -1
获取元组当中的元素
res = tuplevar[2]
res = tuplevar[-2]
元组当中的元素无法被修改,强行修改会报错
仅仅是单纯的圆括号无法代表元组类型,逗号是标识是否是元组的标识符
错误的示范: tuplevar = (1)
正确的格式:
tuplevar = (1,)
tuplevar = 2,
索引与字符串
字符串:可获取,不可修改,有序
# 0 1 2 3 4 5 6 7 8
strvar = "我爱你,亲爱的菇凉"
# -9-8-7-6-5-4-3-2-1
获取字符串中的元素
# res = strvar[1]
# print(res) 输出结果为:爱
# 可以修改字符串中的元素么? 不行
# strvar[1] = "恨" #报错
# 空字符串
strvar = ""
# 空格也是字符
strvar = " "
print(strvar) #输出一个空格