Python基础知识-总结(一):基本概念

it2025-05-31  12

001.Python介绍_特性_版本问题_应用范围

002.Python下载_安装_配置_第一行Python程序

003.开发环境介绍_交互模式的使用_IDLE介绍和使用

IDLEPyCharmwingIDEEclipseIPythonAnaconda(Spyder)python(x,y)Jupyter IPython notebook

004.IDLE开发环境的使用_建立Python源文件

005.Python程序格式_缩进_行注释_段注释

006.简单错误如何处理_守破离学习法_程序员修炼手册

007.海龟绘图_坐标系问题_画笔各种方法

1、使用Anaconda3520的python3.6解释器 2、解决Pycharm使用turtle时窗口出现闪退的问题,在代码结尾加上:turtle.done()

图形化程序设计:海龟画图
>>> import turtle #导入turtle 模块 >>> turtle.showturtle() #显示箭头 >>> turtle.write("高淇") #写字符串 >>> turtle.forward(300) #前进300 像素 >>> turtle.color("red") #画笔颜色改为red >>> turtle.left(90) #箭头左转90 度 >>> turtle.forward(300) >>> turtle.goto(0,50) #去坐标(0,50) >>> turtle.goto(0,0) >>> turtle.penup() #抬笔。这样,路径就不会画出来 >>> turtle.goto(0,300) >>> turtle.pendown() #下笔。这样,路径就会画出来 >>> turtle.circle(100) #画圆

008.海龟绘图_画出奥运五环图

图形化程序设计:绘制奥运五环标记
import turtle turtle.width(10) turtle.color("blue") turtle.circle(50) turtle.color("black") turtle.penup() turtle.goto(120,0) turtle.pendown() turtle.circle(50) turtle.color("red") turtle.penup() turtle.goto(240,0) turtle.pendown() turtle.circle(50) turtle.color("yellow") turtle.penup() turtle.goto(60,-50) turtle.pendown() turtle.circle(50) turtle.color("green") turtle.penup() turtle.goto(180,-50) turtle.pendown() turtle.circle(50) turtle.done()

009.程序的构成

Python 程序由模块组成。一个模块对应python 源文件,一般后缀名是:.py。模块由语句组成。运行Python 程序时,按照模块中语句的顺序依次执行。语句是Python 程序的构造单元,用于创建对象、变量赋值、调用函数、控制语句等。

010.对象的基本组成和内存示意图

011.引用的本质_栈内存和堆内存_内存示意图

引用

在Python 中,变量也成为:对象的引用。因为,变量存储的就是对象的地址。

变量通过地址引用了“对象”。 变量位于:栈内存(压栈出栈等细节,后续再介绍)。对象位于:堆内存。 Python 是动态类型语言:变量不需要显式声明类型。根据变量引用的对象,Python 解释器自动确定数据类型。Python 是强类型语言:每个对象都有数据类型,只支持该类型支持的操作。

012.标识符_帮助系统的简单使用_命名规则

标识符:用于变量、函数、类、模块等的名称。标识符有如下特定的规则:
区分大小写。如:sxt 和SXT 是不同的第一个字符必须是字母、下划线。其后的字符是:字母、数字、下划线不能使用关键字。比如:if、or、while 等。以双下划线开头和结尾的名称通常有特殊含义,尽量避免这种写法。比如:__init__是类的构造函数。

013.变量的声明_初始化_删除变量_垃圾回收机制

1. 变量的声明和赋值用于将一个变量绑定到一个对象上,格式如下:

变量名= 表达式

最简单的表达式就是字面量。比如:

a = 123

运行过程中,解释器先运行右边的表达式,生成一个代表表达式运算结果的对象;然后,将这个对象地址赋值给左边的变量。 变量my_name 在被使用前未做赋值,因此报错:’my_name’is not defined。

2. 删除变量和垃圾回收机制

可以通过del 语句删除不在使用的变量。 如果对象没有变量引用,就会被垃圾回收器回收,清空内存空间。

014.链式赋值_系列解包赋值_常量

链式赋值

链式赋值用于同一个对象赋值给多个变量。 x=y=123 相当于: x=123; y=123

系列解包赋值

系列数据赋值给对应相同个数的变量(个数必须保持一致) a,b,c=4,5,6 相当于: a=4;b=5;c=6

变量值的互换:

常量

Python 不支持常量,即没有语法规则限制改变一个常量的值。我们只能约定常量的命名规则,以及在程序的逻辑上不对常量的值作出修改。

>>> MAX_SPEED = 120 >>> print(MAX_SPEED) 120 >>> MAX_SPEED = 140 #实际是可以改的。只能逻辑上不做修改。 >>> print(MAX_SPEED) 140

015.内置数据类型_基本算术运算符

Python3 中有六个“标准数据类型”:

Number(数字):包括 int、float、bool、complex(复数)String(字符串)List(列表)Tuple(元组)Set(集合)Dictionary(字典) 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。

内置“基本数据类型”和运算符

每个对象都有类型,python 中内置的“基本数据类型”:

整型(int) 整数,2345,10,50浮点型(float) 小数,3.14 或者科学计数法314e-2布尔型(bool) 表示真假,仅包含:True、False字符串型(string) 由字符组成的序列。“abc”,”sxt”,“IT学堂”

数字和基本运算符

Python 支持整数(如:50,520)和浮点数(如:3.14,10.0, 1.23e2),我们可以对数字做如下运算。

divmod()函数:同时得到商和余数:

>>> divmod(13,3) (4, 1)

divmod()是一个函数,他返回的是一个元组。

016.整数_不同进制_其他类型转换成整数

Python 中,除10 进制,还有其他三种进制:

0b 或0B,二进制0 10o 或0O,八进制0 1 2 3 4 5 6 70x 或0X,十六进制0 1 2 3 4 5 6 7 8 9 a b c d e f

【操作】测试不同进制

>>> 12 12 >>> 0b101 5 >>> 0o19 SyntaxError: invalid syntax >>> 0o10 8 >>> 0xff 255 >>> 0xf 15 >>> 0x10 16

使用int()实现类型转换:

浮点数直接舍去小数部分。如:int(9.9)结果是:9布尔值True 转为1,False 转为0。如:int(True)结果是1字符串符合整数格式(浮点数格式不行)则直接转成对应整数,否则报错。 >>> int("456") 456 >>> int("456abc") Traceback (most recent call last): File "<pyshell#41>", line 1, in <module> int("456abc") ValueError: invalid literal for int() with base 10: '456abc' >>> int("456.78") Traceback (most recent call last): File "<pyshell#42>", line 1, in <module> int("456.78") ValueError: invalid literal for int() with base 10: '456.78'

自动转型:

整数和浮点数混合运算时,表达式结果自动转型成浮点数。比如:2+8.0 的结果是10.0

整数可以有多大?

Python2 中,int 是32 位,可以存储从-2147483648 到2147483647 的整数(约±21 亿)。Long 类型是64 位,可以存储:-263–263-1 之间的数值。 Python3 中,int 可以存储任意大小的整数,long 被取消。我们甚至可以存储下面的值:

>>> googol = 10**100 >>> googol 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

Googol 也是Google 最初的名字,这也是Google 最初的含义。 Python3 中可以做超大数的计算,而不会造成“整数溢出”,这也是Python 特别适合科学运算的特点。

017.浮点数_自动转换_强制转换_增强赋值运算符

浮点数

浮点数,称为float。浮点数用a×b10 形式的科学计数法表示。比如:3.14,表示成:314E-2 或者314e-2。 这些数字在内存中也是按照科学计数法存储。

类型转换和四舍五入

类似于int(),我们也可以使用float()将其他类型转化成浮点数,产生一个新的对象。整数和浮点数混合运算时,表达式结果自动转型成浮点数。比如:2+8.0 的结果是10.0round(value)可以返回四舍五入的值 注:但不会改变原有值,而是产生新的值

增强型赋值运算符

运算符+、-、*,/、//、**和%和赋值符=结合可以构成“增强型赋值运算符”。 a = a + 1 等价于: a +=1

注意:“+=”中间不能加空格!

018.时间表示_unix时间点_毫秒和微秒_time模块

时间的表示

计算机中时间的表示是从“1970 年1 月1 日00:00:00”开始,以毫秒(1/1000 秒)进行计算。我们也把1970 年这个时刻成为“unix 时间点”。 这样,我们就把时间全部用数字来表示了。

python 中可以通过time.time() 获得当前时刻,返回的值是以秒为单位,带微秒(1/1000 毫秒)精度的浮点值。例如:1530167364.8566。

>>> import time >>> time.time() >>> 1530168754.4904466 >>> b = int(time.time()) >>> b 1530168754 >>> totalMinutes = b/60 >>> totalMinutes 25502812.566666666 >>> totalMinutes = b//60 >>> totalMinutes 25502812 >>> totalHours = totalMinutes//60 >>> totalHours 425046 >>> totalDays = totalHours//24 >>> totalDays 17710 >>> totalYears = totalDays//365 >>> totalYears 48

019.多点坐标_绘出折线图_计算两点距离

定义多点坐标_绘出折线_并计算起始点和终点距离

import turtle import math #定义多个点的坐标 x1,y1 = 100,100 x2,y2 = 100,-100 x3,y3 = -100,-100 x4,y4 = -100,100 #绘制折线 turtle.penup() turtle.goto(x1,y1) turtle.pendown() turtle.goto(x2,y2) turtle.goto(x3,y3) turtle.goto(x4,y4) #计算起始点和终点的距离 distance = math.sqrt((x1-x4)**2 + (y1-y4)**2) turtle.write(distance) turtle.done()

020.运算符_布尔值_比较运算符_逻辑运算符_短路问题

布尔值

Python2 中没有布尔值,直接用数字0 表示False,用数字1 表示True。 Python3 中,把True 和False 定义成了关键字,但他们的本质还是1 和0,甚至可以和数字相加。

>>> a = True >>> b = 3 >>> a+b 4

比较运算符

所有比较运算符返回1 表示真,返回0 表示假。这分别与特殊的变量True 和False 等价。 以下假设变量a 为15,变量b 为30:

逻辑运算符

021.同一运算符_整数缓存问题

同一运算符

同一运算符用于比较两个对象的存储单元,实际比较的是对象的地址。

is 与== 区别:

is 用于判断两个变量引用对象是否为同一个,既比较对象的地址。 == 用于判断引用变量引用对象的值是否相等,默认调用对象的__eq__()方法。

>>> a = 100 >>> b = 100 >>> a == b True >>> a is b True >>> id(a) 1685026976 >>> id(b) 1685026976 >>> a = 1000 >>> b = 1000 >>> a == b True >>> a is b False >>> id(a) 2294176357168 >>> id(b) 2294176358352 >>> a = 100 >>> b = 100 >>> a is b True >>> a = 10000 >>> b = 10000 >>> a is b False >>> id(a) 2294176357296 >>> id(b) 2294176358352 >>> a = 10000 >>> b = a >>> a is b True

整数缓存问题

Python 仅仅对比较小的整数对象进行缓存(范围为[-5, 256])缓存起来,而并非是所有整数对象。 需要注意的是,这仅仅是在命令行中执行,而在Pycharm 或者保存为文件执行,结果是不一样的,这是因为解释器做了一部分优化(范围是[-5,任意正整数])。 总结 1、is 比较两个对象的id 值是否相等,是否指向同一个内存地址; 2、== 比较的是两个对象的内容是否相等,值是否相等; 3、小整数对象[-5,256]在全局解释器范围内被放入缓存供重复使用; 4、is 运算符比== 效率高,在变量和None 进行比较时,应该使用is;

同一运算符测试

>>> a = 1000 >>> b = 1000 >>> a == b True >>> a is b False >>> id(a) 46764560 >>> id(b) 46765216 >>> c = 10 >>> d = 10 >>> c is d True >>> id(c) 1388831648 >>> id(d) 1388831648

在Python中一切都是对象。Python中对象包含的三个基本要素,分别是:

id(身份标识)type(数据类型)value(值)

对象之间比较是否相等可以用 == ,也可以用 is 。

is 和 == 都是对对象进行比较判断作用的,但对对象比较判断的内容并不相同。is 比较的是两个对象的id值是否相等,也就是比较两个对象是否为同一个实例对象,是否指向同一个内存地址。 == 比较的是两个对象的内容是否相等,默认会调用对象的 eq 方法。 == 是python标准操作符中的比较操作符,用来比较判断两个对象的值是否相等。 先来看一个例子 >>> a = [1, 2, 3] >>> b = a >>> b is a True >>> b == a True >>> b = a[:] >>> b is a False >>> b == a True

is 也被叫做同一性运算符,也就是id是否相同。 看下面代码, a和b变量的id不同, 所以 b == a 是True, b is a 是False. 再来看一下他们的id:

>>> id(a) 4364243328 >>> >>> id(b) 4364202696

哪些情况下 is 和 == 结果是完全相同的?

>>> a = 256 >>> b = 256 >>> a is b True >>> a == b True >>> a = 1000 >>> b = 10**3 >>> a == b True >>> a is b False

所以数字类型不完全相同。 那为什么256时相同, 而1000时不同呢? 因为出于对性能的考虑,Python内部做了很多的优化工作,对于整数对象,Python把一些频繁使用的整数对象缓存起来,保存到一个叫 small_ints 的链表中,在Python的整个生命周期内,任何需要引用这些整数对象的地方,都不再重新创建新的对象,而是直接引用缓存中的对象。 Python把这些可能频繁使用的整数对象规定在范围 [-5, 256] 之间的小对象放在 small_ints 中,但凡是需要用些小整数时,就从这里面取,不再去临时创建新的对象。

>>> c = 'miracle.young' >>> d = 'miracle.young' >>> c is d False >>> c == d True >>> c = 'miracleyoung' >>> d = 'miracleyoung' >>> c is c True >>> c == d True

所以字符串类型不完全相同,这个和解释器实现有关。

>>> a = (1,2,3) # a和b为元组类型 >>> b = (1,2,3) >>> a is b False >>> a = [1,2,3] # a和b为list类型 >>> b = [1,2,3] >>> a is b False >>> a = {'miracle':100,'young':1} # a和b为dict类型 >>> b = {'miracle':100,'young':1} >>> a is b False >>> a = set([1,2,3]) # a和b为set类型 >>> b = set([1,2,3]) >>> a is b False

所以当变量是数字、字符串、元组,列表,字典时,is 和 == 都不相同, 不能互换使用!当比较值时,要使用 ==,比较是否是同一个内存地址时应该使用is。 当然,开发中比较值的情况比较多。

022.字符串_unicode字符集_三种创建字符串方式_len()

字符串基本特点

字符串的本质是:字符序列。Python 的字符串是不可变的,我们无法对原字符串做任何修改。但,可以将字符串的一部分复制到新创建的字符串,达到“看起来修改”的效果。 Python 不支持单字符类型,单字符也是作为一个字符串使用的。

字符串的编码

Python3 直接支持Unicode,可以表示世界上任何书面语言的字符。Python3 的字符默认就是16 位Unicode 编码,ASCII 码是Unicode 编码的子集。 使用内置函数ord()可以把字符转换成对应的Unicode 码; 使用内置函数chr()可以把十进制数字转换成对应的字符。

>>> ord('A') 65 >>> ord("魏") 39759 >>> chr(66) 'B'

引号创建字符串

我们可以通过单引号或双引号创建字符串。例如:a=’abc’; b=”sxt” 使用两种引号的好处是可以创建本身就包含引号的字符串,而不用使用转义字符。例如:

>>> a = "I'm a teacher!" >>> print(a) I'm a teacher! >>> b = 'my_name is "TOM"' >>> print(b) my_name is "TOM"

连续三个单引号或三个双引号,可以帮助我们创建多行字符串。例如:

>>> resume = ''' name="gaoqi" company="sxt" age=18 lover="Tom"''' >>> print(resume) name="gaoqi" company="sxt" age=18 lover="Tom"

空字符串和len()函数 Python 允许空字符串的存在,不包含任何字符且长度为0。例如:

>>> c = '' >>> len(c) 0

len()用于计算字符串含有多少字符。例如:

>>> d = 'abc魏先生' >>> len(d) 6

023.字符串_转义字符_字符串拼接_字符串复制_input()获得键盘输入

转义字符

我们可以使用“+特殊字符”,实现某些难以用字符表示的效果。比如:换行等。常见的 转义字符有这些: 测试转义字符的使用

>>> a = 'I\nlove\nU' >>> a 'I\nlove\nU' >>> print(a) I love U >>> print('aaabb\ cccddd') aaabbcccddd

字符串拼接

可以使用+将多个字符串拼接起来。例如:’aa’+ ’bb’ ==>’aabb’。 (1) 如果+两边都是字符串,则拼接。 (2) 如果+两边都是数字,则加法运算。 (3) 如果+两边类型不同,则抛出异常。可以将多个字面字符串直接放到一起实现拼接。例如:’aa’’bb’==>’aabb’ 【操作】字符串拼接操作 >>> a = 'sxt'+'gaoqi' >>> a 'sxtgaoqi' >>> b = 'sxt''gaoqi' >>> b 'sxtgaoqi'

字符串复制

使用*可以实现字符串复制。 【操作】字符串复制操作

>>> a = 'Sxt'*3 >>> a 'SxtSxtSxt'

不换行打印

我们前面调用print 时,会自动打印一个换行符。有时,我们不想换行,不想自动添加换行 符。我们可以自己通过参数end = “任意字符串”。实现末尾添加任何内容: 建立源文件mypy_06.py:

print("sxt",end=' ') print("sxt",end='##') print("sxt")

运行结果: sxt sxt##sxt

从控制台读取字符串

我们可以使用input()从控制台读取键盘输入的内容。

>>> myname = input("请输入名字:") 请输入名字:魏先生 >>> myname '魏先生'

024.字符串_str()_[]提取字符_replace()替换_内存分析

str()实现数字转型字符串

str()可以帮助我们将其他数据类型转换为字符串。例如: str(5.20) > ‘5.20’ str(3.14e2)>’314.0’ str(True) ==> ‘True’ 当我们调用print()函数时,解释器自动调用了str()将非字符串的对象转成了字符串。我们在面向对象章节中详细讲解这部分内容。

使用[]提取字符

字符串的本质就是字符序列,我们可以通过在字符串后面添加[],在[]里面指定偏移量,可以提取该位置的单个字符。 正向搜索: 最左侧第一个字符,偏移量是0,第二个偏移量是1,以此类推。直到len(str)-1为止。 反向搜索: 最右侧第一个字符,偏移量是-1,倒数第二个偏移量是-2,以此类推,直到-len(str)为止。 【操作】使用[]提取字符串中的字符

>>> a = 'abcdefghijklmnopqrstuvwxyz' >>> a 'abcdefghijklmnopqrstuvwxyz' >>> a[0] 'a' >>> a[3] 'd' >>> a[26-1] 'z' >>> a[-1] 'z' >>> a[-26] 'a' >>> a[-30] Traceback (most recent call last): File "<pyshell#91>", line 1, in <module> a[-30] IndexError: string index out of range

replace()实现字符串替换

字符串是“不可改变”的,我们通过[]可以获取字符串指定位置的字符,但是我们不能改变字符串。我们尝试改变字符串中某个字符,发现报错了:

>>> a = 'abcdefghijklmnopqrstuvwxyz' >>> a 'abcdefghijklmnopqrstuvwxyz' >>> a[3]='高' Traceback (most recent call last): File "<pyshell#94>", line 1, in <module> a[3]='高' TypeError: 'str' object does not support item assignment

字符串不可改变。但是,我们确实有时候需要替换某些字符。这时,只能通过创建新的字符串来实现。

>>> a = 'abcdefghijklmnopqrstuvwxyz' >>> a 'abcdefghijklmnopqrstuvwxyz' >>> a = a.replace('c','高') 'ab 高defghijklmnopqrstuvwxyz'

整个过程中,实际上我们是创建了新的字符串对象,并指向了变量a,而不是修改了以前的字符串。内存图如下:

025.字符串_切片slice操作_逆序

字符串切片slice 操作:截取子字符串

切片slice 操作可以让我们快速的提取子字符串。标准格式为:[起始偏移量start:终止偏移量end:步长step]

典型操作(三个量为正数的情况)如下: 其他操作(三个量为负数)的情况:

>>> a = "abcdefg" >>> a[::] 'abcdefg' >>> a[::-1] 'gfedcba'

切片操作时,起始偏移量和终止偏移量不在[0,字符串长度-1]这个范围,也不会报错。起始偏移量小于0 则会当做0,终止偏移量大于“长度-1”会被当成-1。例如:

>>> "abcdefg"[3:50] 'defg'

我们发现正常输出了结果,没有报错。 【案例】

将”to be or not to be”字符串倒序输出将”sxtsxtsxtsxtsxt”字符串中所有的s 输出 >>> "to be or not to be"[::-1] 'eb ot ton ro eb ot' >>> "sxtsxtsxtsxtsxt"[::3] 'sssss'

026.字符串_split()分割_join()合并_join()效率测试

split()分割和join()合并

split()可以基于指定分隔符将字符串分隔成多个子字符串(存储到列表中)。如果不指定分隔符,则默认使用空白字符(换行符/空格/制表符)。示例代码如下:

>>> a = "to be or not to be" >>> a.split() ['to', 'be', 'or', 'not', 'to', 'be'] >>> a.split('be') ['to ', ' or not to ', '']

join()的作用和split()作用刚好相反,用于将一系列子字符串连接起来。示例代码如下:

>>> a = ['sxt','sxt100','sxt200'] >>> '*'.join(a) 'sxt*sxt100*sxt200'

拼接字符串要点:使用字符串拼接符+,会生成新的字符串对象,因此不推荐使用+来拼接字符串。推荐使用join 函数,因为join 函数在拼接字符串之前会计算所有字符串的长度,然后逐一拷贝,仅新建一次对象。 【操作】测试+拼接符和join(),不同的效率(mypy_07.py)

import time time01 = time.time() # 起始时刻 a = "" for i in range(1000000): a += "sxt" time02 = time.time() # 终止时刻 print("运算时间:" + str(time02 - time01)) # 运算时间:0.5902230739593506 time03 = time.time() # 起始时刻 li = [] for i in range(1000000): li.append("sxt") a = "".join(li) time04 = time.time() # 终止时刻 print("运算时间:" + str(time04 - time03)) # 运算时间:0.1186819076538086

027.字符串_驻留机制_内存分析_字符串同一判断_值相等判断

字符串驻留机制和字符串比较

字符串驻留:仅保存一份相同且不可变字符串的方法,不同的值被存放在字符串驻留池中。 Python 支持字符串驻留机制,对于符合标识符规则的字符串(仅包含下划线(_)、字母和数字)会启用字符串驻留机制驻留机制。

>>> a = "abd_33" >>> b = "abd_33" >>> a is b True >>> c = "dd#" >>> d = "dd#" >>> c is d False >>> str1 = "aa" >>> str2 = "bb" >>> str1+str2 is "aabb" False >>> str1+str2 == "aabb" True

字符串比较和同一性 我们可以直接使用==,!=对字符串进行比较,是否含有相同的字符。 我们使用is / not is,判断两个对象是否同一个对象。比较的是对象的地址,即id(obj1)是否和id(obj2)相等。

成员操作符 in /not in 关键字,判断某个字符(子字符串)是否存在于字符串中。

028.字符串_常用查找方法_去除首位信息_大小写转换_排版

字符串常用方法汇总 常用查找方法 我们以一段文本作为测试: a=’’‘我是高淇,今年18 岁了,我在北京尚学堂科技上班。我的儿子叫高洛希,他6 岁了。我是一个编程教育的普及者,希望影响6000 万学习编程的中国人。我儿子现在也开始学习编程,希望他18 岁的时候可以超过我’’’

去除首尾信息

我们可以通过strip()去除字符串首尾指定信息。通过lstrip()去除字符串左边指定信息,rstrip()去除字符串右边指定信息。 【操作】去除字符串首尾信息

>>> "*s*x*t*".strip("*") 's*x*t' >>> "*s*x*t*".lstrip("*") 's*x*t*' >>> "*s*x*t*".rstrip("*") '*s*x*t' >>> " sxt ".strip() 'sxt'

大小写转换

编程中关于字符串大小写转换的情况,经常遇到。我们将相关方法汇总到这里。为了方便学习,先设定一个测试变量: a = “gaoqi love programming, love SXT”

格式排版

center()、ljust()、rjust()这三个函数用于对字符串实现排版。示例如下:

>>> a="SXT" >>> a.center(10,"*") '***SXT****' >>> a.center(10) ' SXT ' >>> a.ljust(10,"*") 'SXT*******'

其他方法

isalnum() 是否为字母或数字isalpha() 检测字符串是否只由字母组成(含汉字)。isdigit() 检测字符串是否只由数字组成。isspace() 检测是否为空白符isupper() 是否为大写字母islower() 是否为小写字母 >>> "sxt100".isalnum() True >>> "sxt 尚学堂".isalpha() True >>> "234.3".isdigit() False >>> "23423".isdigit() True >>> "aB".isupper() False >>> "A".isupper() True >>> "\t\n".isspace() True

029.字符串_format格式化_数字格式化操作

字符串的格式化

format()基本用法 Python2.6 开始,新增了一种格式化字符串的函数str.format(),它增强了字符串格式化的功能。 基本语法是通过{} 和: 来代替以前的% 。 format 函数可以接受不限个参数,位置可以不按顺序。

>>> a = "名字是:{0},年龄是:{1}" >>> a.format("高淇",18) '名字是:高淇,年龄是:18' >>> a.format("高希希",6) '名字是:高希希,年龄是:6' >>> b = "名字是:{0},年龄是{1}。{0}是个好小伙" >>> b.format("高淇",18) '名字是:高淇,年龄是18。高淇是个好小伙' >>> c = "名字是{name},年龄是{age}" >>> c.format(age=19,name='高淇') '名字是高淇,年龄是19'

我们可以通过{索引}/{参数名},直接映射参数值,实现对字符串的格式化,非常方便。

填充与对齐

填充常跟对齐一起使用 ^、<、>分别是居中、左对齐、右对齐,后面带宽度 :号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充

>>> "{:*>8}".format("245") '*****245' >>> "我是{0},我喜欢数字{1:*^8}".format("高淇","666") '我是高淇,我喜欢数字**666***'

数字格式化

浮点数通过f,整数通过d 进行需要的格式化。案例如下:

>>> a = "我是{0},我的存款有{1:.2f}" >>> a.format("高淇",3888.234342) '我是高淇,我的存款有3888.23'

其他格式,供大家参考:

030.可变字符串_io.StringIO

在Python 中,字符串属于不可变对象,不支持原地修改,如果需要修改其中的值,智能创建新的字符串对象。但是,经常我们确实需要原地修改字符串,可以使用io.StringIO对象或array 模块。

>>> import io >>> s = "hello, sxt" >>> sio = io.StringIO(s) >>> sio <_io.StringIO object at 0x02F462B0> >>> sio.getvalue() 'hello, sxt' >>> sio.seek(7) 7 >>> sio.write("g") 1 >>> sio.getvalue() 'hello, gxt'

031.运算符总结_位操作符_优先级问题

基本运算符

比较运算符可以连用,并且含义和我们日常使用完全一致。 >>> a = 4 >>> 3<a<10 #关系运算符可以连用 True 位操作 >>> a = 0b11001 >>> b = 0b01000 >>> c = a|b >>> bin(c) #bin()可以将数字转成二进制表示 '0b11001' >>> bin(c&b) '0b1000' >>> bin(c^b) '0b10001' >>> a = 3 >>> a<<2 #左移1 位相当于乘以2.左移2 位,相当于乘以4 12 >>> a = 8 >>> a>>1 #右移1 位相当于除以2.

加法操作 (1) 数字相加3+2 > 5 (2) 字符串拼接“3”+“2”> “32” (3) 列表、元组等合并[10,20,30]+[5,10,100] ==>[10,20,30,5,10,100]

乘法操作 (1) 数字相乘3*2 ==> 6 (2) 字符串复制“sxt”*3 ==> ”sxtsxtsxt” (3) 列表、元组等复制[10,20,30]*3 ==> [10,20,30,10,20,30,10,20,30]

复合赋值运算符

复合赋值可以让程序更加精炼,提高效率。 注:与C 和JAVA 不一样,Python 不支持自增(++)和自减(–)

运算符优先级问题

如下优先级,从高到低。 实际使用中,记住如下简单的规则即可,复杂的表达式一定要使用小括号组织。

乘除优先加减位运算和算术运算>比较运算符>赋值运算符>逻辑运算符
最新回复(0)