Python3
Python3
知识点
Python中的所有对象都是通过引用来访问的。如果一个对象的引用计数为0,它就会被垃圾回收。
基本数据类型
不可变数据(3 个):Number
(数字)、String
(字符串)、Tuple
(元组)
可变数据(3 个):List
(列表)、Dictionary
(字典)、Set
(集合)。
不可变数据数据的值不可变,但可重新赋值,而可变数据的值可变。
数字:int
、float
、bool
、complex
(复数)
List(列表):list = [value1, value2, value3, ...]
(相当于数组,可用下标访问和修改)
Tuple(元组):tuple = (value1, value2, value3, ...)
(相当于只读数组,不可修改)
Set(集合):set = {value1, value2, value3, ...}
(不可重复,可进行集合的运算,如交集、并集、差集等)
print(a - b) # a 和 b 的差集
print(a | b) # a 和 b 的并集
print(a & b) # a 和 b 的交集
print(a ^ b) # a 和 b 中不同时存在的元素
Dictionary(字典):dict = {key1: value1, key2: value2, key3: value3, ...}
(相当于js中的对象,可用键访问和修改)
常用函数
print() # 打印输出
input() # 输入
str() # 转换为字符串
int() # 转换为整数
float() # 转换为浮点数
repr() # 转换为表达式字符串
sorted() # 将列表排序(不会改变原列表,会返回一个新的列表)
reversed() # 返回一个反向的迭代器
str相关函数
:str.rjust() # 将字符串靠右, 并在左边填充空格
:str.ljust() # 将字符串靠左, 并在右边填充空格
:str.center() # 将字符串居中, 并在两边填充空格
:str.isdigit() # 检查字符串是否只由数字组成
:str.isalpha() # 检查字符串是否只由字母组成
:str.isalnum() # 检查字符串是否只由数字和字母组成
:str.islower() # 检查字符串是否只由小写字母组成
:str.isupper() # 检查字符串是否只由大写字母组成
:str.istitle() # 检查字符串是否只由首字母大写组成
:str.isspace() # 检查字符串是否只由空格组成
:str.startswith(str, beg=0,end=len(string)) # 检查字符串是否以指定字符串开头
:str.endswith(str, beg=0,end=len(string)) # 检查字符串是否以指定字符串结尾
:str.find(str, beg=0, end=len(string)) # 检查字符串是否包含指定字符串,str指定检索的字符串 beg开始索引,默认为0,end结束索引,默认为字符串的长度。
:str.replace(old_str, new_str, count) # 替换字符串中的指定字符串,old_str指定被替换的字符串,new_str指定替换的字符串,count指定替换的次数,默认为全部替换。
:str.split() # 将字符串分割为列表
:str.join() # 将列表合并为字符串
:str.strip() # 去除字符串两边的空格
:str.lstrip() # 去除字符串左边的空格
:str.rstrip() # 去除字符串右边的空格
:str.upper() # 将字符串转换为大写
:str.lower() # 将字符串转换为小写
:str.title() # 将字符串转换为首字母大写
:str.capitalize() # 将字符串第一个字符转换为大写
:str.swapcase() # 将字符串大小写互换
:str.count() # 统计字符串中指定字符串出现的次数
:str.format() # 格式化字符串
:str.zfill() # 在字符串左边填充0
:str.maketrans() # 创建字符映射转换表
:str.translate() # 根据转换表转换字符串
迭代器
创建方法:it = iter(list)
使用方法:next(it)
返回下一个元素
迭代器可用于for循环:for x in it:
在对象中使用:__iter__()
函数执行初始化并返回一个对象、__next__()
函数返回迭代器的下一个值,并在没有元素时抛出StopIteration
异常
class MyNumbers:
def __iter__(self):
self.a = 1
return self
def __next__(self):
if self.a <= 20:
x = self.a
self.a += 1
return x
else:
raise StopIteration
生成器
生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。
def fibonacci(n): # 生成器函数 - 斐波那契
a, b, counter = 0, 1, 0
while True:
if (counter > n):
return
yield a
a, b = b, a + b
counter += 1
条件与循环
if
if condition:
pass
elif condition:
pass
else:
pass
while
while condition:
pass
for
for item in iterable:
pass
iterable 可迭代对象,如list
、tuple
、dict
、set
、str
等
技巧:
range()
函数生成一个整数序列,list(range(5))
生成[0, 1, 2, 3, 4]
enumerate()
函数可以同时获得索引和值,for i, value in enumerate(['A', 'B', 'C'])
生成[(0, 'A'), (1, 'B'), (2, 'C')]
items()
当对字典执行循环时,可以使用 items() 方法同时提取键及其对应的值,for key, value in d.items()
生成[(key1, value1), (key2, value2), (key3, value3), ...]
for ... in ...
可以同时循环多个变量,for x, y in [(1, 1), (2, 4), (3, 9)]
生成[(1, 1), (2, 4), (3, 9)]
enumerate()
和items()
区别在于,enumerate()
是将索引和值分别赋值给两个变量,items()
是将键和值分别赋值给两个变量
str.format()
# 位置参数
'{0}, {1}, {2}'.format('a', 'b', 'c') # 'a, b, c'
'{}, {}, {}'.format('a', 'b', 'c') # 'a, b, c'
'{2}, {1}, {0}'.format('a', 'b', 'c') # 'c, b, a'
'{2}, {1}, {0}'.format(*'abc') # 'c, b, a'
'{0}{1}{0}'.format('abra', 'cad') # 'abracadabra'
文件操作
转载自菜鸟教程
open()
将会返回一个file
对象,基本语法格式如下:
open(filename, mode)
filename
:包含了你要访问的文件名称的字符串值。 mode
:决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。 不同模式打开文件的完全列表:
模式 | 描述 |
---|---|
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。 |
w | 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
w+ | 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
模式 | r | r+ | w | w+ | a | a+ |
---|---|---|---|---|---|---|
读 | + | + | + | + | ||
写 | + | + | + | + | + | |
创建 | + | + | + | + | ||
覆盖 | + | + | ||||
指针在开始 | + | + | + | + | ||
指针在结尾 | + | + |
f.read()
f = open('file.txt', 'r')
f.read() # 读取整个文件
f.read(4) # 读取4个字符
f.readline() # 读取一行
f.readlines() # 读取所有行
f.close() # 关闭文件
f.write()
f = open('file.txt', 'w')
f.write('Hello World!') # 写入字符串
f.close() # 关闭文件
f.tell()
f = open('file.txt', 'r')
f.tell() # 返回文件对象当前所处的位置, 它是从文件开头开始算起的字节数
f.close() # 关闭文件
f.seek()
如果要改变文件指针当前的位置, 可以使用f.seek(offset, from_what)
函数。
from_what
的值, 如果是 0 表示开头, 如果是 1 表示当前位置, 2 表示文件的结尾
f = open('file.txt', 'r')
f.seek(5) # 移动文件指针到指定位置
f.seek(5, 0) # 移动到文件的第六个字节
f.seek(-3, 2) # 移动到文件的倒数第三字节
f.close() # 关闭文件
f.close()
f = open('file.txt', 'r')
f.close() # 关闭文件