Python的发展历程
- 发明者:
来自罗森的Guido
一个学霸-阿姆斯特丹大学获得数学和计算机科学硕士学位
致力于打造解放程序员的语言
-
发展历程
Python应用领域
- 自动化办公:提升我们的工作效率,解放双手
- 爬虫:爬取大量数据集
- 数据分析:数据可视化
- 大数据:大数据应用,应用推荐
- 全栈Web项目:产品开发
- AI:人工智能主开发语言
应用AI,学习Python的重要性
- Python是机器学习和深度学习领域最受欢迎的语言之一
- 通过学习Python,你可以使用各种强大的库和工具来构建和训练机器学习模型
- Python拥有广泛的数据分析库和工具,如Pandas、NumPy、Matplotlib等
- 使用Python可以方便地对大量数据进行处理、分析和可视化,从而提取有价值的信息并做出决策
- 可以更快地实现和优化算法,并且代码更容易在不同的平台和环境中移植和部署
- Python可以通过使用多线程和并行化等技术来处理大规模的数据,这对于大模型训练来说是非常重要的
Python环境的搭建
- 下载安装包:https://www.python.org/downloads/
- 安装完后,在终端输入
python --version
,通过查看安装的版本号的来检测是否安装成功。
Python编辑器安装
-
VSCode安装:https://code.visualstudio.com/
安装Python插件: -
PyCharm安装:https://www.jetbrains.com/pycharm/
pip包管理工具
- pip是Python的包管理工具,用于安装、卸载、升级和管理Python包。
- pip是Python标准库之外的一个第三方工具,可以从Python Package Index (PyPl)下载和安装各种Python包和依赖项。
- pip官网地址:https://pypi.org/project/pip/
说明:
pip不用单独安装,是随着python一起安装,查看pip版本号:pip --version
如果发现pip不可用或损坏,则直接执行下面的命令就可以:python -m ensurepip --upgrade
pip常用命令
pip install package_name
: 安装指定的Python包或库,将包的文件复制到Python解释器的site-packages目录下。
pip uninstall package_name
:卸载指定的Python包或库,从Python解释器的site-packages目录下删除该包的文件。
pip list
:列出当前Python环境中已安装的所有包或库的列表。
apple@appleMacBook-Pro ~ % pip list
Package Version
------------------ ---------
aiohttp 3.8.4
aiosignal 1.3.1
async-timeout 4.0.2
attrs 23.1.0
certifi 2022.12.7
charset-normalizer 3.1.0
frozenlist 1.3.3
idna 3.4
multidict 6.0.4
openai 0.27.6
pip 23.3.2
requests 2.29.0
setuptools 56.0.0
tqdm 4.65.0
urllib3 1.26.15
wheel 0.40.0
yarl 1.9.2
pip show package_name
: 显示指定包的详细信息,包括包的名称、版本号、安装路径等。
pip search package_name
: 在PyPI (Python Package Indlex)上搜索指定的包或库,并显示相关信息。
pip freeze
:显示当的Python环境中已安装的所有包的名称和版本号。
pip install -rrequirements-txt
:根据requirements.txt文件中列出的依赖项列表,安装指定版本的Python包或库。
pip install package_name[dependencies]
:一个包可能依赖于其他包。要安装一个包及其依赖项。
如:假设我们有一个名为"my_math_package"的Python包,它依赖于nurpy和scipy库。我们想要安装这个包,并确保同时安装这两个依赖项。
pip install my_math_package[numpy,scipy]
pip wheel package_name
:将指定的Python包或库打包成wheel文件,以便在其他Python环境中使用。
使用pip将名为"numpy’的Python库打包成wheel文件 (Python的分布式的文件格式,替代Python传统的egg文件)。pip wheel numpy
Python工程应用
1. 字符串
- 普通字符串:使用单引号(')或双引号(")括起来的字符串,例如:‘hello’,“hello”
- 原始字符串:原始字符串是一种特殊类型的字符串,在字符串中不会将反斜杠(\)视为转义字符,而是作为普通字符原样输出。
# 1.普通字符串,\n是转义字符会换行
print('hello\nworld!')
# 2.原始字符串。在Python中,r表示原始字符串(raw string)
print(r'hello\nworld!') // 原始字符串,原样输出
# 3.三引号字符串/文档字符串:使用三个引号(单引号/双引号)括起来的字符串,可以包含多行文本
print('''Hello
World!
Python'''
)
# 4.格式化字符串(使用大写的'F'或者'f'作为字符串的前缀)
for i in range(5):
print(f'第{i + 1}个数字是{i}')
- Unicode字符串和字节串
Unicode字符串通常用于表示包含非ASCII字符的字符串,比如包含中文字符或特殊符号的文本。在Python中,Unicode字符串通常以 u 或 u" 作为前缀,Unicode字符串表示的是字符本身,而不是它们的编码形式。 - 字节串(用于表示二进制数据)
字节串(Byte String)是一种特殊的数据类型,用于表示二进制数据。字节串以b或bytes作为前缀,并且包含了一串字符的ASCII码表示。每个字符都是一个字节,因此字节串可以包含多个字节。
# codecs是Python的一个标准库,它提供了对各种字符编码的读取和写入操作的支持。
import codecs # Unicode字符串转译
# Unicode字符串:定义一个包含中文字符的Unicode字符串
text = u'hello,Python!'
# 打印该字符串
print(text)
# 字节串
byte_string = b'Hello, World!'
# 打印字节串
print(byte_string)
# 将字节串转换为字符串(需要解码)
string = byte_string.decode('utf-8')
print(string)
# 将字符串转换为字节串(需要编码)
byte_string = string.encode('utf-8')
print(byte_string)
# 将该字符串写入文件
with codecs.open('output.txt', 'w', encoding='utf-8') as file:
file.write(text)
length = len('abcde') # 获取字符串长度
在字符串定义方式上的区别
语言 | 字符串定义方式上的区别 |
---|---|
Python | 使用单引号(‘’)或双引号(“”)来表示一个字符串,也可以用三引号来表示一个多行字符串 |
Java | 使用char表示单个字符,String表示一个字符串,常量字符或字符串用双引号""表示 |
JavaScript | 也使用单引号(‘’)或双引号(“”)来表示一个字符串,同时也可以使用反斜杠(\)来表示一个字符串的续行。 |
2.Python文档化
# Python文档化:相当于多行注释,使用三个双引号(""")
class Person:
"""
表示一个人的类
属性:
name -- 姓名
age -- 年龄
方法:
say_hello -- 打印问候语
"""
def __init__(self, name, age) -> None:
self.name = name
self.age = age
def say_hello(self):
print('Hello, my name is ' + self.name)
def getInfo(name):
return '姓名:' + name
# 变量类型注解(即指定方法参数是字符串类型)
def getInfo1(name: str):
return '姓名:' + name
# 函数返回值类型注解(即指定方法返回值是字符串类型)
def getInf2(name: str) -> str:
return '姓名:' + name
3.异常处理语句
# Python中的异常处理语句
try:
# 要执行的代码
except ExceptionType:
# 当异常发生时执行的代码
finally:
# 无论是否发生异常都会执行的代码
4.文件I/O应用
# 写入文件操作
with open('test.txt', 'w') as f:
f.write('Hello, world!\n')
f.write('Hello, world!')
# 读取文件操作
with open('test.txt', 'r') as f:
content = f.read()
print(content) # str类型
# 关闭文件(说明:使用了with语句时,会自动处理文件的关闭操作,无需再使用下面代码手动关闭)
# f.close()
5.JSON应用
import json
# dict类型(Python对象)
data = {
"name": "Tom",
"age": 25,
"hobbies": ["阅读", "游泳", "旅游"]
}
# json.dumps() 将字典转换为JSON字符串
json_str = json.dumps(data)
print(json_str)
print(type(json_str)) # 打印值的类型。输出结果:<class 'str'> 表示是字符串类型
# 写入文件操作(写入Python对象)
with open('data.json', 'w') as f:
# json.dump() 将Python对象写入JSON文件
json.dump(data, f)
# 读取文件操作
with open('data.json', 'r') as f:
# 加载JSON文件
data = json.load(f)
print(data) # dict类型
Python爬虫
1.什么是爬虫
通俗的讲:就是模拟浏览器抓取数据
科学的讲:通过一定的规则用程序对互联网相关数据解析并存储
2.urllib库
# urllib库:用于操作网页URL,并对网页的内容进行抓取处理
# urllib.request: 打开和读取URL
# urllib.request.urlopen(): 打开一个URL
from urllib.request import urlopen
url = 'http://baidu.com'
con = urlopen(url)
# 读取网页的内容
bytes_data = con.read()
print(bytes_data)
f = open('test.html', 'wb')
f.write(bytes_data)
f.close()
# open(name, mode)方法
# 核心:创建一个file对象 python的I/O;name是要访问的文件名,mode是决定打开的模式
# mode: w表示写入;wb表示以二进制格式写入;
3.requests库
import requests
import json
# 封装百度翻译请求
def baiduFanyi(keyword):
url = 'https://fanyi.baidu.com/sug'
params = {
'kw': keyword
}
response = requests.post(url, params)
res_str = response.text # 获取JSON字符串
res_dic = response.json() # 获取JSON对象(字典)
print('请求结果:', res_dic)
# JSON字符串 转 字典
# res_dic = json.loads(res_str)
errno = res_dic['errno']
dataList = res_dic['data']
if (errno == 0):
length = len(dataList)
for i in range(length):
item = dataList[i]
value = item['v']
print('第' + str(i + 1) + '项解释:' + value)
"""
for item in dataList:
value = item['v']
print(value)
"""
# 测试翻译方法
def testBaiduFanyi():
searchText = input('请输出要翻译的词:')
baiduFanyi(searchText)
# Python属于脚本语言,不像编译型语言那样先将程序编译成二进制再运行,而是动态的逐行解释运行。也就是从脚本第一行开始运行,没有统一的入口(即main函数)。
# __name__ 是内置变量,用于表示当前模块的名字;
# if __name__ == '__main__' 就相当于是 Python 模拟的程序入口。其作用是:
# 1.当python文件直接被运行时,if __name__ == '__main__': 语句下面的代码段将被执行。
# 2.当python文件以模块形式被调用时,if __name__ == '__main__': 语句下面的代码段不会被执行。
if __name__ == "__main__":
testBaiduFanyi()
- 运行结果:
请输出要翻译的词:你好
请求结果: {'errno': 0, 'data': [{'k': '你好', 'v': 'hello; hi; How do you do!'}, {'k': '你好吗', 'v': 'How do you do?'}, {'k': '你好,陌生人', 'v': '[电影]Hello Stranger'}], 'logid': 1410962127}
第1项解释:hello; hi; How do you do!
第2项解释:How do you do?
第3项解释:[电影]Hello Stranger
字符串处理
- 字符串高频处理方法
方法 | 用途 |
---|---|
split() | 按照指定的分隔符将字符串分割成一个列表 |
strip() | 删除字符串头尾指定的字符(默认为空格),返回新的字符串 |
replace() | 替换字符串中的指定内容为新的字符串,并返回新的字符串 |
find() | 查找指定内容在字符串中出现的位置(索引号),若未找到则返回-1 |
lower() | 将字符串中的字母全部转换为小写,并返回新的字符串。 |
upper() | 将字符串中的字母全部转换为大写,并返回新的字符串。 |
index() | 查找指定内容在字符串中出现的第一个位置(索引号),若未找到则报错。 |
capitalize() | 将字符串的第一个字母大写,其余字母小写,并返回新的字符串。 |
title() | 将字符串中每个单词的第一个字母大写,其余字母小写,并返回新的字符串。 |
dotenv的使用
做配置文件的管理,python-dotenv是一个Python库,可以从.env文件(配置文件)中读取环境变量。
作用:可以将敏感信息(如:API秘钥)存储在环境变量中,而不是硬编码在代码中,可以有效保护敏感信息安全。
如何使用 python-dotenv
- 安装 python-dotenv 库:终端运行命令
pip install python-dotenv
- 创建.env文件:在项目根目录下创建一个名为
.env
的文件,并将环境变量写入该文件中,每个key=value对应一行。
# .env文件的内容
# MySQL数据库
DATABASE_HOST=localhost
DATABASE_NAME=mydatabase
DATABASE_USER=myuser
DATABASE_PASSWORD=mypasswprd
# 私有KEY
SECRET_KEY=mysecretkey
#sk-xxx 使用你自己的 key 替换
OPENAI_API_KEY="sk-xxx"
OPENAI_API_BASE="https://api.fe8.cn/v1"
- 将.env文件中的变量加载到系统环境变量中
from dotenv import load_dotenv
import os
# 使用该函数将.env文件中的所有变量读取到系统环境变量中,方便在程序中使用这些变量
load_dotenv()
# 访问环境变量
SECRET_KEY = os.getenv("SECRET_KEY")
DATABASE_PASSWORD = os.getenv("DATABASE_PASSWORD")
FastAPI的使用
FastApi 用于构建API,是一个现代、快速(高性能)的 Python web 框架。
官方地址:https://fastapi.tiangolo.com/
如何使用FastAPI
- 安装FastAPI:终端命令
pip install fastapi
- 对于生产环境,还需要一个ASGI服务器,如Uvicorn或Hypercorn
安装Uvicorn,执行命令:pip install “uvicorn[standard]”
- 新建一个main.py文件,内容如下:
from fastapi import FastAPI
# 创建API实例
app = FastAPI()
# async def是定义异步函数的方法
# 127.0.0.1/
# 跟路由,设置接口的路由
@app.get("/")
# root 是接口方法名称
async def root():
return {"message": "Hello World"}
- 项目启动命令(在项目文件目录下,执行下面命令)
uvicorn main:app --reload
main是文件名(main.py);
app是文件内创建API实例;
–reload 重新启动服务器(仅用于开发)
- 运行结果:
zhangsan@zhangsan PythonProject % uvicorn main:app --reload
INFO: Will watch for changes in these directories: ['/Users/zhangsan/Workspaces/PythonProject']
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [3910] using WatchFiles
INFO: Started server process [3918]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: 127.0.0.1:53511 - "GET / HTTP/1.1" 200 OK
INFO: 127.0.0.1:53511 - "GET /favicon.ico HTTP/1.1" 404 Not Found
-
浏览器输入:http://127.0.0.1:8000 查看返回结果
-
浏览器输入:http://127.0.0.1:8000/docs 查看交互式文档(Swagger)
-
浏览器输入:http://127.0.0.1:8000/redoc 查看API文档
那么,我们该如何学习大模型?
作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
【有需要的朋友,可以扫描下方二维码免费领取!!!】
![](https://img-blog.csdnimg.cn/img_convert/87f5c01c40bb9ef7c411dcab3d013b1a.jpeg)
一、大模型全套的学习路线
学习大型人工智能模型,如GPT-3、BERT或任何其他先进的神经网络模型,需要系统的方法和持续的努力。既然要系统的学习大模型,那么学习路线是必不可少的,下面的这份路线能帮助你快速梳理知识,形成自己的体系。
L1级别:AI大模型时代的华丽登场
L2级别:AI大模型API应用开发工程
L3级别:大模型应用架构进阶实践
L4级别:大模型微调与私有化部署
一般掌握到第四个级别,市场上大多数岗位都是可以胜任,但要还不是天花板,天花板级别要求更加严格,对于算法和实战是非常苛刻的。建议普通人掌握到L4级别即可。
以上的AI大模型学习路线,不知道为什么发出来就有点糊,高清版可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
![](https://img-blog.csdnimg.cn/img_convert/87f5c01c40bb9ef7c411dcab3d013b1a.jpeg)
二、640套AI大模型报告合集
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
三、大模型经典PDF籍
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。
四、AI大模型商业化落地方案
作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。