当前位置: 首页 > news >正文

Python 常用内置函数

目录

1、enumerate函数

1.1、for循环中使用

1.2、enumerate指定索引的起始值

1.3、enumerate在线程中的作用

2、Map 函数

2.1、map()函数可以传多个迭代器对象

3、lambda表达式(匿名函数)

示例

4、sort函数和sorted函数

4.1、sort()函数

4.2、sorted函数

4.3、关键字参数key的使用

4.3.1. 使用内置函数作为key

4.3.2. 使用lambda函数作为key

4.3.3、 多级排序

5、filter函数

6、 eval和exec函数

6.1、eval() 函数

6.2、exec() 函数

7、repr函数

7.1、str()和repr()区别

7.1、'!s' ,'!r' 和 '!a' 的使用

8、join函数

1、enumerate函数

功能:用于同时遍历数据对象的索引和值。它常用于迭代序列类型(如列表、元组、字符串等),返回的是一个包含索引和值的元组。

作用:

  • 简化代码:避免手动追踪和维护索引变量,使代码更简洁和易读。
  • 同时获取索引和值:方便在迭代过程中获取元素的索引,特别适用于需要索引信息的情况。
  • 灵活设置起始索引:通过 start 参数可以设置起始索引值,便于与其他代码或计算习惯对齐。

1.1、for循环中使用

dict = [{"name":"Hello", "age":18}, {"name":"Tom", "age":24}, {"name":"Cat", "age":28}]
for index,t in enumerate(dict):
print (index, t)

1.2、enumerate指定索引的起始值

dict = [{"name":"Hello", "age":18}, {"name":"Tom", "age":24}, {"name":"Cat", "age":28}]
for index,t in enumerate(dict, 1):print (index, t)

1.3、enumerate在线程中的作用

  • 1、threading.enumerate(): 返回一个包含正在运行的线程的list。
  • 2、正在运行指线程启动后、结束前,不包括启动前和终止后的线程。
  • 3、返回一个list类型,通过这个list类型我们就可以得知,目前线程数量的多少。
import threadingdef task():time.sleep(3)print("this is task")if __name__ == '__main__':t1 = threading.Thread(target=task)t2 = threading.Thread(target=task)t1.start()t2.start()for i, thread in enumerate(threading.enumerate()):print(f"Thread {i}: {thread.name}")t1.join()t2.join()

2、Map 函数

功能:map 函数用于将指定函数应用于可迭代对象(如列表)的每个元素,并返回一个迭代器,其中包含应用函数后的结果。

语法:map(func, *iterables)

作用:

  • map 返回一个迭代器,支持惰性计算,避免了不必要的内存占用,尤其是对于大型数据集

示例:

t = ['1', '2', '3', '4', '5', '6']
print(t)
res = map(lambda x: int(x) * int(x), t)
for i in res:print(i, end=' ')
print()
# 此时迭代器中数据已为空
print(list(res))

2.1、map()函数可以传多个迭代器对象

  • map 函数会将提供的函数应用于来自多个可迭代对象的对应元素,直到其中一个可迭代对象耗尽为止

示例:

list1 = [1, 2, 3, 4, 5]
list2 = [1, 2, 3, 4, 5, 6]
list3 = [1, 2, 3, 4, 5, 6, 7]def func(x, y, z):return x, y, z
# 此处的map函数传入了多个迭代器对象
res = map(func, list1, list2, list3)
# 因为 list1 的长度最短,所以 map 会在 list1 长度的限制下进行映射,即到 list1 的最后一个元素为止
print(list(res))

3、lambda表达式(匿名函数)

Lambda表达式,也称为匿名函数,是Python等编程语言中一种快速定义单行的小函数的方法。使用lambda表达式可以写出更简洁、更清晰的代码,尤其是在需要使用函数对象的场合。Lambda表达式的基本语法如下:

lambda 参数列表: 表达式
  • 这里的“参数列表”是传入函数的参数,它们可以是多个,用逗号分隔。
  • 而“表达式”是关于参数的某种运算,其运算结果就是这个函数的返回值。
  • 注意,lambda表达式不需要写return,表达式的计算结果会自动成为这个函数的返回值。

示例

  • 1、简单的lambda表达式
# 使用lambda表达式定义一个简单的加法函数  
add = lambda x, y: x + y  # 调用这个函数  
print(add(3, 5))  # 输出8
  • 2、结合map()函数使用
# 使用lambda表达式和map()函数将列表中的每个元素乘以2  
numbers = [1, 2, 3, 4]  
doubled = map(lambda x: x * 2, numbers)  # 将map对象转换为列表  
doubled_list = list(doubled)  
print(doubled_list)  # 输出[2, 4, 6, 8]
  • 3、结合filter()函数使用:
# 使用lambda表达式和filter()函数过滤出列表中的偶数  
numbers = [1, 2, 3, 4, 5, 6]  
even_numbers = filter(lambda x: x % 2 == 0, numbers)  # 将filter对象转换为列表  
even_numbers_list = list(even_numbers)  
print(even_numbers_list)  # 输出[2, 4, 6]

4、sort函数和sorted函数

4.1、sort()函数

  • 使用对象:sort()是列表(list)对象的一个方法,只能用于列表的排序。
  • 排序方式:sort()方法默认在原列表上进行排序,也就是说,它会改变原列表的元素顺序。
  • 返回值:sort()方法没有返回值,或者说返回值是None。排序结果直接体现在原列表上。
  • 参数:sort()方法接受两个可选的关键字参数key和reverse。key用于指定一个从列表中每个元素提取比较键的函数,reverse用于指定排序顺序(默认为False,即升序;如果为True,则为降序)。

示例:

numbers = [3, 2, 8, 5, 1]  
numbers.sort()  # 默认升序排序  
print(numbers)  # 输出: [1, 2, 3, 5, 8]  numbers.sort(reverse=True)  # 降序排序  
print(numbers)  # 输出: [8, 5, 3, 2, 1]

4.2、sorted函数

  • 使用对象:sorted()是Python的内建函数,可以对任何可迭代对象进行排序,包括列表、元组、字典等。排序后的结果是一个新的列表,原可迭代对象的顺序不会被改变。
  • 排序方式:sorted()函数返回一个新的排序后的列表,原可迭代对象保持不变。
  • 返回值:sorted()函数返回一个新的排序后的列表。
  • 参数:与sort()方法类似,sorted()函数也接受key和reverse作为关键字参数,用于指定排序的依据和顺序。

示例:

numbers = [3, 2, 8, 5, 1]  
sorted_numbers = sorted(numbers)  # 默认升序排序,返回新列表  
print(sorted_numbers)  # 输出: [1, 2, 3, 5, 8]  
print(numbers)  # 输出: [3, 2, 8, 5, 1],原列表不变  sorted_numbers_desc = sorted(numbers, reverse=True)  # 降序排序  
print(sorted_numbers_desc)  # 输出: [8, 5, 3, 2, 1]

4.3、关键字参数key的使用

4.3.1. 使用内置函数作为key

示例1:按字符串长度排序

words = ['banana', 'apple', 'cherry', 'date']  
words.sort(key=len)  
print(words)  # 输出: ['date', 'apple', 'cherry', 'banana']  # 或者使用sorted()函数,不会改变原列表  
sorted_words = sorted(words, key=len)  
print(sorted_words)  # 输出: ['date', 'apple', 'cherry', 'banana']

示例2:按数字大小排序(字符串形式的数字)

numbers_str = ['10', '3', '22', '1']  
numbers_str.sort(key=int)  
print(numbers_str)  # 输出: ['1', '3', '10', '22']  # 或者使用sorted()函数  
sorted_numbers_str = sorted(numbers_str, key=int)  
print(sorted_numbers_str)  # 输出: ['1', '3', '10', '22']

4.3.2. 使用lambda函数作为key

lambda函数提供了一种快速定义单行小函数的方法,非常适合作为key参数的值。

示例1:按元组中某个元素排序

tuples = [(1, 'apple'), (3, 'banana'), (2, 'cherry')]  
tuples.sort(key=lambda x: x[0])  # 按元组的第一个元素排序  
print(tuples)  # 输出: [(1, 'apple'), (2, 'cherry'), (3, 'banana')]  # 或者按照元组的第二个元素排序  
tuples.sort(key=lambda x: x[1])  
print(tuples)  # 输出: [(1, 'apple'), (3, 'banana'), (2, 'cherry')]

示例2:按字典中的某个值排序

students = [{'name': 'Alice', 'age': 22}, {'name': 'Bob', 'age': 20}, {'name': 'Charlie', 'age': 23}]  
students.sort(key=lambda x: x['age'])  # 按字典中的'age'值排序  
print(students)  
# 输出: [{'name': 'Bob', 'age': 20}, {'name': 'Alice', 'age': 22}, {'name': 'Charlie', 'age': 23}]

4.3.3、 多级排序

示例1:先按年龄,再按姓名排序

students = [{'name': 'Alice', 'age': 22}, {'name': 'Bob', 'age': 20}, {'name': 'Alice', 'age': 21}]  
students.sort(key=lambda x: (x['age'], x['name']))  
print(students)  
# 输出: [{'name': 'Bob', 'age': 20}, {'name': 'Alice', 'age': 21}, {'name': 'Alice', 'age': 22}]

5、filter函数

功能:filter函数是Python中的一个内置函数,用于过滤序列,过滤掉那些不符合条件的元素,返回一个迭代器。如果序列中的元素符合某个条件(即函数返回True),则保留这个元素,否则过滤掉。

filter函数的基本语法如下:

filter(function, iterable)
  • function:判断函数。用于判断序列中的元素是否符合某种条件,如果符合条件则返回True,否则返回False。如果function为None,那么会直接返回iterable中的所有真值元素。
  • iterable:一个序列,可以是列表、元组、字符串等可迭代对象。

返回值是一个迭代器,包含了所有符合条件(使判断函数返回True)的元素。

示例

# 使用filter函数过滤掉列表中的所有偶数  
def is_odd(n):  return n % 2 == 1  numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]  
filtered_numbers = filter(is_odd, numbers)  print(list(filtered_numbers))  
# 输出: [1, 3, 5, 7, 9]

6、 eval和exec函数

在Python中,eval()exec()是两个功能强大的内置函数,它们都能够执行字符串形式的Python代码,但它们在用法和返回值方面存在显著差异。

常见用途:将字符串转成相应的对象,例如 string 转成 list ,string 转成 dict,string 转 tuple 等等。

6.1、eval() 函数

eval()函数用于执行一个字符串表达式,并返回表达式的值。其基本语法如下:

eval(expression, globals=None, locals=None)
  • expression:必需的参数,表示要计算的Python表达式,以字符串形式给出。
  • globals:可选参数,一个字典,用于定义全局变量。如果未提供,则使用当前的全局命名空间。
  • locals:可选参数,一个字典,用于定义局部变量。如果未提供,则默认使用globals参数。

示例:

x = 1  
result = eval('x + 1')  
print(result)  # 输出: 2  # 使用 globals 参数  
result = eval('x + y', {'x': 1, 'y': 2})  
print(result)  # 输出: 3  # 处理复杂表达式  
result = eval('[x**2 for x in range(5)]')  
print(result)  # 输出: [0, 1, 4, 9, 16]

注意事项:

  • eval()只能执行单个表达式,并返回表达式的值;不支持复杂的代码逻辑,例如赋值操作、循环语句等等。
  • 由于eval()可以执行任意代码,因此存在安全风险,特别是当执行的代码来源于不受信任的来源时。

6.2、exec() 函数

exec()函数用于动态执行Python代码。与eval()不同,exec()可以执行更复杂的代码块,包括多行代码、声明和控制流语句,但它不返回任何值(即返回值为None)。其基本语法如下:

exec(source, globals=None, locals=None)
  • source:必需的参数,表示要执行的Python代码,可以是字符串或编译后的代码对象。
  • globals和locals:与eval()函数相同,分别用于定义全局和局部命名空间。
exec("print('Hello, world!')")  # 输出: Hello, world!  # 动态生成变量  
exec("a = 10")  
print(a)  # 输出: 10  # 执行复杂代码块  
code = """  
def greet(name):  return f"Hello, {name}!"  result = greet("Alice")  
print(result)  
"""  
exec(code)  # 输出: Hello, Alice!

注意事项:

  • exec()可以执行任意代码,因此同样存在安全风险。
  • 使用exec()时,应尽量避免执行不受信任的代码,或明确指定globals和locals参数以限制作用域。比如下面的代码,就禁用了内置模块:
s = {'__builtins__': None}
eval("__import__('os').system('whoami')", s)

7、repr函数

7.1、str()和repr()区别

在 Python 中要将某一类型的变量或者常量转换为字符串对象通常有两种方法,即str() 或者 repr() 。自定义对象输出格式需要重写函数__repr__。

str()和repr()区别:

  • 1、函数str( )将其转化成为适于人阅读的前端样式文本,面向用户
  • 2、函数repr(object)将对象转化为供解释器读取的形式,面向程序员,返回一个对象的 string 格式,并且可以通过eval函数还原为原来的对象。
  • 3、如果两个都重写,那么则优先调用__str__;只重写__repr__,则只调用__repr__

示例:

示例:s = 'python'
a = str(s)
b = repr(s)print(a)
print(b)
print(type(a))
print(type(b))
print(eval(b))print("-" * 100)print(a == b)

运行结果:

注意:

  1. 对于字符串类型,repr转换后外层会多一对引号,对于int类型转换为字符串类型不会。
  2. 命令行下直接输出对象调用的是对象的repr方法,而print输出调用的是str方法

7.1、'!s' ,'!r' 和 '!a' 的使用

示例:

def __repr__(self):return f"user={self.user!r}, variant={self.variant!r}"result  = func(*args, **kwargs)
print(f" {func.__name__!r} returned {result!r}")

说明:

  • 默认情况下,f 字符串显示对花括号内的值调用str的结果。指定!r显示调用repr的结果。
  • 转换字段在格式化之前会导致类型强制。通常,格式化值的工作是由值本身的format () 方法完成的。但是,在某些情况下,需要强制将类型格式化为字符串,覆盖其自己的格式化定义。通过在调用format ()之前将值转换为字符串,绕过了正常的格式化逻辑。
  • 当前支持三种转换标志:'!s' 调用 str() 值,'!r' 调用 repr() 和 '!a' 调用 ascii()。

8、join函数

它的主要作用是将一个字符串列表(或数组)中的所有元素连接成一个单独的字符串,元素之间可以插入一个指定的分隔符。这个函数在处理文本、生成文件路径或URL时非常有用。

示例:

在Python中,join是一个字符串方法,用于将序列(如列表)中的元素以指定的字符(或字符串)连接生成一个新的字符串。

separator = ", "  
words = ["Hello", "world", "Python"]  
sentence = separator.join(words)  
print(sentence)  # 输出: Hello, world, Python

注意:分割对象储存的对象要为字符串,否则会报错

问题:如果储存非字符串的元组、列表、字典等拼接时报错,比如元组储存数字进行连接,则会报错

示例:

a = (1,2,3) #定义元组a
';'.join(a)#报错:TypeError: sequence item 0: expected str instance, int found

解决方案:要将数字连接起来成为一个字符串,则结合for循环语句并将数字转为字符串再连接起来

a = (1,2,3) #定义元组a
';'.join(a)#报错:TypeError: sequence item 0: expected str instance, int foundb = (186234,1385475,1235462)
';'.join(str(i) for i in b)# 输出结果为:186234;1385475;1235462#调用set函数去重处理
e = (1,2,3,2) #定义元组a
'、'.join(str(i) for i in set(e))# 输出结果为:1、2、3

相关文章:

Python 常用内置函数

目录 1、enumerate函数 1.1、for循环中使用 1.2、enumerate指定索引的起始值 1.3、enumerate在线程中的作用 2、Map 函数 2.1、map()函数可以传多个迭代器对象 3、lambda表达式(匿名函数) 示例 4、sort函数和sorted函数 4.1、sort()函数 4.2、…...

什么是大数据?

1. 大数据定义 大数据到底是什么? 大数据的定义是数据种类更多、数量更多、速度更快。这也被称为三个“V”。 简单来说,大数据是更大、更复杂的数据集,尤其是来自新数据源的数据集。这些数据集非常庞大,传统数据处理软件根本无…...

Linux 内核源码分析---资源分配及系统总线

资源管理 Linux提供通用的构架,用于在内存中构建数据结构。这些结构描述了系统中可用的资源,使得内核代码能够管理和分配资源。 其中关键的数据结构resource如下: 用于连接parent, child, sibling成员规则如下: 1、每个子结点只…...

C# POST请求 各种实现方法梳理

目录 1.首先是基础的参数 2.使用RestClient 3.使用封装库 4.使用微软原生库进行请求 5.使用HttpClient进行请求 C#代码中,实现Http/Https 中的POST请求,可以有很多种方式,下面就梳理下我常用的几种方式,给大家借鉴 1.首先…...

《MySQL数据库》数据导入、导出、表处理—/—<4>

一、插入数据 1、可使用外部工具navicat导入数据的情况下 因为部分公司不允许使用外部工具去导入数据 对于大批量数据,除了上节课中使用导入向导插入数据,也可在vscode中打开csv文件,然后选中光标,长按shiftctrl,拖动…...

Java I/O (Input/Output)——文件字节流

博客主页:誓则盟约系列专栏:Java SE 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Java I/O 简介 Java I/O(输入/输出)是 Java 程序中…...

VisionPro二次开发学习笔记4-使用C#创建绘图图形

VisionPro提供了许多可以添加到CogDisplay的基本形状,例如CogCircle,CogRectangle,CogEllipse和CogRectangleAffine。这些形状可以是用户可以用鼠标操作的交互式图形,也可以是用户无法更改的静态形状。 若要在CogDisplay控件上绘…...

【langchain学习】使用JsonOutputParser让大模型生成结构化JSON数据

使用Langchain处理结构化数据,以JsonOutputParser为例。以下是具体步骤和代码示例: 导入所需库: from config import llm from langchain_core.output_parsers import JsonOutputParser from langchain_core.prompts import PromptTemplate f…...

【学习笔记】Matlab和python双语言的学习(最大最小化规划)

文章目录 前言一、最大最小化规划二、选址问题三、代码实现----Matlab1.Matlab 的 fminimax 函数2.Matlab 代码 四、代码实现----python总结 前言 通过模型算法,熟练对Matlab和python的应用。 学习视频链接: https://www.bilibili.com/video/BV1EK41187…...

基于SpringBoot的Redis开发实战教程

配置和集成缓存涉及多个步骤,从选择适当的缓存技术到实现缓存的存取操作。以下是具体的步骤和示例,假设我们使用Redis作为缓存工具,并基于Spring Boot进行开发。 1. 选择和配置缓存技术 a. 选择缓存工具 Redis 是一个流行的内存数据结构存…...

mysql 分区操作

1。新建分区 mysql 没有全局唯一索引,因此所有涉及唯一索引的都需要加上分区键,因此要做好权衡,键分区不一定能提高效率哦,建分区的主要目的是为了分区查询和删除数据 --将CREATE_TIME 加入主键 ALTER TABLE your_table DROP PR…...

[网鼎杯 2018]Comment

使用环境为https://adworld.xctf.org.cn/challenges,搜索题目[网鼎杯 2018]Comment。 进入环境,发现为一个留言板,点击发帖试试。 尝试发帖 跳转到登录页面,根据提示使用burp进行暴力破解。 发现payload为666时状态码不同。 尝试…...

LVS详解

目录 一、LVS简介 LVS 官网: 二、LVS 负载均衡模式 2.1 LVS-NAT模式: 2.1.1 简介 2.1.2 工作流程图: 2.1.3 说明: 2.1.4 LVS-NAT的优缺点: 2.2 LVS-DR模式: 2.2.1 简介 2.2.2 工作原理: 2.2.3 工作…...

Yolo-World初步使用

Yolo v8目前已经支持Yolo-World,整理一下初步使用步骤。 使用步骤 1 先下载Yolo-World的pt文件,下载地址:GitHub - AILab-CVC/YOLO-World: [CVPR 2024] Real-Time Open-Vocabulary Object Detection 官网应该是点这里(有个笑脸…...

Navicat Premium使用

文章目录 Navicat Premium 16的使用连接MySQL建立数据库并构建表导入数据 Navicat Premium 16是一款功能强大的数据库管理工具,它允许用户从单一应用程序中同时连接多种数据库,提供了极其便捷和高效的管理和开发环境,对于 MySQL 用户来说&…...

LLC数字控制TMS320F28034,4-DSP的epwm配置介绍

LLC数字控制TMS320F28034,4-DSP的epwm配置介绍 1 TMS320F280341.1 概述1.2 PWM详细介绍 2 TMS320F28034 PWM功能框图2.1 ePWM功能模块2.2 ePWM功能寄存器框图 3 TMS320F28034 PWM初始化流程4 结合项目设计5 代码设计5.1 PWM初始化程序5.2 工程代码 6 总结 配套代码示…...

MongoDB学习记录

1、初识Mongo 概述:与关系型数据库不同,MongoDB 的数据以类似于 JSON 格式的二进制文档存储,通常称这种格式为Bson,Bson不仅支持JSON中已有的数据类型,还增加了一些额外的数据类型,例如日期和二进制数据&a…...

vlunstack-2(复现红日安全-ATT CK实战)

环境搭建 配置信息 DC IP:10.10.10.10 OS:Windows 2012(64) 应用:AD域 WEB IP1:10.10.10.80 IP2:192.168.47.131 OS:Windows 2008(64) 应用:Weblogic 10.3.6MSSQL 2008 PC IP1:10.10…...

【生信入门】预览快速体验Linux-重生之小明闯Linux

生信少走弯路,快试试生信云专用服务器。新用户注册免费体验5小时。https://www.tebteb.cc 一.故事 小明的Linux冒险 在一片混沌的黑暗中,小明睁开了眼睛。他感到头痛欲裂,四周一片漆黑,只有一行闪烁的字符映入眼帘: [xiaomingu…...

用.net core简易搭建webapi托管到IIS

1、从官网下载.NET Core 托管捆绑包 https://learn.microsoft.com/zh-cn/aspnet/core/tutorials/publish-to-iis?viewaspnetcore-8.0&tabsvisual-studio 2、新建ASP.NET Core WEB API项目 新建控制器TestController并生成GetInfo方法 3、发布 目标路径选择 2)显示所有…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

基于FPGA的PID算法学习———实现PID比例控制算法

基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

基于PHP的连锁酒店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...

Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案

在大数据时代,海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构,在处理大规模数据抓取任务时展现出强大的能力。然而,随着业务规模的不断扩大和数据抓取需求的日益复杂,传统…...