知识点
1 ==与is区别:Python中对象包含的三个基本要素,分别是:id(身份标识)、type(数据类型)和value(值)。
==只比较值,而is比较身份标识也就是内存地址,而且在is比较中关于数据类型也就是只有数值型和字符串型的情况下,a is b才为True,当a和b是tuple,list,dict或set型时,a is b为False。
2 浅拷贝和深拷贝:需要使用copy模块
- 浅拷贝:copy()方法实现
1、对于不可变类型 Number String Tuple,浅复制仅仅是地址指向,不会开辟新空间。 2、对于可变类型 List、Dictionary、Set,浅复制会开辟新的空间地址(仅仅是最顶层开辟了新的空间(地址不相同),里层的元素地址还是一样的),进行浅拷贝 3、浅拷贝后,改变原始对象中为可变类型的元素的值,会同时影响拷贝对象的(可变类型的原始对象变,拷贝对象变);改变原始对象中为不可变类型的元素的值,只有原始类型受影响。
- 深拷贝:deepcopy()实现
1、浅拷贝,除了顶层拷贝,还对子元素也进行了拷贝(本质上递归浅拷贝) 2、经过深拷贝后,原始对象和拷贝对象所有的元素地址都没有相同的了
3sep=" ",代表每个输出变量之间的方式可改为sep="\n",每行换行
列表生成式
- [x*x for x in range(1,11)]
写列表生成式时,把要生成的元素x放在前面后面跟上for循环
还可以在for之后加上if判断语句
生成器(generator)
一遍循环一边计算的机制称为生成器
- 将列表生成式的[]改成(),就创建了一个生成器
- 可用next(生成器的名字)获得下一个返回值
g=(x*x for x in range (10))
1.用next(g)打印出下一个元素知道出现StopIteration错误
2.用for循环迭代输出
for n in g:
print(n)
需要全部推算才能使用for迭代输出
3.把print(b)改为yield b就成为生成器了
def fib(max):
n, a, b = 0, 0, 1
while n < max:
print(b)
a, b = b, a + b
n = n + 1
return 'done'
def fib(max):
n, a, b = 0, 0, 1
while n < max:
yield b
a, b = b, a + b
n = n + 1
return 'done'
字符串
- capitalize() 把字符串的第一个字符改为大写
- casefold() 把整个字符串的所有字符改为小写
- center(width) 将字符串居中,并使用空格填充至长度 width 的新字符串
- count(sub[, start[, end]]) 返回 sub 在字符串里边出现的次数,start 和 end 参数表示范围,可
- encode(encoding=‘utf-8‘, errors=‘strict‘) 以 encoding 指定的编码格式对字符串进行编码。
- endswith(sub[, start[, end]]) 检查字符串是否以 sub 子字符串结束,如果是返回 True,否则返回 False。start 和 end 参数表示范围,可选。
- expandtabs([tabsize=8]) 把字符串中的 tab 符号(\t)转换为空格,如不指定参数,默认的空格数是 tabsize=8
- find(sub[, start[, end]]) 检测 sub 是否包含在字符串中,如果有则返回索引值,否则返回 -1,start 和 end 参数表示范围,可选。
- index(sub[, start[, end]]) 跟 find 方法一样,不过如果 sub 不在 string 中会产生一个异常。
- isalnum() 如果字符串至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False。
- isalpha() 如果字符串至少有一个字符并且所有字符都是字母则返回 True,否则返回 False。
- isdecimal() 如果字符串只包含十进制数字则返回 True,否则返回 False。
- isdigit() 如果字符串只包含数字则返回 True,否则返回 False。
- islower()如果字符串中至少包含一个区分大小写的字符,并且这些字符都是小写,则返回 True,否则返回 False
- isnumeric() 如果字符串中只包含数字字符,则返回 True,否则返回 False。
- isspace() 如果字符串中只包含空格,则返回 True,否则返回 False。
- istitle() 如果字符串是标题化(所有的单词都是以大写开始,其余字母均小写),则返回 True,否则返回 False
- isupper()如果字符串中至少包含一个区分大小写的字符,并且这些字符都是大写,则返回 True,否则返回 False
- join(sub)以字符串作为分隔符,插入到 sub 中所有的字符之间。
- ljust(width) 返回一个左对齐的字符串,并使用空格填充至长度为 width 的新字符串。
- lower()转换字符串中所有大写字符为小写。
- lstrip()去掉字符串左边的所有空格
- partition(sub)找到子字符串 sub,把字符串分成一个 3 元组 (pre_sub, sub, fol_sub),如果字符串中不包含 sub 则返回 (‘原字符串‘, ‘‘, ‘‘)
- replace(old, new[, count])把字符串中的 old 子字符串替换成 new 子字符串,如果 count 指定,则替换不超过 count 次。
- rfind(sub[, start[, end]])类似于 find() 方法,不过是从右边开始查找。
- rindex(sub[, start[, end]])类似于 index() 方法,不过是从右边开始。
- rjust(width)返回一个右对齐的字符串,并使用空格填充至长度为 width 的新字符串。
- rpartition(sub)类似于 partition() 方法,不过是从右边开始查找。
- rstrip()删除字符串末尾的空格。
- split(sep=None, maxsplit=-1)不带参数默认是以空格为分隔符切片字符串,如果 maxsplit 参数有设置,则仅分隔maxsplit 个子字符串,返回切片后的子字符串拼接的列表。
- splitlines(([keepends]))在输出结果里是否去掉换行符,默认为 False,不包含换行符;如果为 True,则保留换行符。
- startswith(prefix[, start[, end]])检查字符串是否以 prefix 开头,是则返回 True,否则返回 False。start 和 end 参数可以指定范围检查,可选。
- strip([chars])删除字符串前边和后边所有的空格,chars 参数可以定制删除的字符,可选。
- swapcase()翻转字符串中的大小写。
- title()返回标题化(所有的单词都是以大写开始,其余字母均小写)的字符串。
- translate(table)根据 table 的规则(可以由 str.maketrans(‘a‘, ‘b‘) 定制)转换字符串中的字符。
- upper()转换字符串中的所有小写字符为大写。
- zfill(width)返回长度为 width 的字符串,原字符串右对齐,前边用 0 填充。
函数
- def 函数名(参数列表):
? 函数体
- Python有返回值,就返回返回值,没有就返回None
- 关键字参数:出现在函数调用时:SaySome(words=‘让编程改变世界‘,name=‘小甲鱼’)
- 默认参数:出现在函数创建时def SaySome(name=‘小甲鱼‘,words=‘让编程改变世界‘)
- 可变参数:在形参前面加一个*号,意味着该参数可接受多个参数值,这些参数值以元组当成元祖传入,如果后面要跟其他形参责需要用默认参数。
def test(*params,exp=8):
print('参数长度是:',len(params),exp);
print('第二个参数是:',params[1])
文件操作
- open(文件名(如果不在同一文件夹下,带上文件路径),文件打开模式)
- 文件路径接受/或,但是用\需要用\来转义
f=open('E:\\test.txt') f.read()
打开模式 | 执行操作 |
---|---|
‘r‘ | 以只读方式打开文件(默认) |
‘w‘ | 以写入的方式打开文件,会覆盖已存在的文件 |
‘x‘ | 如果路径下已经存在相同的文件名,使用此模式打开将引发异常(以写入模式打开) |
‘a‘ | 以写入模式打开,如果文件存在,则在末尾追加写入 |
‘b‘ | 以二进制模式打开文件 |
‘t‘ | 以文本模式打开(默认) |
‘+‘ | 可读写模式(可添加到其他模式中使用) |
‘U‘ | 通用换行符支持 |
文件对象方法 | 执行操作 |
---|---|
f.close() | 关闭文件 |
f.read([size=-1]) | 从文件读取size个字符,当未给定size或给定负值的时候,读取剩余的所有字符,然后作为字符串返回 |
f.readline([size=-1]) | 从文件中读取并返回一行(包括行结束符),如果有size有定义则返回size个字符 |
f.write(str) | 将字符串str写入文件 |
f.writelines(seq) | 向文件写入字符串序列seq(如:列表),seq应该是 一个返回字符串的可迭代对象 |
f.seek(offset(偏移字节), from) | 在文件中移动文件指针,从from(0代表文件起始位置,1代表当前位置,2代表文件末尾)偏移offset个字节 |
f.tell() | 返回当前在文件中的位置 |
f.truncate([size=file.tell()]) | 截取文件到size个字节,默认是截取到文件指针当前位置 |
f.seek(0,0) 把指针拨到初始位置
for each_line in f:
print(esash_line) 可以一行一行打印
f.write() 写入之前,保证用w或a方式打开文件,当字符串写入之后,应用f.close()关闭写入文件
list(f) 将文件对象f中数据存入列表中
原文地址:https://www.cnblogs.com/flhw/p/11142212.html
时间: 2024-08-26 17:28:22