Python3 中有六个标准的数据类型:
●Numbers(数字类型)
●Strings(字符串类型)
●Lists(列表类型)
●Tuples(元组类型)
●Dictionaries(字典类型)
●Sets(集合类型)
Python内置的数字类型有整型(Integers)、浮点型(Floating point numbers)和复数(Complex numbers)三种,作为可以进行算术运算等的数据类型。
Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样,计算机由于使用二进制,所以,有时候用十六进制表示整数比较方便,十六进制用0x 前缀和0-9,a-f表示如: 0xff00 , 0xa5b4c3d2
0b开始的是二进制(binary),0o开始的是八进制(octonary)
0x9+0x1
# 输出结果为10,意思是十六进制的9与十六进制的1相加,结果为十六进制的10,但此处输出的为十进制的10,在十六进制中,用a来表示十进制的10
0xa
# 输出结果为10
0xa+0x1 # 输出11
#十六进制的10与十六进制的1相加,结果为十六进制的b,输出十进制结果也就为11
一个布尔值只有True 、False 两种值
布尔值是整型(Integers)的子类,用于逻辑判断真(True)或假(False),用数值1和0分别代表常量True和False。
在Python语言中,False可以是数值为0、对象为None或者是序列中的空字符串、空列表、空元组。
5 > 3 and 3 > 1 # True
5 > 3 or 1 > 3 # True
not 1 > 2 # True
浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的1.23e9 ,或者12.3e8 ,0.000012可以写成1.2e-5
Python的浮点型执行IEEE754双精度标准,8个字节一个浮点。101010000001000…0100
复数类型(Complex)由实数和虚数组成a+bj,用于复数的表示,虚数部分需加上j或J,如:-1j、0j,1.0j。
Python的复数类型是其他语言一般没有的。
(3+4j)+(5+7j)
# 输出(8+11j)
字符串是以单引号’ 或双引号" 括起来的任意文本,比如’abc’ , “xyz” 等等。
如果字符串内部既包含’ 又包含" 怎么办?可以用转义字符\ 来标识,‘I’m “OK”!’
转义字符\ 可以转义很多字符,比如\n 表示换行, \t 表示制表符,字符\ 本身也要转义,所以\ 表示的字符就是\
如果字符串里面有很多字符都需要转义,就需要加很多\ ,为了简化,Python还允许用r’‘表示’‘内部的字符串默认不转义,如果字符串内部有很多换行,用\n 写在一行里不好阅读,为了简化,Python允许用’’’…’’’ 的格式表示多行内容
print('I\'m ok.')
print('I\'m learning\nPython.')
print('\\\t\\')
print(r'\\\t\\')
print('''line1
line2
line3''')
空值是Python里一个特殊的值,用None 表示。None 不能理解为0 ,因为0 是有意义的,而None 是一个特殊的空值。
此外,Python还提供了列表、字典等多种数据类型,还允许创建自定义数据类型。
type()函数是内建的用来查看变量类型的函数,调用它可以简单的查看数据类型,基本用法:
type(对象) #对象即为需要查看类型的对象或数据,通过返回值返回相应的类型,
转换为整型int类型:
int(x [,base])
# int()函数将x转换为一个整数,x为字符串或数字,base进制数,默认为十进制
转换为浮点型float类型:
float(x)
# float()函数将x转换为一个浮点数,x为字符串或数字,没有参数的时默认返回0.0。
bool(x)
# bool() 函数用于把给定参数转换为布尔类型,返回值为True或者False,在没有参数的情况下默认返回 False。
bool() #空置转布尔类型
#返回结果False
bool(0) #整数0转布尔值
#返回结果False
bool(1) #整数1转布尔值
#返回结果True
bool(100) #整数100转布尔值
#返回结果True
●名称第一字符为英文字母或者下划线
●名称第一字符后可以使用英文字母、下划线和数字
●名称不能使用python的关键字或保留字符
●名称区分大小写,单词与单词之间使用下划线连接
a = 1
t_007 = ‘T007’
Answer = True
等号= 是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量。
这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。
静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。例如Java是静态语言
理解变量在计算机内存中的表示也非常重要
a = ‘ABC’
Python解释器干了两件事情:
1. 在内存中创建了一个'ABC' 的字符串;
2. 在内存中创建了一个名为a 的变量,并把它指向'ABC' 。
也可以把一个变量a赋值给另一个变量b,这个操作实际上是把变量b指向变量a所指向的数据,
a = 'ABC'
b = a
a = 'XYZ'
print(b) # ABC
print(a) # XYZ
算术运算符主要是用于数字类型的数据基本运算,Python支持直接进行计算,也就是可以将python shell当计算器来使用。
+ 加 - 两个对象相加 a + b 输出结果 30
- 减 - 得到负数或是一个数减去另一个数 a - b 输出结果 -10
* 乘 - 两个数相乘或是返回一个被重复若干次的字符串 a * b 输出结果 200
/ 除 - x除以y b / a 输出结果 2
% 取模 - 返回除法的余数 b % a 输出结果 0
** 幂 - 返回x的y次幂 a**b 为10的20次方, 输出结果 100000000000000000000
// 取整除 - 返回商的整数部分 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0
a=10
b=20
a+b # 输出30
a-b # 输出-10
a*b # 输出200
b/a # 输出2
b%a # 输出0
a**b # 输出100000000000000000000
9//2 # 输出 4
9.0//2.0 # 输出 4.0
= 简单的赋值运算符 c = a + b 将 a + b 的运算结果赋值为 c
+= 加法赋值运算符 c += a 等效于 c = c + a
-= 减法赋值运算符 c -= a 等效于 c = c - a
*= 乘法赋值运算符 c *= a 等效于 c = c * a
/= 除法赋值运算符 c /= a 等效于 c = c / a
%= 取模赋值运算符 c %= a 等效于 c = c % a
**= 幂赋值运算符 c **= a 等效于 c = c ** a
//= 取整除赋值运算符 c //= a 等效于 c = c // a
Python语言支持逻辑运算符,以下假设变量 a 为 10, b为 20:
and — x and y 布尔"与" 。 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 (a and b) 返回 20。
or — x or y 布尔"或"。如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值。 (a or b) 返回 10
not — not x 布尔"非" 。 如果 x 为 True,返回 False 。如果 x 为 False,它返回True。 not(a and b) 返回 False
a=10
b=20
a and b # 返回20
a or b #返回10
not(a and b) # 返回False
除了以上的一些运算符之外,Python还支持成员运算符,测试实例中包含了一系列的成员,包括字符串,列表或元组。
in — 如果在指定的序列中找到值返回 True,否则返回 False。 x 在 y 序列中 , 如果 x 在 y 序列中返回 True。
not in — 如果在指定的序列中没有找到值返回 True,否则返回 False。 x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。
a=[1,2,3,4,5]
b=4
c = 6
b in a # 输出True
b not in a # 输出False
c in a # 输出False
c not in a # 输出True
身份运算符用于比较两个对象的存储单元
is — is 是判断两个标识符是不是引用自一个对象 x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False
is not — is not 是判断两个标识符是不是引用自不同对象 x is not y , 类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False。
** 指数 (最高优先级)
~ + - 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)
* / % // 乘,除,取模和取整除
+ - 加法减法
>> << 右移,左移运算符
& 位 'AND'
^ | 位运算符
<= < > >= 比较运算符
<> == != 等于运算符
= %= /= //= -= += *= **= 赋值运算符
is、is not 身份运算符
in、not in 成员运算符
not or and 逻辑运算符 (最低优先级)
ASCII编码是1个字节,而Unicode编码通常是2个字节,中、日、韩的三种文字占用了Unicode中0x3000到0x9FFF的部分
字母A 用ASCII编码是十进制的65 ,二进制的01000001 ;
字符0 用ASCII编码是十进制的48 ,二进制的00110000 ,注意字符'0' 和整数0 是不同的;
汉字'中'已经超出了ASCII编码的范围,用Unicode编码是十进制的20013 ,二进制的01001110 00101101 。
把ASCII编码的A 用Unicode编码,只需要在前面补0就可以,因此, A 的Unicode编码是00000000 01000001 。
UTF-8编码(8-bit Unicode Transformation Format,又称万国码)把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节
字符 | ASCII | Unicode | UTF-8 |
---|---|---|---|
A | 01000001 | 00000000 01000001 | 01000001 |
中 | x | 01001110 00101101 | 11100100 10111000 10101101 |
对于单个字符的编码,Python提供了ord() 函数获取字符的整数表示, chr() 函数把编码转换为对应的字符:
x1=ord('A') #x=65
x2=ord('中') #x=20013
x3=chr(66) #x='B'
x4=chr(25991) #x='文'
print("ord('A')= ", x1)
纯英文的str 可以用ASCII 编码为bytes ,内容是一样的,含有中文的str 可以用UTF-8 编码为bytes 。要计算str 包含多少个字符,可以用len() 函数
x=len('ABC') # 输出3
x=len('中文') # 输出2
len() 函数计算的是str 的字符数,如果换成bytes , len() 函数就计算字节数。
由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码,如果.py 文件本身使用UTF-8编码,并且也申明了# -- coding: utf-8 -- ,打开命令提示符测试就可以正常显示中文
字符串的连接是指将多个字符串连接在一起组成一个新的字符串。例如:
sample_str2 = 'Jack', 'is', 'a', 'Python', 'fan'
sample_str2
# 输出 ('Jack', 'is', 'a', 'Python', 'fan')
当字符串之间没有任何连接符时,这些字符串会直接连接在一起,组成新的字符串。
sample_str3 = 'Jack''is''a''Python''fan'
sample_str3
# 输出JackisaPythonfan
字符串之间用’+’号连接时,也会出现同样的效果,这些字符串将连接在一起,组成一个新的字符串。
sample_str4 = 'Jack'+ 'is'+ 'a'+ 'Python'+ 'fan'
sample_str4
# 输出'JackisaPythonfan'
用字符串与正整数进行乘法运算时,相当于创建对应次数的字符串,最后组成一个新的字符串。
sample_str5 = 'Jack'*3 #重复创建相应的字符串
print(sample_str5)
# 输出 JackJackJack
注意:字符串直接以空格隔开的时候,该字符串会组成元组类型。
字符串是字符的有序集合,因此用in操作来判断指定的字符是否存在包含关系。如:
sample_str7 = 'Python'
print('a' in sample_str7) #字符串中不存在包含关系
print('Py' in sample_str7) #字符串中存在包含关系
# 运行结果如下:False True
在Python中,采用的格式化方式和C语言是一致的,用% 实现:
s1='Hello, %s' % 'world'
s2='Hi, %s, you have $%d.' % ('Michael', 1000000)
print(s1) # Hello, world
print(s2) # Hi, Michael, you have $1000000.
% 运算符就是用来格式化字符串的。在字符串内部, %s 表示用字符串替换, %d 表示用整数替换,有几个%? 占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%? ,括号可以省略。
常见的占位符有:
占位符 | 替换内容 |
---|---|
%d | 整数 |
%f | 浮点数 |
%s | 字符串 |
%x | 十六进制整数 |
其中,格式化整数和浮点数还可以指定是否补0和整数与小数的位数:
x='Age: %s. Gender: %s' % (25, True)
print(x) #输出 Age: 25. Gender: True
print('%2d-%02d' % (3, 1)) # 3-01
print('%.2f' % 3.1415926) #3.14
如果你不太确定应该用什么, %s 永远起作用,它会把任何数据类型转换为字符串
x='growth rate: %d %%' % 7
# 字符串里面的% 是一个普通字符,这个时候就需要转义,用%% 来表示一个%
print(x) # growth rate: 7 %