python的基本数据类型:Number、String的学习笔记
一、变量
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#不是对应的数据类型判断结果是False
3.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 = '''Friends CGI Demo ERROR
%s''' cursor.execute(''' CREATE TABLE users ( login VARCHAR(8), uid INTEGER, prid INTEGER) ''')
9、python字符串的内建函数
总结
1、python有6种标准数据类型
2、number、string