变量是存储在内存中的值,这就意味着在创建变量时会在内存中开辟一个空间。基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。因此,变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符。不能使用没有赋值过的变量。Python是一个动态类型的语言,可以赋值任意类型的语言,可以赋值给任意类型的值。
1. 多个变量赋值
a,b,c=1,2,3
print(a)
print(b)
print(c)
>>>结果:
1
2
3
d = e = f = 5
print(d)
print(e)
print(f)
>>>结果:
5
5
5
2. 标准数据类型
数据类型是指变量被赋值的值的类型。
Numbers(数字)
int (整数), 如 1, 只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。
bool (布尔), 如 True。
float (浮点数), 如 1.23、3E-2
complex (复数), 如 1 + 2j、 1.1 + 2.2j
String(字符串)
List(列表)
Tuple(元组)
Dictionary(字典)
3. Number类型
int
:指所有的整数,没有限制,无限大。如果数字过大,可以使用下划线分割,例如:123_343_343
这个分割几位都行,没有限制。10 进制数字不能以 0 开头,只要是数字,打印时,一定是10进制显示二进制: 0b开头
八进制:0o开头
十六进制:0x开头
float
:指所有的小数。对浮点数进行运算时,结果可能不精确。
4. 字符串
定义:字符串表示一段文本信息,字符串是程序中使用最多的数据类型。定义的时候必须需要用引号引起来,引号可以是单引号、双引号以及三引号(可以是单引号也可以是双引号)。相同的引号不能嵌套。并且单引号跟双引号不能换行,可以使用 \ 换行,但是打印的时候还是不换行,可以使用三引号换行,并且保留格式,单引号跟双引号也可以使用换行符
\n
在打印的时候换行msg = "一个男人" print(msg) msg= '一个男人' print(msg) msg= """ 一个男人 温水煮蛙 """ print(msg) msg = ''' 一个男人 温水煮蛙 ''' print(msg) >>>结果: 一个男人 一个男人 一个男人 温水煮蛙 一个男人 温水煮蛙
转义字符:
\
,使用转义符可以再字符串中使用一些特殊内容msg = "马老师说:\"今天的天气不错\"" print(msg) >>>结果: 马老师说:"今天的天气不错"
\t
制表符\n
换行符\\
表示反斜杠\uxxxx
表示 编码,例如\u16a1
,可以参考 Unicode 编码表
字符串的格式化
字符串之间可以使用 + 拼接,但是这种写法不常用,原因是字符串不能跟其他类型的数据进行拼接。
msg = "一个" + '男人' print(msg) >>>结果: 一个男人
使用
print
参数拼接print("aaaa",2323) >>>结果: aaaa 2323
占位符
在创建字符串是,可以指定占位符
%s
表示任意字符串,%5s
表示占位字符串最少是5个,如果不够使用空格补充。%s
补充的值可以是任意类型。可以使用%x.ys
表示字符串的长度限制在x-y位之间msg = "我是%10s" % '最靓的仔' print(msg) msg = "我是%s" % '最靓的仔' print(msg) msg = "hello %s,你好,我是%s" % ("tom","cat") print(msg) >>>结果: 我是 最靓的仔 我是最靓的仔 hello tom,你好,我是cat
%f
浮点数的占位符,可以使用%x.yf
表示小数的整数部分占 x 位(没有的部分使用空格补充,这个一般没有用,可以使用%.yf
),小数部分保留 y 位小数message = "一个小数:%f" % 12.345 >>>结果: 一个小数:12.345000 # 小数位太长,指定多少位小数 message = "指定位数的小数:%.2f" % 12.345 print(message) >>>结果: 指定位数的小数:12.35
%d
整数的占位符,可以使用%x.yd
表示整数部分 x 位(没有的部分使用空格补充,y 没有用,可以使用%xd
)message = "一个整数:%10d" % 2023 print(message) >>>结果: 一个整数: 2023
格式换字符串(这是名称)
格式化字符串是指在创建字符串的时候在字符串前添加一个 f 来创建一个格式化字符串。在格式化字符串中可以直接嵌入变量。
name = "小明" age = 16 message = f"你好{name},我今年{age}岁" print(message) >>>结果: 你好小明,我今年16岁
字符串的复制(将数字跟字符串相乘)
custname = "abcdefg" custname = custname * 3 print(custname) >>>结果: abcdefgabcdefgabcdefg
5. 布尔值和空值
布尔值(bool)
也属于整型,主要用来做逻辑判断,只有两个值
True
(表示真 - 1)和False
(表示假 - 0)空值(None)
表示不存在,空值
6. 类型检查
通过类型检查,可以知道值或者变量的类型,使用 type()
函数检查
id = 1345
name = "张三"
money = 14562.45
is_sure = True
print(type(id))
print(type(2332))
print(type(name))
print(type("sdfsdf"))
print(type(money))
print(type(1234.56))
print(type(is_sure))
print(type(False))
>>>结果:
<class 'int'>
<class 'int'>
<class 'str'>
<class 'str'>
<class 'float'>
<class 'float'>
<class 'bool'>
<class 'bool'>
7. 类型转换
类型转换对象本身的类型,而是将对象的值转换为新的对象。如果把 a = 100
转换为 a = '100
,并不是将 100 这个对象的类型改变了,而是创建了一个类型为 str
值为 100 的新对象,毕竟,对象的 id 跟 type 在对象创建之后就不能被改变了。
int()
:将其他类型得对象转换为 int 类型。不会对原来的对象产生影响,它是将对象转换为
int
(创建一个新对象)将其作为返回值返回。布尔值: True - 1, False - 0
浮点数:直接取整,是指直接舍弃掉小数点后面的内容
字符串:合法的整数字符串直接转换为对应的数字,如果不是一个合法的整数字符串,则会报错
>>> int('123.3') Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: '123.3'
对于其他不可转换为整型的对象,则直接报错
ValueError
float()
:将其他类型得对象转换为 float 类型。如果是 int 跟 bool 的要被转换,在值得后面直接加
.0
>>> float(True) 1.0 >>> float(100) 100.0 >>>
如果是字符串,跟 int 差不多一个意思。
str()
: 将其他类型得对象转换为 str 类型。>>> str(True) 'True' >>> str(123) '123' >>> str(123.3) '123.3'
bool()
:将其他类型得对象转换为 bool 类型。任何对象都可以转换为布尔值。
对于所有表示空得对象都会转换为 False,注意: 0 表示没有,使用
bool(0)
就是 False表示空值: 0 ,None, ' '
非空得对象都会转换为 True
>>> bool(None) False >>> bool(0) False >>> bool('') False >>> bool(' ') True >>> >>> bool(1234) True >>> bool('1212dsfdsf') True