百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

python模块你都用过哪些?不妨来看看这20个,也许正好有你需要的

bigegpt 2024-08-04 11:34 8 浏览

在本篇幅中主要介绍如下10个模块,若想查看前10个模块的介绍,可点击:python常用的内置模块有哪些?这20个模块算是高频使用的吗?(上)

11.configparser

11.1 作用

读写配置文件

11.2 导入

import configparser

1.3 常用方法及说明

方法

说明

configparser.read(filename)

读取配置文件,直接读取ini文件内容

configparser.sections()

获取ini文件内所有的section,以列表形式返回

configparser.options(sections)

获取指定sections下所有options ,以列表形式返回

configparser.items(sections)

获取指定section下所有的键值对

configparser.get(section, option)

获取section中option的值,返回为string类型

configparser.getint(section,option)

得到section中option的值,返回int类型的结果

configparser.write(filename)

将configparser对象写入.ini类型的文件

configparser.add_section()

添加一个新的section

configparser.add_set(section,option,value)

对section中的option信息进行写入

configparser.remove_section(section)

删除文件中的某个section的数值

configparser.remove_option(section,option)

删除文件中某个section下的option的数值

11.4 示例

配置项生成和读取

import configparser

conf = configparser.ConfigParser()

# === 1.创建配置项====
def write_conf():
    conf['mysql'] = {
        "host" : "192.169.10.68",
        "port" : "3306",
        "user" : "root",
        "password" : "123456"
    }
    with open('config.ini','w',encoding='utf-8') as f:
        conf.write(f)

"""
调用write_conf()将生成config.ini文件,文件内容如下:
[mysql]
host = 192.169.10.68
port = 3306
user = root
password = 123456
"""


# ====2.读取配置项======

# 通过read读取到config.ini中的数据
conf.read('config.ini',encoding='utf-8')

print("ini内所有的section,以列表形式返回:",conf.sections())

for k,v in conf.items('mysql'):
    print(k,v)
"""
通过conf.items()循环后返回如下:
host 192.169.10.68
port 3306
user root
password 123456
"""

# 使用options获取某个section中所有的键
print(conf.options('mysql'))    #返回:['host', 'port', 'user', 'password']

# 使用get获取某个键对应的值
print("获取port的值:",conf.get("mysql","port"))     #返回:3306

配置项的新增、修改、删除

import configparser

conf = configparser.ConfigParser()
conf.read('config.ini')

# 添加新配置项
def add_config():
    '''
    要新增的内容
    [api]
    name = /user/login
    method = 'get'
    body = {'username':'admin','password':'123456'}
    '''
    conf.add_section('api')
    conf.set('api','name','/user/login')
    conf.set('api','method','get')
    conf.set('api','body',"{'username':'admin','password':'123456'}")
    with open('config.ini','w') as f:
        conf.write(f)


# add_config()      #只需运行一次


# 修改配置项
conf.set('api','method','post')
with open('config.ini', 'w') as f:
    conf.write(f)


# 删除配置项
conf.remove_option('api','body')
conf.remove_section('api')
with open('config.ini', 'w') as f:
    conf.write(f)

12.yaml

12.1 作用

进行yaml格式的读取和转化

12.2 导入

import yaml

12.3 常用方法及说明

方法

说明

yaml.load()

读取yaml文件

yaml.dump()

将一个python对象生成yaml文档

yaml.load_all()

如果string或文件包含几块yaml文档,可以使用yaml.load_all来解析全部的文档。

yaml.dump_all()

将多个段输出到一个文件中

12.4 示例

import yaml


"""
文件名:sutdent.yaml
文件内容:
name: zhangsan
age: 37
lower student:
    name: lisi
    age: 25
higher student:
 - name: wangwu
   age: 35
 - name1: zhaoliu
   age1: 42
"""

# 1.load方法,读取yaml文件,
with open('sutdent.yaml') as f:
    res = yaml.load(f,Loader=yaml.FullLoader)
print("读取结果:",res)

# 2.dump ,将一个python对象生成yaml格式
dct = {'a':'python','b':'java'}
res1 = yaml.dump(dct)
print(res1)

# 3.load_all ,将文件包含的几块Yaml读取出来
fl = '''
---
name: tony
age: 20
---
name: lisy
age: 29
'''

res2 = yaml.load_all(fl,Loader=yaml.FullLoader)
for data in res2:
    print(data)


# 4.将多段输出到yaml文件
obj1 = {"name": "James", "age": 20}
obj2 = ["Lily", 19]

with open(r'a.yaml', 'w') as f:
    yaml.dump_all([obj1, obj2], f)

"""
输出到文件如下:
age: 20
name: James
---
- Lily
- 19
"""



# 输出:
读取结果: {'name': 'zhangsan', 'age': 37, 'lower student': {'name': 'lisi', 'age': 25}, 'higher student': [{'name': 'wangwu', 'age': 35}, {'name1': 'zhaoliu', 'age1': 42}]}
a: python
b: java

{'name': 'tony', 'age': 20}
{'name': 'lisy', 'age': 29}

13.itertools

13.1 作用

用来产生不同类型迭代器

13.2 导入

import itertools

13.3 常用方法及说明

方法

说明

count( start [,step])

创建一个从 start 开始,步长为 step 的迭代器,默认为1。

cycle( iterable )

创建一个从 iterable 中 循环 取出元素的迭代器。

repeat( elem [,n] )

重复 elem元素 n次。 n为空时,重复无穷次。

accumulate( p [,func] )

创建一个迭代器,返回累加和或其他二元函数的累加结果。

chain( p, q, … )

把可迭代对象p, q 中的元素连接起来。

chain.from_iterable( iterable )

要求iterable对象中的元素也是可迭代的,然后把元素中元素创建一个迭代器

compress(data, selectors)

创建一个迭代器,它返回data 中经selectors 真值测试为True 的元素。

dropwhile(predicate, iterable)

创建一个迭代器,如果predicate 为true,迭代器丢弃这些元素,然后返回其他元素。

filterfalse(predicate, iterable)

创建一个迭代器,只返回iterable 中predicate 为False 的元素。

groupby(iterable, key=None)

创建一个迭代器,对里面的元素 按 key 进行分组。

islice(iterable, start, stop[, step ])

创建一个迭代器,返回从iterable 里选中的元素。如果start 不是0,跳过iterable 中的元素,直到到达start 这个位置。之后迭代器连续返回元素,除非step 设置的值很高导致被跳过。

starmap(function, iterable)

类似 map(),function函数历遍 iterable中的元素。

takewhile(predicate, iterable)

创建一个迭代器,只要predicate 为真就从可迭代对象中返回元素。

tee(iterable, n=2)

从一个可迭代对象中返回n 个独立的迭代器。

zip_longest(*iterables, fillvalue=None)

创建一个迭代器,从每个可迭代对象中收集元素。如果可迭代对象的长度未对齐,将根据fillvalue 填充缺失值。

13.4 示例

无限迭代器


import itertools


# 无限迭代器

# 1. count(start,step)

"""
start : 开始索引
step : 步长
"""

for i in itertools.count(1,2):
    if i > 8:
        break
    print("i =", i)
"""
i = 1
i = 3
i = 5
i = 7
"""

# 2. cycle("abc")   # 无限重复abc
sum = 0
for i in itertools.cycle("123"):
    print(i,end=" ")
    if sum > 10:
        break
    sum += int(i)
print()

# 输出 :1 2 3 1 2 3 1


# 3.repeat(obj,times)
"""
obj : 循环的对象
times : 循环的次数
"""
for x in itertools.repeat("hello",2):
    print(x,end=" ")

print()

#输出 :hello hello

合并与筛选迭代器


import itertools


# 迭代器合并

# 1. chain(p,q) : 将多个可迭代对象分别处理,可将多个序列处理为单个序列

"""
p , q 都是可迭代对象
"""

for i in itertools.chain("hello","python"):
    print(i,end=" ")
print()
"""
输出 :h e l l o p y t h o n 
"""

# 2. chain.from_iterable(iterable)   # 这里相当于将一个迭代器的元素都拿来进行返回
for i in itertools.chain.from_iterable(["hello","python"]):
    print(i,end=" ")
print()

# 输出 :h e l l o p y t h o n


# 筛选序列 :

# 1.compress(data,selector)
"""
data:一个可以用来迭代的数据。
selector:选择器,用来对data进行筛选。
生成一个筛选之后的迭代器,筛选规则为,当selector的第i个值为真,则保留data的第i个值,否则去除data的第i个值

"""


for x in itertools.compress('ABCDEF', [1, 0, 1, 0, 1, 1]):
    print(x,end=" ")
print()

# 2.dropwhile(predicate, iterable)
"""
predicate:一个判断函数,该函数返回值类型为bool。
iterable:可迭代对象。
"""
#去除小于3的数
for i in itertools.dropwhile(lambda x:x<3,[1,2,3,4,5]):
    print(i,end=" ")
print()
#输出 : 3 4 5

# 3. takewhile(predicate, iterable)
"""
创建一个迭代器,只要 predicate 为真就从可迭代对象中返回元素。
"""
for i in itertools.takewhile(lambda x: x > 5, [7, 6, 32, 3, 6, 5]):
    print(i,end=" ")
print()
# 输出 :[7, 6, 32]

14.re

14.1 作用

正则匹配 ,需要说明的是,使用这个模块需要懂得一些正则表达式相关的知识 。

14.2 导入

import re

14.3 常用方法及说明

方法

说明

re.match(pattern, string, flags=0)

若匹配成功,则返回一个匹配的对象,否则返回None

re.compile(pattern)

编译正则表达式,生成一个正则表达式对象

re.search()

搜索整个字符串并返回第一个成功的匹配,如果没有匹配则返回None

re.findall()

在字符串中找到正则表达式所匹配的所有子串并返回一个列表,若没有匹配则返回空列表

re.finditer()

在字符串中找到正则表达式所匹配的所有子串,并把它们作为一个迭代器返回。

re.sub(pattern, repl, string, count=0, flags=0)

将匹配到的数据进行替换

re.subn(pattern, repl, string[, count])

行为与sub()相同,但是返回一个元组 (字符串, 替换次数)

re.split(pattern, string, maxsplit=0, flags=0)

根据匹配进?切割字符串,并返回?个列表。

14.4 示例

import re

# 1.match(pattern,string,flags=0)
"""
从字符串的开头进行匹配, 匹配成功就返回一个匹配对象,匹配失败就返回None
若匹配到,通过调用group()方法得到匹配的字符串并返回
"""
print("匹配到的字符串为:",re.match("ac","acd").group())

# 输出 :匹配到的字符串为: ac


# 2.search(pattern,string,flags=0)
"""
搜索整个字符串去匹配第一个并返回,未匹配成功返回None
若匹配到,通过调用group()方法得到匹配的字符串并返回
"""
print("匹配到的字符串为:",re.search("ac","ddacd").group())
# 输出 :匹配到的字符串为: ac


# 3. findall(pattern, string, flags=0)
"""
match和search均用于匹配单值,即:只能匹配字符串中的一个,如果想要匹配到字符串中所有符合条件的元素,则需要使用 findall。
"""

print("匹配到的字符串为:",re.findall("ac","dacdacd"))
#输出:匹配到的字符串为: ['ac', 'ac']

# 4. sub(pattern,repl,string,count=0,flags=0)
"""
替换匹配成功的指定位置字符串
"""
res = re.sub('\d','py','doc.2.exe.3.xls')
print("替换数字为py:",res)
#输出 :替换数字为py: doc.py.exe.py.xls

# 5.split(pattern,string,maxsplit=0,flags=0)
"""
根据正则匹配分割字符串
"""
res1=re.split('a','a1bcd')
print("分割字符得到:",res1)
#输出 :['', '1bcd']

# 6.compile()
"""
python代码最终会被编译为字节码,之后才被解释器执行。
在模式匹配之前,正在表达式模式必须先被编译成regex对象,
预先编译可以提高性能,re.compile()就是用于提供此功能
"""
obj=re.compile('\d{3}')
ret=obj.search('abcd123edee')
print(ret.group())
#输出 :123


# 7.group()与groups()
"""
匹配对象的两个主要方法:
group()  返回所有匹配对象,或返回某个特定子组,如果没有子组,返回全部匹配对象
groups() 返回一个包含唯一或所有子组的的元组,如果没有子组,返回空元组
"""

15.calendar

15.1 作用

提供了和日历相关的方法

15.2 导入

import calendar

15.3 常用方法及说明

方法

说明

calendar.calendar(year)

返回某一年的年历

calendar.month(year,month)

返回月历

calendar.weekday(year,month,day)

返回传入的日期是星期几。

calendar.isleap(year)

返回传入的年是不是闰年,是返回True,否则为false。如2020年是闰年。

calendar.leapdays(start, end)

返回start,end之间有多少个闰年,左闭右开区间。

calendar.timegm(tupletime)

接受一个时间元组,返回时间戳,时间元组的值依次表示年、月、日、时、分、秒。

15.4 示例


import calendar

print("calendar(years)返回某一年的日历:")       # calendar.prcal(2021)同样也可以实现此功能
print(calendar.calendar(2021))
""" 输出 :
                                  2021

      January                   February                   March
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
             1  2  3       1  2  3  4  5  6  7       1  2  3  4  5  6  7
 4  5  6  7  8  9 10       8  9 10 11 12 13 14       8  9 10 11 12 13 14
11 12 13 14 15 16 17      15 16 17 18 19 20 21      15 16 17 18 19 20 21
18 19 20 21 22 23 24      22 23 24 25 26 27 28      22 23 24 25 26 27 28
25 26 27 28 29 30 31                                29 30 31

       April                      May                       June
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
          1  2  3  4                      1  2          1  2  3  4  5  6
 5  6  7  8  9 10 11       3  4  5  6  7  8  9       7  8  9 10 11 12 13
12 13 14 15 16 17 18      10 11 12 13 14 15 16      14 15 16 17 18 19 20
19 20 21 22 23 24 25      17 18 19 20 21 22 23      21 22 23 24 25 26 27
26 27 28 29 30            24 25 26 27 28 29 30      28 29 30
                          31

        July                     August                  September
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
          1  2  3  4                         1             1  2  3  4  5
 5  6  7  8  9 10 11       2  3  4  5  6  7  8       6  7  8  9 10 11 12
12 13 14 15 16 17 18       9 10 11 12 13 14 15      13 14 15 16 17 18 19
19 20 21 22 23 24 25      16 17 18 19 20 21 22      20 21 22 23 24 25 26
26 27 28 29 30 31         23 24 25 26 27 28 29      27 28 29 30
                          30 31

      October                   November                  December
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
             1  2  3       1  2  3  4  5  6  7             1  2  3  4  5
 4  5  6  7  8  9 10       8  9 10 11 12 13 14       6  7  8  9 10 11 12
11 12 13 14 15 16 17      15 16 17 18 19 20 21      13 14 15 16 17 18 19
18 19 20 21 22 23 24      22 23 24 25 26 27 28      20 21 22 23 24 25 26
25 26 27 28 29 30 31      29 30                     27 28 29 30 31
"""

print("firstweekday()返回每周的起始日:",calendar.firstweekday())       # 输出 :0

print("isleap()返回是否是闰年:",calendar.isleap(2016), calendar.isleap(2017))    # True ,False

print("leapdays()返回两年之间的闰年总数:",calendar.leapdays(2000, 2013))   #  2000, 2004, 2008

print("month()返回某年某月的日历:",calendar.month(2021, 10))  # calendar.prmonth(2021, 10) 同样的效果
"""October 2021
Mo Tu We Th Fr Sa Su
             1  2  3
 4  5  6  7  8  9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
"""

print("calendar.monthcalendar()返回装着某年某月日历的二维列表:")
print(calendar.monthcalendar(2021, 1))

print("calendar.monthrange()返回包含了两个整数的元组,分别是某年某月第一天是周几,该月有多少天:")
print(calendar.monthrange(2021, 1)) # 返回(4, 31),4表示该月第一天为周五,31表示该月有31天

print("setfirstweekday()设置一周的起始日期码,默认一周第一天为0,即周一:")
calendar.setfirstweekday(1)
print(calendar.firstweekday())      # 返回1
print("weekday()返回某年某月某日是周几:",calendar.weekday(2021, 1, 25))        # 返回 :0

16.math

16.1 作用

可以对数值进行数学运算

16.2 导入

import math

16.3 常用方法及说明

方法

说明

math.cos()

求一个数值的余弦值

math.ceil()

向上取整

math.floor()

向下取整

math.fabs()

取绝对值,并用浮点数形式保存

math.factorial()

取阶乘

math.fmod()

取余运算

math.fsum()

求和

math.isnan()

判断是否是非数值

math.sqrt()

开根号

16.4 示例

import math


# 1.常量
print("返回PI的值:",math.pi)
print("返回e的值:",math.e)


# 2. 基本运算

print("次方运算:",math.pow(5, 2))       # 结果 : 25
print("开方运算:",math.sqrt(64))        # 结果 :8.0
print("对数运算:",math.log(100, 10))    # 结果 :2.0
print("返回已2为底x的对数:",math.log2(3))       # 结果 :1.584962500721156
print("返回以10为底x的对数:",math.log10(1000))  # 结果 :3.0
print("求和:",math.fsum([3,4,5]))       # 结果 : 12
print("取余运算:",math.fmod(8, 3))       # 结果 : 2.0
print("向上取整:",math.ceil(8.3))       # 结果 : 9
print("向下取整:",math.floor(8.3))       # 结果 : 8

17.uuid

17.1 作用

通用唯一识别码

17.2 导入

import uuid

17.3 常用方法及说明

方法

说明

uuid.uuid1()

从MAC地址,序列号和当前时间生成UUID

uuid.uuid3()

里面的namespace和具体的字符串都是我们指定的,使用MD5生成UUID

uuid.uuid4()

生成一个随机UUID

uuid.uuid5()

此方法和uuid3写法是一样的,只不过是使用sha1生成UUID

17.4 示例

import uuid


name = "python"
print(uuid.uuid1())
print(uuid.uuid5(uuid.NAMESPACE_URL,name))
print(uuid.uuid3(uuid.NAMESPACE_DNS,name))
print(uuid.uuid4())


#输出:
fd582a14-31a7-11ec-ace4-84c5a65bdcfd
344979f2-3e10-505c-89bf-2d5c0fefed8d
c9f8b609-b81e-3c95-8188-914324e741c8
c7e3d006-16ff-4110-8b70-7678feb36387

18.Queue

18.1 作用

提供了同步的、线程安全的队列类

18.2 导入

from queue import Queue

18.3 常用方法及说明

方法

说明

Queue.qsize()

返回队列的大小

Queue.empty()

如果队列为空,返回True,反之False

Queue.full()

如果队列满了,返回True,反之False,Queue.full 与 maxsize 大小对应

Queue.get([block[, timeout]])

获取队列,timeout等待时间

Queue.get_nowait()

相当于Queue.get(False),非阻塞方法

Queue.put(item)

写入队列,timeout等待时间

Queue.task_done()

在完成一项工作之后,Queue.task_done()函数向任务已经完成的队列发送一个信号。每个get()调用得到一个任务,接下来task_done()调用告诉队列该任务已经处理完毕。

Queue.join()

实际上意味着等到队列为空,再执行别的操作

18.4 示例

from queue import Queue


q = Queue(maxsize=5)

# 向队列写入元素
q.put('a')
q.put('b')
q.put('c')
q.put('d')
q.put('e')


print("返回队列的大小:",q.qsize())


if q.full():        # 判断队列是否满了
    for x in range(5):
        print(q.get())      # 获取元素
    else:
        print("为空判断:",q.empty())

19.logging

19.1 作用

提供日志的包

19.2 导入

import logging

19.3 常用方法及说明

方法

说明

logging.debug()

输出debug日志

logging.info()

输出info日志

logging.warning()

输出warning日志

logging.error()

输出error日志

logging.critical()

输出critical日志

logging.Logger.setLevel()

设置日志级别

logging.Logger.addHandler()

添加一个handler

logging.Logger.removeHandler()

删除一个handler

logging.Logger.addFilter()

添加过滤

logging.Handler.setLevel()

设置日志级别

logging.Handler.setFormatter()

设置日志格式化

19.4 示例

import  logging


# 创建日志对象,日志器
logger = logging.getLogger(__name__)

# 设置日志级别
logger.setLevel(level=logging.DEBUG)


# 设置日志输出文件
handler = logging.FileHandler('my.log')

# 设置日志格式,创建格式化器
formatter = logging.Formatter(
    fmt='%(asctime)s | %(levelname)s | %(name)s  | %(message)s',
    datefmt='%Y-%m-%d %H:%M:%S'
)

# 给文件对象设置格式化器
handler.setFormatter(formatter)

# 文件对象加入日志器
logger.addHandler(handler)


# 记录日志信息
logger.debug("debug日志")
logger.info("info日志")
logger.warning("warning日志")
logger.error("error日志")
logger.critical("critical日志")



#输出到文件的格式:
2021-10-20 22:47:39 | DEBUG | __main__  | debug日志
2021-10-20 22:47:39 | INFO | __main__  | info日志
2021-10-20 22:47:39 | WARNING | __main__  | warning日志
2021-10-20 22:47:39 | ERROR | __main__  | error日志
2021-10-20 22:47:39 | CRITICAL | __main__  | critical日志

20.copy

20.1 作用

拷贝数据类型

20.2 导入

import copy

20.3 常用方法及说明

方法

说明

copy.copy()

浅拷贝

copy.deepcopy()

深拷贝

20.4 示例

import copy


lst1 = ["a",1,["b",2]]

# 1.使用copy()进行浅拷贝。
lst2 = copy.copy(lst1)
lst3 = copy.deepcopy(lst1)

print("两个列表的值是否相等:",lst2 == lst3)       # 返回 :True
print("是否是同一对象:",lst2 is lst3)            # 返回 :False

lst1[2][0] = "c"

print(lst2)         # 返回: ['a', 1, ['c', 2]] ,和lst1的最新值保持一致
print(lst3)         # 返回: ['a', 1, ['b', 2]]  ,和lst1的原来值保持一致



相关推荐

恢复软件6款汇总推荐,帮你减轻数据恢复压力!

在当今数字化生活中,数据丢失的风险如影随形。无论是误删文件、硬盘故障,还是遭遇病毒攻击,丢失的数据都可能给我们带来不小的麻烦。此时,一款优秀的数据恢复软件就成为了挽救数据的关键。今天,为大家汇总推荐...

中兴星星一号刷回官方原版recovery的教程

【搞科技教程】中兴星星一号的官方recovery也来说一下了,因为之前给大家分享过了第三方的recovery了,之前给大家分享的第三方recovery也是采用一键刷入的方式,如果细心的朋友会发现,之前...

新玩机工具箱,Uotan柚坛工具箱软件体验

以前的手机系统功能比较单调,各厂商的重视程度不一样,所以喜欢玩机的朋友会解锁手机系统的读写权限,来进行刷机或者ROOT之类的操作,让使用体验更好。随着现在的手机系统越来越保守,以及自身功能的增强,...

三星g906k刷recovery教程_三星g906k中文recovery下载

【搞科技教程】看到有一些机友在找三星g906k的第三方recovery,下面就来说一下详细的recovery的刷入方法了,因为手机只有有了第三方的recovery之后才可以刷第三方的root包和系统包...

中兴星星2号刷recovery教程_星星二号中文recovery下载

【搞科技教程】咱们的中兴星星2手机也就是中兴星星二号手机的第三方recovery已经出来了,并且是中文版的,有了这个recovery之后,咱们的手机就可以轻松的刷第三方的系统包了,如果没有第三方的re...

数据恢复软件有哪些值得推荐?这 6 款亲测好用的工具汇总请收好!

在数字生活中,数据丢失的阴霾常常突如其来。无论是误删工作文档、格式化重要磁盘,还是遭遇系统崩溃,都可能让我们陷入焦虑。关键时刻,一款得力的数据恢复软件便是那根“救命稻草”。今天,为大家精心汇总6...

中兴u956刷入recovery的教程(中兴e5900刷机)

【搞科技教程】这次主要来给大家说说中兴u956手机如何刷入第三方的recovery,因为第三方的recovery工具是咱们刷第三方rom包的基础,可是很我欠却不会刷,所以太这里来给大家整理了一下详细的...

联想A850+刷recovery教程 联想A850+第三方recovery下载

【搞科技教程】联想A850+的第三方recovery出来了,这个第三方的recovery是非常的重要的,比如咱们的手机要刷第三方的系统包的时候,都是需要用到这个第三方的recovery的,在网上也是有...

工具侠重大更新 智能机上刷机一条龙完成

工具侠是针对玩机的机油开发的一款工具,不管是发烧级别的粉丝,还是普通小白用户,都可以在工具侠上找到你喜欢的工具应用。这不,最新的工具侠2.0.16版本,更新了专门为小白准备的刷机助手工具,以及MTK超...

shift+delete删除的文件找回6种硬盘数据恢复工具

硬盘作为电脑的重要存储设备,如同一个巨大的数字仓库,承载着我们日常工作、学习和生活中的各种文件,从珍贵的照片、重要的工作文档到喜爱的视频、音乐等,都依赖硬盘来安全存放。但有时,我们可能会不小心用sh...

使用vscode+Deepseek 实现AI编程 基于Cline和continue

尊敬的诸位!我是一名专注于嵌入式开发的物联网工程师。关注我,持续分享最新物联网与AI资讯和开发实战。期望与您携手探寻物联网与AI的无尽可能。这两天deepseek3.0上线,据说编程能力比肩Cl...

详解如何使用VSCode搭建TypeScript环境(适合小白)

搭建Javascript环境因为TypeScript不能直接在浏览器上运行。它需要编译器来编译并生成JavaScript文件。所以需要首先安装好javascript环境,可以参考文章:https://...

使用VSCode来书写你的Jupyter Notebooks

现在你可以在VScode里面来书写你的notebook了,使用起来十分的方便。下面来给大家演示一下环境的搭建。首先需要安装一个jupyter的包,使用下面的命令安装:pip3install-ih...

使用VSCode模板提高Vue开发效率(vscode开发vue插件)

安装VSCode安装Vetur和VueHelper插件,安装完成后需要重启VScode。在扩展插件搜索框中找到如下Vetur和VueHelper两个插件,注意看图标。添加Vue模板打...

干货!VsCode接入DeepSeek实现AI编程的5种主流插件详解

AI大模型对编程的影响非常之大,可以说首当其冲,Cursor等对话式编程工具渐渐渗透到开发者的工作中,作为AI编程的明星产品,Cursor虽然好用,但是贵啊,所以咱们得找平替,最好免费那种。俗话说,不...