Python教程--基本技能

】@TOC

5.1 解析命令行参数

在Python中,解析命令行参数是一项常见的任务,尤其是在开发命令行工具或脚本时。Python标准库提供了argparse模块,它可以帮助你轻松地编写用户友好的命令行接口。下面是使用argparse模块解析命令行参数的基本步骤:

引入argparse模块

首先,你需要引入argparse模块。

import argparse

创建ArgumentParser对象

接下来,创建一个ArgumentParser对象。这个对象将帮助你定义和解析命令行参数。

parser = argparse.ArgumentParser(description='这是一个示例脚本。')

定义参数

使用add_argument()方法来定义命令行参数。你可以指定参数名、参数类型、帮助信息等。

parser.add_argument('input', type=str, help='输入文件的路径。')
parser.add_argument('--output', '-o', type=str, default='output.txt', help='输出文件的路径。')
parser.add_argument('--verbose', '-v', action='store_true', help='启用详细输出。')

解析参数

定义好所有参数后,调用parse_args()方法来解析命令行参数。

args = parser.parse_args()

使用参数

解析后的参数将被存储在args对象中,你可以像使用普通变量一样使用它们。

if args.verbose:print(f'输入文件:{args.input}')print(f'输出文件:{args.output}')
# 你的代码逻辑

完整示例

下面是一个完整的示例,展示了如何定义、解析和使用命令行参数:

import argparse
def main():parser = argparse.ArgumentParser(description='这是一个示例脚本。')parser.add_argument('input', type=str, help='输入文件的路径。')parser.add_argument('--output', '-o', type=str, default='output.txt', help='输出文件的路径。')parser.add_argument('--verbose', '-v', action='store_true', help='启用详细输出。')args = parser.parse_args()if args.verbose:print(f'输入文件:{args.input}')print(f'输出文件:{args.output}')# 你的代码逻辑
if __name__ == '__main__':main()

你可以通过命令行运行这个脚本,并传递相应的参数。例如:

python script.py input.txt --output result.txt -v

在这个例子中,script.py是脚本的名字,input.txt是必需的输入文件参数,--output result.txt-v是可选的输出文件和详细输出参数。


5.2 时间日期处理
在Python中,处理时间日期是编程中的常见需求。Python标准库提供了datetime模块,它提供了多种时间日期相关的类和函数,用于处理日期、时间、时间差等。下面是使用datetime模块进行时间日期处理的基本步骤:

引入datetime模块

首先,你需要引入datetime模块。

from datetime import datetime, timedelta

获取当前时间

你可以使用datetime.now()方法来获取当前时间。

current_time = datetime.now()
print(current_time)

日期和时间格式化

你可以使用strftime()方法来格式化日期和时间,使其更容易阅读。

formatted_time = current_time.strftime('%Y-%m-%d %H:%M:%S')
print(formatted_time)

日期和时间加减

你可以使用timedelta对象来增加或减少日期和时间。

# 增加3天
three_days_later = current_time + timedelta(days=3)
print(three_days_later)
# 减少1小时
one_hour_ago = current_time - timedelta(hours=1)
print(one_hour_ago)

日期和时间比较

你可以使用timedelta对象来比较日期和时间。

# 比较两个时间
time_diff = three_days_later - current_time
print(time_diff)

示例

下面是一个完整的示例,展示了如何使用datetime模块进行时间日期处理:

from datetime import datetime, timedelta
def main():current_time = datetime.now()print(f'当前时间:{current_time}')formatted_time = current_time.strftime('%Y-%m-%d %H:%M:%S')print(f'格式化时间:{formatted_time}')three_days_later = current_time + timedelta(days=3)print(f'三天后的时间:{three_days_later}')one_hour_ago = current_time - timedelta(hours=1)print(f'一个小时前的時間:{one_hour_ago}')# 比较两个时间time_diff = three_days_later - current_timeprint(f'时间差:{time_diff}')
if __name__ == '__main__':main()

你可以通过命令行运行这个脚本,并查看输出结果。这个示例展示了如何获取当前时间、格式化日期和时间、进行日期和时间的加减以及比较日期和时间。


5.3 数据文件读写

在Python中,处理数据文件读写是一项基础技能,用于读取或写入文本文件、CSV文件、JSON文件等。Python标准库提供了osos.pathopencsvjson等模块,用于操作文件和读写不同类型的数据。下面是使用这些模块进行数据文件读写的步骤:

引入相关模块

首先,你可能需要引入一些相关模块。

import os
import csv
import json

读取文本文件

使用open()函数来读取文本文件。

# 打开文件
with open('example.txt', 'r') as file:# 读取文件内容content = file.read()print(content)

写入文本文件

使用open()函数来写入文本文件。

# 打开文件
with open('example.txt', 'w') as file:# 写入文件内容file.write('这是要写入的内容')

读取CSV文件

使用csv.reader()来读取CSV文件。

# 打开文件
with open('example.csv', 'r') as file:# 创建CSV读取器reader = csv.reader(file)# 读取文件内容for row in reader:print(row)

写入CSV文件

使用csv.writer()来写入CSV文件。

# 打开文件
with open('example.csv', 'w') as file:# 创建CSV写入器writer = csv.writer(file)# 写入文件内容writer.writerow(['列1', '列2', '列3'])writer.writerow(['值1', '值2', '值3'])

读取JSON文件

使用json.load()来读取JSON文件。

# 打开文件
with open('example.json', 'r') as file:# 创建JSON解析器data = json.load(file)print(data)

写入JSON文件

使用json.dump()来写入JSON文件。

# 打开文件
with open('example.json', 'w') as file:# 创建JSON解析器json.dump(data, file)

示例

下面是一个完整的示例,展示了如何使用Python进行数据文件读写:

import os
import csv
import json
def main():# 读取文本文件with open('example.txt', 'r') as file:content = file.read()print(content)# 写入文本文件with open('example.txt', 'w') as file:file.write('这是要写入的内容')# 读取CSV文件with open('example.csv', 'r') as file:reader = csv.reader(file)for row in reader:print(row)# 写入CSV文件with open('example.csv', 'w') as file:writer = csv.writer(file)writer.writerow(['列1', '列2', '列3'])writer.writerow(['值1', '值2', '值3'])# 读取JSON文件with open('example.json', 'r') as file:data = json.load(file)print(data)# 写入JSON文件with open('example.json', 'w') as file:json.dump(data, file)
if __name__ == '__main__':main()

在这个例子中,我们展示了如何使用Python进行文本文件、CSV文件和JSON文件的读写。这些技能在处理数据和配置文件时非常有用。


5.4 数据库操作

在Python中,数据库操作通常涉及与关系型数据库(如MySQL、PostgreSQL)或NoSQL数据库(如MongoDB、Redis)的交互。Python的标准库和第三方库提供了多种数据库接口,如sqlite3MySQLdbpsycopg2pymongo等。以下是一些基本步骤,用于在Python中进行数据库操作:

引入相关模块

首先,你可能需要引入一些数据库接口模块。

import sqlite3
import pymysql
import pymongo

连接数据库

使用适当的连接函数来建立与数据库的连接。

# 连接SQLite数据库
conn = sqlite3.connect('example.db')
# 连接MySQL数据库
conn = pymysql.connect(host='localhost', user='root', password='password', database='test_db')
# 连接MongoDB数据库
client = pymongo.MongoClient('mongodb://localhost:27017/')
db = client['test_db']

创建数据库表或集合

在连接数据库后,你可以使用SQL语句或MongoDB的集合操作来创建新的表或集合。

# 创建SQLite表
cursor = conn.cursor()
cursor.execute('CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)')
conn.commit()
# 创建MongoDB集合
db.create_collection('users')

插入数据

你可以使用SQL语句或MongoDB的文档操作来插入数据。

# 插入SQLite数据
cursor.execute('INSERT INTO users (name, age) VALUES (?, ?)', ('Alice', 30))
conn.commit()
# 插入MongoDB数据
db.users.insert_one({'name': 'Bob', 'age': 25})

查询数据

你可以使用SQL语句或MongoDB的查询操作来检索数据。

# 查询SQLite数据
cursor.execute('SELECT * FROM users WHERE age > ?', (25,))
rows = cursor.fetchall()
for row in rows:print(row)
# 查询MongoDB数据
for user in db.users.find({'age': {'$gt': 25}}):print(user)

更新和删除数据

你可以使用SQL语句或MongoDB的更新和删除操作来修改或删除数据。

# 更新SQLite数据
cursor.execute('UPDATE users SET age = ? WHERE name = ?', (31, 'Alice'))
conn.commit()
# 删除SQLite数据
cursor.execute('DELETE FROM users WHERE name = ?', ('Bob',))
conn.commit()
# 更新MongoDB数据
db.users.update_one({'name': 'Bob'}, {'$set': {'age': 26}})
# 删除MongoDB数据
db.users.delete_one({'name': 'Charlie'})

关闭数据库连接

完成数据库操作后,应该关闭数据库连接。

cursor.close()
conn.close()

示例

下面是一个完整的示例,展示了如何使用Python进行SQLite数据库操作:

import sqlite3
def main():# 连接SQLite数据库conn = sqlite3.connect('example.db')cursor = conn.cursor()# 创建表cursor.execute('CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)')conn.commit()# 插入数据cursor.execute('INSERT INTO users (name, age) VALUES (?, ?)', ('Alice', 30))cursor.execute('INSERT INTO users (name, age) VALUES (?, ?)', ('Bob', 25))conn.commit()# 查询数据cursor.execute('SELECT * FROM users WHERE age > ?', (25,))rows = cursor.fetchall()for row in rows:print(row)# 更新数据cursor.execute('UPDATE users SET age = ? WHERE name = ?', (31, 'Alice'))conn.commit()# 删除数据cursor.execute('DELETE FROM users WHERE name = ?', ('Bob',))conn.commit()# 关闭数据库连接cursor.close()conn.close()
if __name__ == '__main__':main()

在这个例子中,我们展示了如何使用Python进行SQLite数据库的连接、表创建、数据插入、查询、更新和删除操作。这些技能对于与数据库交互的应用程序至关重要。


5.6 源码打包

源码打包是将Python项目打包成一个可分发和可安装的格式,以便于其他用户能够轻松地安装和使用你的项目。Python中常用的打包格式有wheelsdistwheel是一种更高效的打包格式,而sdist则是源码打包的通用格式。

使用setuptools进行源码打包

setuptools是一个Python库,它提供了一套命令行工具和Python代码,用于创建和分发Python包。你可以使用setuptools来创建wheelsdist格式的源码包。

安装setuptools

如果你还没有安装setuptools,可以使用pip进行安装。

pip install setuptools
创建setup.py文件

创建一个名为setup.py的文件,该文件将包含你的包的元数据和打包命令。

from setuptools import setup, find_packages
setup(name='my_package',version='1.0',description='这是一个示例包',author='Your Name',author_email='your_email@example.com',url='https://example.com',packages=find_packages(),# 你可以添加其他需要的信息,如安装需求等
)
打包源码

setup.py文件所在的目录中,运行以下命令来创建sdistwheel格式的源码包。

python setup.py sdist bdist_wheel

这个命令会生成一个.tar.gz文件(sdist格式)和一个.whl文件(wheel格式)。

安装打包的包

你可以使用pip来安装这些打包好的包。

pip install my_package-1.0.tar.gz

或者

pip install my_package-1.0-py3-none-any.whl

使用wheel进行源码打包

wheel是一个用于创建、分发和安装Python包的命令行工具。你可以使用wheel来创建wheel格式的源码包。

安装wheel

如果你还没有安装wheel,可以使用pip进行安装。

pip install wheel
创建setup.py文件

创建一个名为setup.py的文件,该文件将包含你的包的元数据和打包命令。

from setuptools import setup, find_packages
setup(name='my_package',version='1.0',description='这是一个示例包',author='Your Name',author_email='your_email@example.com',url='https://example.com',packages=find_packages(),# 你可以添加其他需要的信息,如安装需求等
)
打包源码

setup.py文件所在的目录中,运行以下命令来创建wheel格式的源码包。

python setup.py bdist_wheel

这个命令会生成一个.whl文件(wheel格式)。

安装打包的包

你可以使用pip来安装这个打包好的包。

pip install my_package-1.0-py3-none-any.whl

示例

下面是一个完整的示例,展示了如何使用setuptoolswheel进行源码打包:

# 创建一个名为 setup.py 的文件
from setuptools import setup, find_packages
setup(name='my_package',version='1.0',description='这是一个示例包',author='Your Name',author_email='your_email@example.com',url='https://example.com',packages=find_packages(),# 你可以添加其他需要的信息,如安装需求等
)
# 在 setup.py 文件所在的目录中,使用 setuptools 创建 sdist 和wheel 格式的源码包。
python setup.py sdist bdist_wheel

这个命令会生成一个.tar.gz文件(sdist格式)和一个.whl文件(wheel格式)。

安装打包的包

你可以使用pip来安装这些打包好的包。

pip install my_package-1.0.tar.gz

或者

pip install my_package-1.0-py3-none-any.whl

使用twine进行源码打包

twine是一个专门用于上传Python包到PyPI(Python包索引)的命令行工具。它依赖于setuptoolswheel,因此你需要在安装twine之前确保已经安装了这两个工具。

安装twine

如果你还没有安装twine,可以使用pip进行安装。

pip install twine
打包源码

setup.py文件所在的目录中,运行以下命令来创建wheel格式的源码包。

python setup.py bdist_wheel

这个命令会生成一个.whl文件(wheel格式)。

上传到PyPI

使用twine来上传打包好的包到PyPI。

twine upload dist/*

这将使用dist目录中的所有文件上传到PyPI。确保在执行此命令之前,你已经设置了PyPI的凭据,并且你的包满足PyPI的命名规范和上传要求。

示例

下面是一个完整的示例,展示了如何使用twine进行源码打包并上传到PyPI:

# 创建一个名为 setup.py 的文件
from setuptools import setup, find_packages
setup(name='my_package',version='1.0',description='这是一个示例包',author='Your Name',author_email='your_email@example.com',url='https://example.com',packages=find_packages(),# 你可以添加其他需要的信息,如安装需求等
)
# 在 setup.py 文件所在的目录中,使用 setuptools 创建 wheel 格式的源码包。
python setup.py bdist_wheel
# 使用 twine 上传到 PyPI
twine upload dist/*

请注意,上传到PyPI之前,你需要有一个有效的PyPI账户,并设置好你的账户凭据。你可以在命令行中使用twine upload命令来上传包,或者在命令行中使用twine upload --repository-url <repository-url>命令来上传包到其他包索引。


在Python中,网络编程是一项重要的技能,它允许你的程序通过网络与其他程序进行通信。Python的标准库中提供了多个模块来支持网络编程,包括sockethttp.clienturllib等。以下是一些基本的网络编程概念和示例。

5.7 网络编程

1. socket 编程基础

socket 模块提供了标准的BSD Sockets API。一个socket是网络通信的一个端点,可以看作是不同计算机进程之间的数据通道。

  • TCP客户端
import socket
# 创建一个socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接到服务器
s.connect(('www.example.com', 80))
# 发送数据
s.sendall(b'GET / HTTP/1.1\r\nHost: www.example.com\r\n\r\n')
# 接收数据
data = s.recv(1024)
print(data)
# 关闭连接
s.close()
  • TCP服务器
import socket
# 创建一个socket对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定地址和端口
s.bind(('0.0.0.0', 8080))
# 监听连接
s.listen(1)
# 接受连接
conn, addr = s.accept()
print('Connected by', addr)
# 接收数据
while True:data = conn.recv(1024)if not data:breakprint(data)
# 关闭连接
conn.close()
2. HTTP 客户端请求

http.client 模块提供了HTTP协议的客户端实现。

import http.client
# 创建一个连接
conn = http.client.HTTPSConnection("www.example.com")
# 发送GET请求
conn.request("GET", "/")
# 获取响应
r1 = conn.getresponse()
# 打印响应状态和响应体
print(r1.status, r1.reason)
print(r1.read().decode('utf-8'))
# 关闭连接
conn.close()
3. 使用 requests 模块

requests 是一个更高级、更友好的HTTP客户端库,它简化了发送HTTP请求的过程。

import requests
# 发送GET请求
response = requests.get('https://www.example.com')
# 检查响应状态码
if response.status_code == 200:print(response.text)
else:print('Failed to retrieve data:', response.status_code)
4. urllib 使用

urllib 是一个用于读取来自Web的数据的模块。

from urllib.request import urlopen
# 打开一个URL
with urlopen('https://www.example.com') as response:# 读取网页内容html = response.read()
print(html.decode('utf-8'))

网络编程是Python应用中非常广泛的一部分,可以用于开发各种网络应用,包括网站、网络服务、分布式系统等。在实际开发中,理解网络协议、网络模型以及如何使用Python进行网络通信是非常重要的。


在Python中,发送邮件是一个常见的任务,通常用于自动化报告、提醒通知或作为服务的一部分。Python的smtp库可以用来发送邮件。以下是一个使用smtp库发送邮件的基本示例。

5.8 发送邮件

使用SMTP发送邮件
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
# 邮件发送者
sender = 'from@example.com'
# 邮件接收者
receiver = 'to@example.com'
# 邮件主题
subject = 'Python SMTP 邮件测试'
# 邮件正文
body = '这是一封来自Python脚本的测试邮件。'
# 创建一个带附件的实例
message = MIMEMultipart()
message['From'] = Header("发件人", 'utf-8')
message['To'] = Header("收件人", 'utf-8')
message['Subject'] = Header(subject, 'utf-8')
# 邮件正文内容
message.attach(MIMEText(body, 'plain', 'utf-8'))
# 添加附件(可选)
with open('附件.txt', 'r', encoding='utf-8') as f:att = MIMEText(f.read(), 'base64', 'utf-8')att["Content-Type"] = 'application/octet-stream'# 这里的filename可以任意写,写什么名字,邮件中显示什么名字att["Content-Disposition"] = 'attachment; filename="附件.txt"'message.attach(att)
# SMTP服务器地址
smtp_server = 'smtp.example.com'
# 发送者邮箱用户名和密码
username = 'your_username'
password = 'your_password'
# 连接SMTP服务器
server = smtplib.SMTP(smtp_server, 25)
server.starttls()
server.login(username, password)
# 发送邮件
server.sendmail(sender, receiver, message.as_string())
# 关闭服务器连接
server.quit()

在上面的代码中,你需要将senderreceiversmtp_serverusernamepassword替换为实际的发送者邮箱、接收者邮箱、SMTP服务器地址以及发送者邮箱的用户名和密码。如果SMTP服务器使用的是SSL加密(例如Gmail的SMTP服务器),则端口通常是465,并且需要使用smtplib.SMTP_SSL来连接服务器。
请注意,出于安全考虑,不要在代码中硬编码密码。可以使用环境变量或其他安全的方式来管理敏感信息。
发送邮件是一个涉及网络通信的过程,因此需要确保网络连接畅通,并且邮箱服务器配置正确。在实际应用中,可能还需要处理各种异常情况,例如网络错误、认证失败等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/863790.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++】const修饰成员函数

const修饰成员函数 常函数&#xff1a; 成员函数后加const后我们称为这个函数为常函数 常函数内不可以修改成员属性 成员属性声明时加关键字mutable后&#xff0c;在常函数中依然可以修改 class Animal { public:void fun1(){//这是一个普通的成员函数 }void fun2…

13_旷视轻量化网络--ShuffleNet V2

回顾一下ShuffleNetV1:08_旷视轻量化网络--ShuffleNet V1-CSDN博客 1.1 简介 ShuffleNet V2是在2018年由旷视科技的研究团队提出的一种深度学习模型&#xff0c;主要用于图像分类和目标检测等计算机视觉任务。它是ShuffleNet V1的后续版本&#xff0c;重点在于提供更高效的模…

antd Select前端加模糊搜索

背景&#xff1a;前端的小伙伴经常在开发antd Select的时候后端不提供搜索模糊搜索接口&#xff0c;而是全量返回数据&#xff0c;这个时候就需要我们前端自己来写一个模糊搜索了。 效果 代码截图 代码 <SelectshowSearchmode"multiple"options{studioList}filte…

优化上一篇:通过 Redis Stream 队列进一步提升秒杀系统性能

引言 在之前的文章中&#xff0c;我们介绍了如何使用 Redis 和 Lua 脚本来应对秒杀活动中的高并发请求&#xff0c;并通过引入阻塞队列实现异步下单来提升系统性能。然而&#xff0c;在高并发场景下&#xff0c;阻塞队列的容量和处理速度可能会成为瓶颈。这篇文章将介绍如何使…

运维锅总详解Prometheus

本文尝试从Prometheus简介、架构、各重要组件详解、relable_configs最佳实践、性能能优化及常见高可用解决方案等方面对Prometheus进行详细阐述。希望对您有所帮助&#xff01; 一、Prometheus简介 Prometheus 是一个开源的系统监控和报警工具&#xff0c;最初由 SoundCloud …

基于模糊神经网络的时间序列预测(以hopkinsirandeath数据集为例,MATLAB)

模糊神经网络从提出发展到今天,主要有三种形式&#xff1a;算术神经网络、逻辑模糊神经网络和混合模糊神经网络。算术神经网络是最基本的&#xff0c;它主要是对输入量进行模糊化&#xff0c;且网络结构中的权重也是模糊权重&#xff1b;逻辑模糊神经网络的主要特点是模糊权值可…

Python技术笔记汇总(含语法、工具库、数科、爬虫等)

对Python学习方法及入门、语法、数据处理、数据可视化、空间地理信息、爬虫、自动化办公和数据科学的相关内容可以归纳如下&#xff1a; 一、Python学习方法 分解自己的学习目标&#xff1a;可以将学习目标分基础知识&#xff0c;进阶知识&#xff0c;高级应用&#xff0c;实…

Java中Integer类的应用

Java中Integer类的应用 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将深入探讨Java中Integer类的应用。Integer类是Java中的一个包装类&#xff0c;…

【面试系列】全栈开发工程师 高频面试题及详细解答

欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;欢迎订阅相关专栏&#xff1a; ⭐️ 全网最全IT互联网公司面试宝典&#xff1a;收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来&#xff1a;详细讲解AIGC的概念、核心技术、…

2024 vue3入门教程:windows系统下部署node环境

一、打开下载的node官网 Node.js — 下载 Node.js 二、根据个人喜好的下载方法&#xff0c;下载到自己的电脑盘符下 三、我用的是方法3下载的压缩包&#xff0c;解压到E盘nodejs目录下&#xff08;看个人&#xff09; 四、配置电脑的环境变量&#xff0c;新建环境变量的时候…

设置响应内容类型的几种方法比较

设置响应内容类型的几种方法比较 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在Web开发中&#xff0c;设置响应内容类型是非常常见的需求。响应内容类型告…

【ESP32】打造全网最强esp-idf基础教程——14.VFS与SPIFFS文件系统

VFS与SPIFFS文件系统 这几天忙着搬砖&#xff0c;差点没时间更新博客了&#xff0c;所谓一日未脱贫&#xff0c;打工不能停&#xff0c;搬砖不狠&#xff0c;明天地位不稳呀。 不多说了&#xff0c;且看以下内容吧~ 一、VFS虚拟文件系统 先来看下文件系统的定义&#x…

Python基础之模块和包

文章目录 1 模块和包1.1 模块和包1.1.1 模块1.1.2 包1.1.3 简单使用 1.2 import 语句1.2.1 import1.2.2 from … import 语句1.2.3 from … import * 语句 1.4 深入模块1.4.1 模块符号表1.4.2 __name__属性1.4.3 dir() 函数1.4.4 作用域 1.5 常用内置模块 1 模块和包 1.1 模块…

vue中【事件修饰符号】详解

在Vue中&#xff0c;事件修饰符是一种特殊的后缀&#xff0c;用于修改事件触发时的默认行为。以下是Vue中常见的事件修饰符的详细解释&#xff1a; .stop 调用event.stopPropagation()&#xff0c;阻止事件冒泡。当你在嵌套元素中都有相同的事件监听器&#xff08;如click事件…

FuzzyPID

#include <stdio.h> typedef struct FuzzyPID { int num_area ; //划分区域个数 //float e_max; //误差做大值 //float e_min; //误差最小值 //float ec_max; //误差变化最大值 //float ec_min; //误差变化最小值 //float kp_max, kp_min; float e_membership_valu…

AI模型的奥运会:谁将在OlympicArena中夺冠?

获取本文论文原文PDF&#xff0c;请在公众号【AI论文解读】留言&#xff1a;论文解读 引言&#xff1a;AI模型的奥林匹克级评测 评估和比较不同AI模型的性能始终是一个核心话题。随着技术的不断进步&#xff0c;这些模型在处理复杂任务的能力上有了显著的提升。为了更精确地衡…

Vue3学习笔记<->创建第一个vue项目(2)

新建一个项目目录 找一个盘新建一个目录&#xff0c;我这里在D盘创建一个vuedemo目录作为项目存放的目录。使用idea打开目录。   单击ieda底部的按钮“Terminal”&#xff0c;打开命令行窗口&#xff0c;如果命令行窗口当前目录不是“vuedemo”&#xff0c;就切换到“vuedem…

基于FastApi框架的后端服务实践案例

去年在做大模型部署和服务开发研究过程中,接触到如何将大模型的对话封装成服务,供任何消费端调用,详见之前的大模型应用文章,之后,为了实现NLP分词和实体识别,也基于tornado框架编写了后端服务,详见那篇文章,最近在利用python在做后端数据处理过程中,发现从响应性能、…

python基础:操作字典

1、遍历整个字典的键-值对 items()方法返回一个键-值对列表&#xff0c;for 循环依次将每个键—值对存储到指定的两个变量中。 使用元组和列表遍历方法遍历字典&#xff1a; user_0 { username: efermi, first: enrico, last: fermi, } for key, value in user_0.items():p…