一、变量
1、Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。(和java不同)
2、在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。
3、等号(=)用来给变量赋值。
4、多个变量赋值:
#方法一
a = b = c = 1
#方法二
a, b, c = 1, 2, "runoob"
二、标准的6种数据类型

三、Number
Python3 支持 int、float、bool、complex(复数)。
在Python 3里,只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。
3.1、 type() 函数
查询变量所指的对象类型
a,b,c,d = 1,2.2,True,1+3j
print('''type(a),type(b),type(c),type(d)''')
#输出结果
<class 'int'> <class 'float'> <class 'bool'> <class 'complex'>3.2、isinstance(变量,数据类型)
判断是否是对应的数据类型
numberType = 1
print(isinstance(numberType,int))
numberType2 = 2.2
print(isinstance(numberType2,float))
numberType3 = True
print(isinstance(numberType3,bool))
numberType4 = 1+1j
print(isinstance(numberType4,complex))
print(isinstance(numberType4,int))#不是对应的数据类型
#输出结果
True
True
True
True
False#不是对应的数据类型判断结果是False3.3、isinstance() 和 type() 的区别
- type()不会认为子类是一种父类类型。
- isinstance()会认为子类是一种父类类型。
#如果B继承了A
class A:
pass
class B(A):
pass
isinstance(A(), A)
True
type(A()) == A
True
isinstance(B(), A)
True #isinstance 认为子类是一种父类类型
type(B()) == A
False #type 不认为子类是一种父类类型3.4、issubclass(B,A)
判断B是否是A的子类。
Python3 中,bool 是 int 的子类,True 和 False 可以和数字相加, True==1、False==0 会返回 True,但可以通过 is 来判断类型。
Python2 中是没有布尔型的,它用数字 0 表示 False,用 1 表示 True。

3.5、del语句
当你指定一个值时,Number 对象就会被创建:
var_a=1
var_b=2.2不需要这些对象时,可以用del语句删除一些对象引用
语法:del var_a,var_b...
3.6、数值运算
>>> 5 + 4 # 加法
9
>>> 4.3 - 2 # 减法
2.3
>>> 3 * 7 # 乘法
21
>>> 2 / 4 # 除法,得到一个浮点数
0.5
>>> 2 // 4 # 除法,得到一个整数
0
>>> 17 % 3 # 取余
2
>>> 2 ** 5 # 乘方
32四、String
1、字符编码
字符串也是一种数据类型,但是,字符串比较特殊的是有一个编码问题。

在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。
(因为我经常混乱所以提醒一下自己:内存和硬盘不是同一个东西)
在Python2中,普通字符串是以8位ASCII码进行存储的,而Unicode字符串则存储为16位unicode字符串,这样能够表示更多的字符集。使用的语法是在字符串前面加上前缀 u。
在Python3中,所有的字符串都是Unicode字符串。
2、String的特点
- Python 中单引号 ' 和双引号 " 使用完全相同。
- 使用三引号(''' 或 """)可以指定一个多行字符串。
- 转义符 \。反斜杠\还可以作为续行符
- 反斜杠可以用来转义,使用 r 可以让反斜杠不发生转义。 如 r"this is a line with \n" 则 \n 会显示,并不是换行。
- 按字面意义级联字符串,如 "this " "is " "string" 会被自动转换为 this is string。
- 字符串可以用 + 运算符连接在一起,用 * 运算符重复,与*结合的数字为复制的次数。
- Python 中的字符串有两种索引方式,从左往右以 0 开始,从右往左以 -1 开始。
- Python 中的字符串不能改变。如果向一个索引位置赋值,比如word[0] = 'm'会导致错误。
- Python 没有单独的字符类型,一个字符就是长度为 1 的字符串。
- 字符串的截取的语法格式如下:变量[头下标:尾下标:步长]
3、访问字符串中的值
Python 不支持单字符类型,单字符在 Python 中也是作为一个字符串使用。
Python 访问子字符串,可以使用方括号 [] 来截取字符串,字符串的截取的语法格式如下:变量[头下标:尾下标]
索引值以 0 为开始值,-1 为从末尾的开始位置。


我对上图的理解:
3.1、索引
#方式一:从前往后[0]开始递增
>>>str[1]
'R'
#方式二:从后往前[-1]开始递减
>>>str[-2]
'b'3.2、截取
#方式一:从前往后[0:]递增的方式截取
>>>str[1:]
'unoob'
>>>str[1:4]
'uno'
#方式二:从后往前[:-1]递减
>>>str[:-2]
'Runo'
>>>str[:4]
'Runo'
#注意截取规则:左闭右开,例:str[:4]不包含第4个字符4、python字符串运算符

5、python转义字符
在需要在字符中使用特殊字符时,python 用反斜杠 \ 转义字符。如下表:

6、python字符串格式化(3种方法)
6.1、格式化字符串方法1:%运算符
基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。
在字符串内部,%s表示用字符串替换,%d表示用整数替换,有几个%?占位符,后面就跟几个变量或者值,顺序要对应好。如果只有一个%?,括号可以省略。
如果你不太确定应该用什么,%s永远起作用,它会把任何数据类型转换为字符串
#例1
print ("我叫 %s 今年 %d 岁!" % ('小明', 10))
#输出结果
我叫 小明 今年 10 岁!
#例2
'Hi, %s, you have $%d.' % ('Michael', 1000000)
#输出结果
'Hi, Michael, you have $1000000.'
#例3
#格式化整数和浮点数还可以指定是否补0和整数与小数的位数:
print('%2d-%02d' % (3, 1))
print('%.2f' % 3.1415926)
#输出结果
3-01
3.14
#例4
#如果你不太确定应该用什么,%s永远起作用,它会把任何数据类型转换为字符串:
'Age: %s. Gender: %s' % (25, True)
#输出结果
'Age: 25. Gender: True'
#例5
#字符串里面的%是一个普通字符,这个时候就需要转义,用%%来表示一个%:
'growth rate: %d %%' % 7
#输出结果
'growth rate: 7 %'python格式化字符串的占位符:

格式化操作符辅助指令:

6.2、格式化字符串方法2:format()
字符串的format()方法,它会用传入的参数依次替换字符串内的占位符{0}、{1}……,不过这种方式写起来比%要麻烦得多:
>>> 'Hello, {0}, 成绩提升了 {1:.1f}%'.format('小明', 17.125)
'Hello, 小明, 成绩提升了 17.1%'6.3、格式化字符串方法3:f-string
f-string 格式化字符串以 f 开头,后面跟着字符串,字符串中的表达式用大括号 {} 包起来,它会将变量或表达式计算后的值替换进去
用了这种方式明显更简单了,不用再去判断使用 %s,还是 %d。
#例
>>> r = 2.5
>>> s = 3.14 * r ** 2
>>> print(f'The area of a circle with radius {r} is {s:.2f}')
The area of a circle with radius 2.5 is 19.62
#上述代码中,{r}被变量r的值替换,{s:.2f}被变量s的值替换,并且:后面的.2f指定了格式化参数(即保留两位小数),因此,{s:.2f}的替换结果是19.62。
#例
#在 Python 3.8 的版本中可以使用 = 符号来拼接运算表达式与结果:
>>> x = 1
>>> print(f'{x+1}') # Python 3.6
2
>>> x = 1
>>> print(f'{x+1=}') # Python 3.8
x+1=2 # 打印出来的是表达式和结果
7、python字符串三引号
python三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符
para_str = """这是一个多行字符串的实例
多行字符串可以使用制表符
TAB ( \t )。
也可以使用换行符 [ \n ]。
"""
print (para_str)
#输出结果
这是一个多行字符串的实例
多行字符串可以使用制表符
TAB ( )。
也可以使用换行符 [
]。
#三引号让程序员从引号和特殊字符串的泥潭里面解脱出来,自始至终保持一小块字符串的格式是所谓的WYSIWYG(所见即所得)格式的。
典型的用例是,当你需要一块HTML或者SQL时:
errHTML = '''
<HTML><HEAD><TITLE>
Friends CGI Demo</TITLE></HEAD>
<BODY><H3>ERROR</H3>
<B>%s</B><P>
<FORM><INPUT TYPE=button VALUE=Back
ONCLICK="window.history.back()"></FORM>
</BODY></HTML>
'''
cursor.execute('''
CREATE TABLE users (
login VARCHAR(8),
uid INTEGER,
prid INTEGER)
''')9、python字符串的内建函数

总结
1、python有6种标准数据类型
2、number、string
















