python 01基础知识补充

对象

python中一切皆对象,每个对象由:标识符、类型和值构成。
标识符 identity:对应对象在计算机内存中的地址
类型 type:对象存的"数据"的类型,类型限制对象的取值范围及可执行的操作
值value:表示对象所存储的数据的信息
如a = 3 ,相当于把3的id赋值给了变量a,然后a通过地址找到内存块
在这里插入图片描述
变量也成为对象的引用,因变量存储的是对象的地址,变量通过地址应用对象。
变量位于:栈内存
对象位于:堆内存

删除变量:可通过del语句删除不再使用的变量,此时如果对象没有被变量引用,就会被垃圾回收器回收

标识符

用于给变量、函数、类和模块等命名
1、区分大小写,sxt和SXT是不同的
2、第一字符必须是字母、下划线,其后的字符是字母、下划线、数字
3、不能使用关键词
4、以下划线开头和结尾的名称有特殊含义,尽量避免这种写法

约定俗称的命名规则:
模块和包名:全小写字母,多个单词之间用下划线隔开
函数名:全小写字母,多个单词之间用下划线隔开
类名:首字母大写,多个单词时,每个单词第一个字母大写,其余部分消息,如MyPhone
常量名:全大写,多个单词用下划线隔开,如MAX_SPEED

内置数据类型

1、数字:
整数:314
2、浮点型
小数:3.14
3、布尔型
True、False
4、字符串型
由字符组成的序列,如“abc”

运算符

基础运算符:

+加法
-减法
*乘法
/:浮点数除法 8/4 = 2.0
//:整除除法 8//3 = 2
%:取模 7%3 = 1
:幂 23 = 8
divmod()同时获得商和余数:
divmod(13,3) = (4,1)

增强型赋值运算符

在这里插入图片描述

比较运算符

在这里插入图片描述

逻辑运算符

在这里插入图片描述

同一运算符

同一运算符用于比较两个对象的地址是否相同
在这里插入图片描述is 与 == 区别: is 用于判断两个变量引用对象是否为同一个,既比较对象的地址。 == 用于判断引用变量引用对象的值是否相等,默认调用对象的 eq()方法。因此is运算符比==效率高,在变量和None进行比较时,应该使用is

整数

位运算
0b0B,二进制 0 1 
0o 或 0O,八进制 0 1 2 3 4 5 6 7 
0x 或 0X,十六进制 0 1 2 3 4 5 6 7 8 9 a b c d e f
0b101 #5
0o10 #8
0xf #15
0x10 #16
类型强转:int()
  1. 浮点数直接舍去小数部分。如:int(9.9)结果是:9
  2. 布尔值 True 转为 1,False 转为 0。 如:int(True)结果是 1
  3. 字符串符合整数格式(浮点数格式不行)则直接转成对应整数,否则报错
  4. 整数和浮点数混合运算时,表达式结果自动转型成浮点数。比如:2+8.0 的结果是 10.0
整数缓存问题

Python 仅仅对比较小的整数对象进行缓存(范围为[-5, 256])缓存起来,而并非是所有整数对象。需要注意的是,这仅仅是在命令行中执行,而在 Pycharm 或者保存为文件执行,结果是不一样 的,这是因为解释器做了一部分优化(范围是[-5,任意正整数])。

>>>a = 257
>>>b =257
>>>a is b 
False
>>>a = 256
>>>b =256
>>>a is b 
True

浮点数

类型转换
  1. float()将其他类型转化成浮点数
  2. round(value)可以返回四舍五入的值,注:不会改变原有值,而是产生新的值

布尔值

把 True 和 False 定义成了关键字,但他们的本质还是 1 和 0,甚至可以和数字相加。

字符串型

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

转义字符

在这里插入图片描述

字符串复制
>>>a = "six"*3
>>>a 
sixsixsix
不换行打印
print("sxt",end=' ') 
print("sxt",end='##') 
print("sxt")

结果:sxt sxt##sxt

字符串驻留机制

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

>>>a = "abd_33" 
>>>b = "abd_33"
>>>a is b 
True
>>>c = "dd#" 
>>>d = "dd#" 
>>>c is d 
False
常用方法
str()强转为字符串
replace()实现字符串替换,因字符无法改变,因此只能通过创建新的字符来实现
split()分割
join()合并 #使用+也可拼接字符串,但是每次拼接会形成新的字符串对象,推荐使用join,因join只创建一次对象,效率高
a.startswith('我是高淇') #以指定字符串开头,结果为true
a.endswith('过我') #以指定字符串结尾,结果为True
a.find('高') 第一次出现指定字符串的位置 2 a.rfind('高') 最后一次出现指定字符串的位置 29 a.count("编程") 指定字符串出现了几次 3 a.isalnum() 所有字符全是字母或数字 False
strip()去除字符串首尾指定信息
"*s*x*t*".strip("*")   s*x*t
lstrip()去除字符串左边指定信息 
rstrip()去除字符串右边指定信息 
a.capitalize() 产生新的字符串,首字母大写 a.title() 产生新的字符串,每个单词都首字母大写 'Gaoqi Love Programming, Love Sxt' a.upper() 产生新的字符串,所有字符全转成大写 a.lower() 产生新的字符串,所有字 符全转成小写
a.center(10,"*") 居中排版,10个字符,a居中,其它用*填充
***SXT****
a.ljust(10,"*") 左填充 SXT*******
a.rjust() 右填充
isalnum() 是否为字母或数字 
isalpha() 检测字符串是否只由字母组成(含汉字)
isdigit() 检测字符串是否只由数字组成。
isspace() 检测是否为空白符 
isupper() 是否为大写字母 
islower() 是否为小写字母
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'

在这里插入图片描述

可变字符串

字符串属于不可变对象,不支持原地修改,如果需要修改其中的值,只能创建新的字符串对象。为了原地修改字符串,可以使用 io.StringIO对象或 array 模块。

>>>import io
>>>s = "hello,six"
>>>sio = io.StringIO(s)
>>>sio.getvalue()
'hello,six'
>>>sio.seek(7) #到位置7
7
>>>sio.write("g")
1
>>>sio.getvalue()
hello,gxt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值