大家好,给大家分享一下python中各种函数的用法,很多人还不知道这一点。下面详细解释一下。现在让我们来看看!
操作篇
字符串操作:
len(s):统计字符串长度
ord(s):字符 =》ASCII
cha(s):ASCII =》字符
’ '.join(s):拼接字符串;
s[::-1]:反转字符串
s[a: b]:按下标a~b切割
s.split():切割字符串(默认空字符,会保存成列表); splitlines():按行切割
s.strip():去除两侧字符(默认空字符); lstrip():只去除左边的特定字符; rstrip():只去除右边的特定字符
s.count(i):计算 i 在字符串s中出现的次数
s.find(i):查找字符串,并返回 i 第一次出现的下标; rfind():反向查找字符串
s.index(i):查询元素返回 i 第一次出现的下标(若不在列表中则会报错,可以指定开始、结束范围)
s.replace(old, new, max):把old替换成new(新字符串),max指定最多替换次数
s.upper():所有小写转大写; lower():所有大写转小写;
s.swapcase():大小写互转; capitalize():字符串首字母转大写; title():每个单词首字母大写;
s.isupper():判断是否全是大写; islower():判断是否全是小写;
s.isalpha():判断是否只是字母
s.isdigit():判断是否只是数字
s.isdecimal():判断是否只包含十进制字符
s.startswith():判断是否以特定字符开头; endswith():判断是否以特定字符结尾
s.isalnum():判断是否只是字母或数字
isinstance(s, type):判断是否为指定类型
列表操作:
len():统计列表长度
’ ‘.join(lt):将列表拼接成字符串(按’ '拼接)
l.append(a):追加元素a到末尾
extend(a):将可迭代对象a的元素展开追加到列表末尾
for i, v in enumerate(lt)):遍历列表(可以同时获取元素及下标),可设置起始位置
insert(a, b):指定a下标位置插入元素b
index():查询元素返回第一次出现的下标(若不在列表中则会报错,可以指定开始、结束范围)
remove():删除指定值的元素(只删第一个)
pop():弹出指定下标的元素(默认最后一个)
count():统计元素出现的次数
clear():清空列表
copy():拷贝一个列表
lt[::-1]:逆序
reverse():逆序
sort():升序排序: sort(reverse=True):降序排序;
sorted():可以用于多种可迭代对象
collections(计数器与队列):
Counter
c = Counter(lt)
dict©:获取元素及出现次数(字典形式显示)
c.most_common(n):获取出现次数最多的元素及次数,指定获取前n个
deque
d = deque(lt) 注:列表函数同样用
d.append(a):从右侧添加元素a; d.appendleft(a):从左侧添加
d.remove(a):删除元素a
d.pop():从右侧弹出元素(不能指定下标); d.popleft():从左侧弹出元素
d.extend(lt2):从右侧扩充序列;d.extendleft(lt2):从左侧扩充序列
d.rotate(n):循环移动,n正右移n次,n负左移n次
itertools(排列组合):
it = itertools.permutations(lt, n):从可迭代对象lt中取出n个元素,所有的可能就是排列(有序),会重复
it = itertools.combinations(lt, n):组合,按lt中顺序排列,且不重复
it = itertools.product(lt, lt2, ltn):笛卡尔成绩,多个序列中的组合
it = itertools.product(lt, repeat=n):相等于n个lt,功能同上
for i in it:
print(i)
元组操作:
len():统计长度
index():获取指定元素的下标
count():统计指定元素出现的次数
max():最大值; min():最小值
集合操作:
add():添加元素
remove():删除元素(不存在会报错); discard():删除元素(不存在不会报错)
pop():随机删除并返回
clear():清空元素
s1 | s2:并集(所有元素)
s1 & s2:交集(相同元素)
s1 ^ s2:对称差集(不同元素)
s1 - s2:差集(s1有s2没有元素)
s1 <= s2:s1是否是s2的子集
s1 >= s2:s1是否是s2的父集
s1.union(s2):并集
s1.intersection(s2):交集
s1.intersection_update(s2):交集(会覆盖原来的集合)
s1.isdisjoint(s2):是否 没有 交集
s1.issubset(s2):s1是否是s2的子集
s1.issuperset(s2):s1是否是s2的父集(超集)
字典操作:
d[n]:获取n的值
d.get(n):获取n键的值,没有返回None,可指定默认值, 对原字典无修改
d.setdefault(): 无值时使用默认值,并将默认值写入原字典
keys():遍历字典,获取键
values():遍历字典,获取值
items():遍历字典,同时获取键和值
d.update():更新字典(存在覆盖,不存在添加)
del:删除元素; pop(n):删除并返回n
d.clear():清空元素
函数基础:
内置系统函数:
print():打印
input():输入
type():获取类型
len():统计元素个数
range():自动生成序列
enumerate():枚举可迭代对象,同时列出数据和数据下标
ord():字符转ASCII
chr():ASCII转字符
int():转为十进制
bin():十转二进制
oct():十转八进制
hex():十转十六进制
abs():求绝对值
max():最大值
min():最小值
sum():求和
pow():求幂
round():四舍五入
round(3.12356, n):小数后保留n位
内置数据结构(型转换):
不可变:int、float、tuple、str、bool;可变:set、list、dict
常用函数
os.system(‘cls’):清屏操作
os.system(‘calc’):计算器
print(os.environ[‘path’]):获取环境变量
** if ** else **:灵活使用
yield x:函数会返回yield后的内容,然后会停止在这里,用于生成器
iter():可将可迭代对象转换为迭代器
gliobal n:声明n是全局变量(可以是多个)
nonlocal n:声明n是外层的局部变量
isinstance(a, type):判断对象a是否是type类型的
lambda(匿名函数):
lambda 参数: 表达式; lambda x, y: x + y; lambda d: d[‘age’]
递归
return 表达式:递归
装饰器
@ 函数名:装饰器(不改变原来函数)
高级函数
map():根据指定函数对序列做出映射(函数,序列)
filter(function, iterable):过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表(函数,可迭代对象)
from functools impor reduce
reduce(function, sequence):对参数序列中的元素进行累积(函数, 序列)
模块函数(需要引入):
import xx:引入xx包
from xx import yy:只引入xx包里的yy类(可引多个类)
from xx import yy as zz:引入模块中的指定内容,并且起别名
from xx import *:模糊导入,导入该模块中__all__
列表指定的内容
isinstance(a, type):判断对象a是否是type类型的
inspect:
isfunction
from inspect import isfunction
isfunction(n):判断标识符n是否是函数
collections:
Iterator,Iterable
from collections import Iterator, Iterable
isinsratance(lt, Iterator):判断lt是否是迭代器
isinsratance(lt, Iterable):判断lt是否是可迭代对象
数学模块
import math:
math.ceil(3.1):向上进一
math.floor(3.9):向下进一
math.sqrt(x)):返回数字x的平方根
math.radians(360):度转换为弧度
math.degrees(math.pi)):弧度转换为度
import sys
sys.argv:是一个列表,保存所有的命令行参数
import random:随机数
random.randint(a, b):生成指定a~b范围随机整数
random.random():生成0~1的随机小数
random.uniform(a,b):生成a~b的随机小数
random.randrange(a, b, n):生成a~b范围随机整数,可指定步幅n
random.choice(lt):从容器对象或字符串随机返回一个元素
random.sample(lt, 3):从容器对象返回指定个数元素的列表
random.choices(lt):从容器对象返回一个元素的列表,samlp函数个数为1的情况
random.shuffle(lt):将列表随机打乱
算术运算:
__add__、__radd__、__iadd__
:加法
__sub__、__rsub__、__isub__
:减法
__mul__、__rmul__、__imul__
:乘法
__truediv__、__rtruediv__、__itruediv__
:除法
__mod__、__rmod__、__imod__
:求余
关系运算:
__gt__、__lt__、__eq__
:大于、小于、等于
__ge__、__le__、__ne__
:大于等于、小于等于、不等于
时间模块:
import time:
time.sleep(n) :睡眠指定n的秒数(可以是小数)
time.time():获取时间戳,(从1970-01-01 00:00:00到此刻的秒数)
time.localtime():将时间戳转换为时间日期对象(time.struct_time),(默认当前时间戳),包含时区
time.gmtime():将时间戳转换为 time.struct_time 对象,不带时区
time.mktime():根据年月日等信息创建时间戳
time.timezone():7+0时区与当前系统时区相差的秒数
%Y:年(4位); %y:年(2位); %m:月; %d:日; %D:月/日/年
%H:时; %M:分; %S:秒; %w:星期; %W:本周是今年的第几周
t1 = time.struct_time
time.strftime(’%D’, t1):格式化显示,对 time.struct_time 对象进行
import calendar:
calendar(y,w=2, l=1, c=6, m=3):返回y年的日历,后边是默认格式
calendar.month(y, m):返回y年m月的日历
calendar.isleap(y):判断y年是否是 闰年
calendar.leapdays(x, y):两个x和y年份之间的闰年数量,区间:[起始, 结束]
datetime
date
from datetime import date
import time
date(y, m, d):创建对象(年-月-日)
date.today():创建对象(今天的年月日)
date.fromtimestamp(time.time()):用时间戳创建对象(今天的年月日)
d1 = date.today():d1是对象
d1.isocalendar():日历显示,(年, 第几周, 星期几)
d1.isoweekday():获取星期,标准格式1~7
d1.weekday():获取星期,格式0~6
d1.year, d1.month, d1.day:提取单独的年月日
d1.timetuple():转换为time.struct_time对象
d1.isoformat():标准格式显示(y-m-d)
d1.strftime(’%Y/%m/%d’):格式化显示
time
from datetime import time
time(h,m,s):创建对象(默认00:00:00)
t = time()
t.hour, t,minute, t.second:单独获取时、分、秒
datetime
from datetime import datetime
import time
datetime(y, m, d, H, M, S):创建对象(年-月-日 时:分:秒)
datetime.now():当前时间,带时区
datetime.utcnow():当前时间,不带时区
datetime.fromtimestamp(time,time()):把时间戳转换为对象
dt = datetime.datetime.now()
dt.date():提取日期
dt.time():提取时间
dt.timestamp():转换成时间戳
dt.strftime(’%j’):转换成当年的第几天
dt.strftime(’%Y/%m/%d %H/%M/%S’):格式化显示
timedelta
from datetime import timedelta, datetime
td = timedelta(seconds=3600):时间差
td.days:提取天数
td.seconds:提取秒数(天以外的秒数)
td.total_seconds():总共的秒数
文件操作:
文件管理:
open(file, mode):打开文件, mode打开模式
close(file):关闭文件
with:操作文件后,保证文件关闭
r:只读(不存在报错); w:只写(不存在创建,存在清空); a:追加(不存在创建,存在不清空)
r+:r强化版(可以读写); w+:w强化版(可以读写); a+:a强化版(可以读写)
readbble(file):判断文件是否可读
writable(file):判断文件是否可写
read(size):读取指定size长度内容,默认读全部
readline():读取整行内容,包括’\n’字符
write():写操作
tell(file):获取文件操作位置
remove(file):删除文件
shutil:
shutil.copy(old,new):拷贝文件(old只能是文件,new可以是文件可以是目录)
shutil.copyfile(old,new):拷贝文件,只能是文件
shutil.copytree(old,new):拷贝目录,只能时目录,且new不能存在
os.rmdir(‘test’):删除空目录
shutil.rmtree():删除目录(空目录,有内容都可以删)
os.rename(old,new):重命名目录(文件)
shutil.move(old,new):移动目录(文件)
bytes:
encode(‘utf-8’):编码
decode(‘utf-8’):解码
目录管理
os 模块
import os
os.name:判断正在使用的平台 (windows 返回 ‘nt’; Linux 返回’posix’)
os.system(cls):清屏
os.system(calc):调出计算器
os.environ[path]:获取环境变量
os.getenv(pathxx):从环境中取字符串,获取环境变量的值
os.getpid():获取当前进程id号
os.getpid():获取当前进程的父进程id号
os.getcwd():查看当前目录
os.mkdir(path):新建目录
os.makedirs(a/b/c):创建多级目录(可创建中间目录)
os.rmdir(path):删除空目录
os.removedirs(path):删除多层目录
os.remove(file):删除文件
os.rename(test, test2):重命名文件(目录)
os.stat(file):查看文件信息
os.listdir(path):遍历目录,返回指定路径下的文件和文件夹列表
os.getcwd():查看当前工作目录
os.listdir(os.getcwd()):查看指定文件内容
os.walk(‘path’):生成目录树下的所有文件名
os.chdir():改变目录
os.path模块:
import os
os.path.join(path, file):目录拼接
os.path.dirname(path):去掉文件名,返回目录路径
os.path.basename(path):去掉目录路径,返回文件名
os.path.split(path):切割路径和文件名; dir, file = os.path.split(path)
os.path.splitext(path)):切割路径和后缀
os.path.exists(file):判断文件(目录)是否存在
os.path.isdir(path):是否是目录
os.path.isfile(path):是否是文件
os.path.isabs(path):是否是绝对路径
os.path.abspath(path):转换为绝对路径
os.path.getsize(file):获取文件大小(只适用于文件,不适用目录)
面向对象
class 类名::类的定义
self.:表示当前对象,就是调用该方法的对象
__str__(self)
:打印对象时会触发,str方法转换时会触发,打印对象时会打印该方法的返回值
__init__
:构造方法,创建对象时会触发,对对象的属性进行初始化设置
__del__
:析构方法,当对象释放时会触发
__setattr__
:添加或设置属性时会自动触发
__getattr__
:获取指定的属性时会自动触发
__delattr__
:销毁对象的指定属性时会自动触发
__setitem__
:把对象当作字典,添加或设置属性时会自动触发
__getitem__
:把对象当作字典,根据键获取值时自动触发
__delitem__
:把对象当作字典,删除指定属性时自动触发
__call__
:把对象当作函数调用,该方法会自动触发
__repr__
:返回对象的字符串表示形式,使用repr函数处理时会自动触发
class B(A):B继承A
class C(A, B):C同时继承A和B
__
:前面加俩下划线定义私有方法
@classmethod:装饰器,创建对外的简易接口
@staticmethod:装饰器,静态方法中用到
@property:专门保护特有的属性
@abstractmethod:定义抽象方法,规定接口
repr(d):返回对象的字符串显示; eval®:执行有效的python代码字符串
深浅拷贝:
import copy
copy.copy(lt):浅拷贝,只拷贝对象本身,里面的元素只会增加一个引用;也可以用lt.copy()
copy.deepcopy(lt):深拷贝,拷贝对象本身,对象中的元素也进行拷贝
print(lt is lt2):判断是否是同一个对象的多个引用
序列化:
import pickle
pickle.dumps():序列化,会将对象转换为bytes
pickle.loads():反序列化,从bytes中解析出对象
异常处理
try:
except Exception as e::出现异常时执行
else::没有异常时会执行
finally::有没有异常都会执行
raise Exception(‘手动抛出的异常’)
json
import json
json.dumps():将字典转换为JSON字符串
json.loads():将JSON字符串转换为字典
from urllib.parse import urlencode
urlencode(d):将字典进行URL编码
正则表达式
相关函数
import re
s = “www.findlp com”
p = ".([a-z]+) "
re.compile§:创建正则表达式对象,可以让创建正则对象和内容匹配分开操作
re.match(p, s):从开头进行匹配,找到返回对象结果,没有返回None
re.search(p, s):从任意位置匹配,作用同上
re.findall(p, s):全部匹配,返回所有匹配到的结果列表,没有则返回空列表,添加 () 后,结果只显示 () 匹配的内容
.span():返回匹配内容的位置
.group():返回匹配内容、
.groups():返回所有组的信息
.groupdict():返回分组的字典,键是组的名字,值是组的内容
正则语法
单个字符
[abc]:abc的任意一个字符
[0-9]:任意数字字符
[a-zA-Z]:任意字母
[^0-9]:非数字字符
. :除’\n’以外的任意字符
单个字符
‘\d’:匹配数字字符,等价[0-9]
‘\D’:匹配非数字字符
‘\w’:匹配字(数字、字母、下划线、汉字)
‘\W’:匹配非字(< >|、)
‘\s’:匹配空白字符(\n, \r, \t、空格)
‘\S’:匹配非空白字符
‘\b’:匹配词边界(开头、结尾、空格、标点)
‘\B’:匹配非词边界
次数限定
*:匹配任意次
+:匹配最少一次
?:匹配零次或一次,非贪婪匹配
?: :非匹配获取,匹配冒号后的内容,但不获取匹配结果,不进行存储供以后使用
{m}:指定m次
{m,n}:指定m~n次
{m,}:最少m次
{,m}最多m次
边界限定
^:以指定内容开头
$:以指定内容结尾
分组
:固定匹配<[a-z]+></[a-z]+>:动态匹配:匹配多次嵌套的标签
<[a-z]+)></(\1)>:无名分组:\1、\2分别表示前面的第一组、第二组匹配的内容
(?P[a-z]+) ;?P=one:给标签起名;相对应
匹配模式
re.I :表示忽略大小写
re.M :多行处理(默认会把字符串当作一行处理)
re.S :单行处理,是.可以匹配任意(忽略\n)
字符替换
re.sub(“old_str”, “new_str”, text, 2) :最多替换2次,默认全部
图片处理
from PIL import Image, ImageDraw, ImageFont
img = Image.open(fp, mode=“r”):打开图片(图片名.要带后缀)
img.save():保存图片(指定文件名.要带后缀)
img.show():查看图片
Image.new(mode, size, color=0):新建图片(‘RGB’, 尺寸, 颜色)
img.thumbnail(size):修改尺寸,在原图修改
img.resize(size):修改尺寸,生成新的图片
draw = ImageDraw.Draw(img):创建画笔
font = ImageFont.truetype(font, size=10):创建字体
draw.point(xy, fill):画点,一个像素(位置,颜色)
draw.line(xy, fill, width=0):画线(位置*n,颜色,宽度)
draw.text(xy, text, fill, font):画字(位置,字,颜色,字体)