用Python分析《城中之城》的观众反响:情感分析与数据挖掘

<!– wp:paragraph {“placeholder”:“Type / to choose a block, or press space to summon the AI Copilot”} –> 在分析观众对《城中之城》的反响方面,Python 是一种强大且灵活的工具。本文将使用 Python 进行情感分析和数据挖掘,来研究该电影的公共看法。 <!– /wp:paragraph –><!– wp:paragraph {“placeholder”:“Type / to choose a block, or press space to summon the AI Copilot”} –> 分析观众反响 <!– /wp:paragraph –><!– wp:paragraph –> 我们开始的第一个步骤是爬取和清理评论数据。我们将使用 Python 的 beautifulsoup 库来爬取《城中之城》的影院评分网站上的评论。然后,我们将使用 Pandas 库来清理数据,删除不需要的信息,并将评论分组成为可处理的数据框。 <!– /wp:paragraph –><!– wp:paragraph –> PARA 1: <!– /wp:paragraph –><!– wp:paragraph –> 我们的第二步是使用情感分析技术来理解观众对电影的看法。我们将使用 Vader 模块来对每条评论进行情感分析。Vader 模块使用机器学习来判断情感的强度,并将情感标签分配给每条评论。这对于了解观众对电影的总体情感是很有帮助的。 <!– /wp:paragraph –><!– wp:paragraph –> ...

April 30, 2024 · 1 min · jiezi

不同虚拟环境工具的比较(venv、pyvenv、pyenv、virtualenv、virtualenvwrapper、pipenv 等)

<!– wp:paragraph –> 虚拟环境在 Python 开发中扮演着至关重要的角色,用于隔离项目之间的依赖,避免版本冲突和相互干扰。为了方便管理和使用虚拟环境,许多工具在 Python 语言中获得了广泛的应用。目前,常用的虚拟环境工具有venv、pyvenv、pyenv、virtualenv、virtualenvwrapper、pipenv等。 <!– /wp:paragraph –><!– wp:heading –> <h2 class=“wp-block-heading”>不同虚拟环境工具的比较:venv 与其衍生物影:</h2> <!– /wp:heading –><!– wp:paragraph –> venv 是 Python 自带的虚拟环境工具,用于创建和管理 Python 项目的独立的运行环境。它利用了 Python 的模块导出机制,通过在模块搜索路径中添加与虚拟环境相关的目录来隔离不同的项目。虚拟环境工具可以确保多个项目之间彼此隔离,避免版本冲突和相互干扰。 <!– /wp:paragraph –><!– wp:paragraph –> 此外,还有许多基于venv 的衍生物影工具,以提高效率和管理的便捷性。例如,pyvenv 是对 venv 的增强版,自动检测系统版本并确保与项目所需的 Python 版本匹配。virtualenvwrapper 提供更便捷的虚拟环境管理界面,而 pipenv 则提供更简洁的项目初始化和管理功能。 <!– /wp:paragraph –><!– wp:heading –> <h2 class=“wp-block-heading”>不同的虚拟环境工具:解算环境配置的终极方案:</h2> <!– /wp:heading –><!– wp:paragraph –> 不同的虚拟环境工具拥有不同的特点和优势,适合不同的项目和工作流。 <!– /wp:paragraph –><!– wp:list –> <!– wp:list-item –>* venv/pyvenv:适合小型项目,旨在简化环境配置和管理。 <!– /wp:list-item –><!– wp:list-item –>* pyenv:适合管理多个 Python 版本,并方便地将特定版本安装到项目中。 <!– /wp:list-item –><!– wp:list-item –>* virtualenv/virtualenvwrapper:适合大型项目,需要更高的管理效率和更复杂的配置管理。 <!– /wp:list-item –><!– wp:list-item –>* pipenv:适合使用 pip 的项目,提供更便捷的项目管理功能和更简洁的命令行界面。 <!– /wp:list-item –> ...

April 15, 2024 · 1 min · jiezi

通过图像进行三维身体测量:实用程序代码分析

<!– wp:paragraph –> 三维身体测量技术是一种用于体现人体形象的科学方法。该技术的一般流程是:抓取图片、进行图像处理、提取身体部位、最后进行三维渲染。今天我将为您分享如何使用图像处理技术实现三维身体测量的知识。 <!– /wp:paragraph –><!– wp:heading –> <h2 class=“wp-block-heading”> 三维身体测量技术:图像处理之美</h2> <!– /wp:heading –><!– wp:paragraph –> 三维身体测量技术的优点之一是它可以提供一种更真实的体验,比较于二维图像。这种技术的美学在于它能让我们以新的眼角看待人体形态,提升了对人体形态的理解。 <!– /wp:paragraph –><!– wp:paragraph –> 在实践中,我们需要使用图像处理技术将图像转换为三维数据。这可以通过识别图像中体素的大小和位置来实现。图像处理的良好应用可以使我们的三维模型精准、省时,同时渲染效果也会更加逼Realistic。 <!– /wp:paragraph –><!– wp:heading –> <h2 class=“wp-block-heading”>实用程序代码分析:探索三维身体测量之路</h2> <!– /wp:heading –><!– wp:paragraph –> 正如你所知,图像处理技术的优势在于它基于计算机视觉的算法,可以自动化大量的任务。然而,如果您对代码如何工作是如何进行三维雄体测量是感兴趣的,那么您将需要了解这些代码中的每一行。 <!– /wp:paragraph –><!– wp:paragraph –> 我将使用Python语言来展示我的代码,因为它有强大的算法库。我们将使用OpenCV库来处理图像,并将这些图像的像素转换为3D点云。 <!– /wp:paragraph –><!– wp:paragraph –> 我的代码结构如下: <!– /wp:paragraph –><!– wp:list {“ordered”:true} –> <!– wp:list-item –>1. 读取图像,使用OpenCV的cv2.imread()函数。 <!– /wp:list-item –><!– wp:list-item –>2. 转换图像到灰度图,使用OpenCV的cv2.cvtColor()函数。 <!– /wp:list-item –><!– wp:list-item –>3. 提取身体部位,使用OpenCV的cv2.findContours()函数。 <!– /wp:list-item –><!– wp:list-item –>4. 计算三维点云,使用OpenCV的cv2.convertTo()函数。 <!– /wp:list-item –> ...

April 14, 2024 · 1 min · jiezi

关于python:Python实现微信电脑版微信支付收款监听及支付回调通知

摘要为什么要监听收款?那是因为当初还有人在应用微信的收款码、商业码、赞叹码实现免签领取,这类实现办法的最终计划还是监听收款后果。 技术原理通过Python实时解析微信电脑版控件的文本内容来获取信息。不须要Hook和抓包,也不是走任何的协定,就是非常简单的界面信息获取和解析。 如何应用登录电脑版微信;找到微信领取公众号;双击,让微信领取公众号独自显示,如下图;WxPayPcNotify.py批改你的接管告诉的Url;cmd运行WxPayPcNotify.py即可开启监听。 接管领取后果告诉WxPayPcNotify.py监听到收款告诉后,会向你服务器POST三个参数: amount:收款金额sender:微信昵称timestamp:到账工夫nitify.php示例 <?php // 收款金额 $amount = trim($_POST['amount']); // 微信昵称 $sender = trim($_POST['sender']); // 到账工夫 $timestamp = trim($_POST['timestamp']); // 编写你的逻辑?>代码WxPayPcNotify.py import reimport timeimport uiautomation as automationimport requestslast_matched_info = Nonedef explore_control(control, depth, target_depth): global last_matched_info try: name = control.Name if name: if depth == target_depth: # 匹配收款金额信息 match = re.search(r'收款金额¥([\d.]+)', name) if match: global amount amount = match.group(1) last_matched_info = f"收款金额: ¥{amount}, " # 匹配来自、到账工夫信息 match = re.search(r'来自(.+?)到账工夫(.+?)备注', name) if match: global sender sender = match.group(1) global timestamp timestamp = match.group(2) last_matched_info += f"来自: {sender}, 到账工夫: {timestamp}" return # 递归解决子控件 for child in control.GetChildren(): explore_control(child, depth + 4, target_depth) except Exception as e: print(f"产生谬误: {str(e)}")def process_wechat_window(wechat_window, prev_info): global last_matched_info if wechat_window.Exists(0): explore_control(wechat_window, 0, 60) if last_matched_info and last_matched_info != prev_info: print(last_matched_info) print("-----------------------------------------------------------------") print("继续监听中...") print("-----------------------------------------------------------------") prev_info = last_matched_info # 向服务器发送申请 send_http_request(last_matched_info,amount,sender,timestamp) else: print("无奈获取到窗口,请放弃微信领取窗口显示...") return prev_infodef send_http_request(info,amount,sender,timestamp): # 接管告诉的Url server_url = 'https://www.yourdomain.com/notify.php' try: # 将金额、来自、到账工夫POST给服务器 response = requests.post(server_url, data={'amount': amount,'sender': sender,'timestamp': timestamp}) # 告诉胜利 # print("告诉胜利") except Exception as e: # 告诉失败 print(f"告诉服务器失败...: {str(e)}")def main(): global last_matched_info prev_info = None try: # 获取微信窗口 wechat_window = automation.WindowControl(searchDepth=1, ClassName='ChatWnd') prev_info = process_wechat_window(wechat_window, prev_info) except Exception as e: print(f"产生谬误: {str(e)}") while True: try: # 继续监听微信窗口 wechat_window = automation.WindowControl(searchDepth=1, ClassName='ChatWnd') prev_info = process_wechat_window(wechat_window, prev_info) except Exception as e: print(f"产生谬误: {str(e)}") time.sleep(2)if __name__ == "__main__": print("-----------------------------------------------------------------") print("欢送应用liKeYun_WxPayPcNotify微信电脑版收款监控脚本...") print("-----------------------------------------------------------------") main()作者TANKING ...

March 4, 2024 · 2 min · jiezi

关于python:自动化使用PlayWright代理IP实现多环境隔离

Playwright是由微软公司2020年初公布的新一代自动化测试工具,相较于目前最罕用的Selenium,它仅用一个API即可主动执行Chromium、Firefox、WebKit等支流浏览器自动化操作。 对各种开发语言也有十分好的反对。罕用的NodeJs、Java、python都有反对,且有丰盛的文档参考。 Python环境下的装置应用1、装置依赖库pip install playwright 2、装置浏览器驱动文件装置好依赖库之后,会主动注册全局命令。上面2种形式都能够疾速装置驱动文件(驱动就是内置的浏览器)python -m playwright install 或者:playwright install 如果命令是python3,替换为pip3 install 和python3 -m 即可。 网上有十分多的教程。装置并非本文的重点。 多环境隔离的利用场景常见的如爬虫,可能须要应用代理IP隔离开不同的浏览器进行数据抓取。 像另一些须要多号操作的营销内容,也须要多个浏览器相互隔离开。更高要求的才会应用代理+隔离的形式。 产生齐全不一样的浏览器环境。比方大量的号去做不同的事。 还有很多罕用的场景。独立洁净的浏览器环境+Playwright的自动化。能够实现十分多的乏味的利用。 Playwright启动浏览器有几种模式。咱们须要先进行理解。1、一般的无痕模式,用完即销毁。这种形式下,浏览器的历史记录之类的不会保留。适宜用于爬虫性的工作。 代码大抵是这样的。 browser = pw.chromium.launch(headless=headless, proxy=my_proxy, ignore_default_args=ignore_args, args=default_args)browserContext = browser.new_context(user_agent=userAgent, storage_state=storage_state)能够指定UserAgent,这是咱们模仿不同操作系统和浏览器数据的必填项。也能够指定headless无头模式,这样浏览器不会有界面呈现。背地去工作。 2、一般的长久模式,须要指定用户的数据目录。实现数据的隔离。比方1号浏览器存到data1,2号存到data2,数据不会抵触,各干各的事,能够同时登陆一个网站的多个账号,互不影响。 不不便的中央在于,每次执行完工作,浏览器会随着程序敞开而敞开。 copy一段网上的示例 # 获取 google chrome 的本地缓存文件USER_DIR_PATH = f"C:\\Users\\{getpass.getuser()}\\AppData\Local\Google\Chrome\\User Data"with sync_playwright() as p: browser = p.chromium.launch_persistent_context( # 指定本机用户缓存地址,这是隔离环境的次要点,指定不同的目录寄存用户的数据。 user_data_dir=USER_DIR_PATH, # 接管下载事件,容许下载须要 accept_downloads=True, # 设置 GUI 模式,能够看到浏览器界面 headless=False, bypass_csp=True, slow_mo=1000, channel="chrome", ) page = browser.new_page() page.goto("https://www.cnblogs.com/yoyoketang") page.pause()3、直连零碎的Chrome。如果零碎有Chrome浏览器,playwright能够间接连贯,并进行操作。然而须要做一些配置。 这也是我目前用得最多的模式。 ...

March 4, 2024 · 2 min · jiezi

关于python:Python-潮流周刊第-40-期摘要

本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你筛选最值得分享的文章、教程、开源我的项目、软件工具、播客和视频、热门话题等内容。愿景:帮忙所有读者精进 Python 技术,并增长职业和副业的支出。 周刊全文:https://pythoncat.top/posts/2024-03-02-weekly 以下是本期摘要: 文章&教程 ① 白宫倡议应用 Python 等内存平安语言 ② 回顾 Requests 库的问题 ③ Python 的 UV 工具的确相当不错 ④ 应用 Python 作高级 Web 抓取:从任意网站抓取数据 ⑤ Django REST 框架 + Vue 比照 Django + HTMX ⑥ 可组合数据系统之路:对过来 15 年和将来的思考 ⑦ 用 Django 作 SQLite 基准测试 ⑧ Python 3.13 的 JIT 是如何实现的? ⑨ Python 网页抓取的终极指南 ⑩ 为简略架构作辩护 ⑪ 对于“调度”的外部原理 ️我的项目&资源 ① ingestr:用单个命令在任何数据库间无缝复制数据 ② justpath:在 Windows 和 Linux 上检查和优化 PATH 环境变量 ...

March 2, 2024 · 1 min · jiezi

关于python:好用的文本编辑器推荐

前言作为程序员的利器之一,文本编辑器在编程过程中扮演着至关重要的角色。抉择一个适宜本人的文本编辑器能够大大提高编程效率和舒适度。本文将介绍几款罕用的文本编辑器,旨在帮忙初学者理解它们的特点和劣势,以便依据本人的需要抉择适合的工具。 VS code Visual Studio Code(简称 VS Code)是一款由微软开发的收费、开源的跨平台文本编辑器。它具备丰盛的扩大库和弱小的性能,反对多种编程语言和框架。VS Code 的特点包含: 弱小的代码编辑性能,包含智能代码补全、代码导航和代码片段等。内置的调试器和 Git 版本控制工具,不便开发者进行调试和版本治理。丰盛的扩大生态系统,能够依据本人的需要装置各种插件,扩大编辑器的性能。Sublime Text Sublime Text 是一款轻量级的文本编辑器,具备简洁、疾速、稳固的特点。它反对多种编程语言,领有丰盛的插件和主题,能够定制化各种编辑器的外观和性能。Sublime Text 的特点包含: 疾速启动和响应,适宜解决大型文件和我的项目。弱小的多光标编辑性能,能够同时编辑多个地位的文本。反对各种快捷键和命令,进步编程效率。AtomAtom 是一款由 GitHub 开发的收费、开源的文本编辑器,具备可定制性强、易于应用的特点。它基于 Web 技术构建,反对 HTML、CSS 和 JavaScript 等前端开发技术。Atom 的特点包含: 内置的包管理器和丰盛的插件库,能够依据需要装置各种插件。能够自定义主题和布局,使编辑器的外观和性能合乎集体爱好。反对 Git 版本控制和 GitHub 集成,不便与团队单干和分享代码。Notepad++Notepad++ 是一款收费、开源的文本编辑器,实用于 Microsoft Windows 零碎。它具备轻量级、疾速、简洁的特点,反对多种编程语言。Notepad++ 的特点包含: 反对语法高亮和语法折叠,不便代码浏览和编辑。内置了大量的插件和宏,能够扩大编辑器的性能。反对多窗口和分屏编辑,不便同时查看和编辑多个文件。总结通过本文的介绍,置信你曾经对几款罕用的文本编辑器有了初步的理解。每款编辑器都有本人独特的特点和劣势,抉择适合的编辑器取决于集体的需要和偏好。倡议你依据本人的编程习惯和我的项目需要抉择一款适宜本人的文本编辑器,进步编程效率和舒适度!

February 29, 2024 · 1 min · jiezi

关于python:网购衣服经常不合身试试这款虚拟服装试穿工具

大家好,我是 Java陈序员。 能够说,当初网购曾经齐全融入到了咱们的日常生活中。小到一根笔,大到一件衣服都能在网上买! 然而,咱们在网上买衣服时,常常会因为衣服不合身而须要退换,这须要破费肯定的老本。 明天,给大家介绍一款高度可控的虚构服装试穿工具,能够让你在线体验衣服试穿的成果。 关注微信公众号:【Java陈序员】,获取开源我的项目分享、AI副业分享、超200本经典计算机电子书籍等。我的项目介绍OOTDiffusion —— 一个虚构服装试穿工具的开源我的项目,能够依据不同性别和体型主动调整,和模特十分贴合。 用户能够抉择半身模型进行上半身服装试穿,适宜T恤、衬衫等上身服装。 也能够抉择全身模型进行全身服装试穿,包含上身、上身和连衣裙等服装类型。 OOTDiffusion 的应用非常简略,在左侧能够抉择上传本人的集体照片,右侧上传衣服照片,点击 Run,期待几秒即可生成试穿成果。 OOTDiffusion 实现了高质量的服装图像生成和交融,确保试穿成果天然且真切,如下是其训练模型结构图。 我的项目地址: https://github.com/levihsu/OOTDiffusion在线体验地址: https://ootd.ibot.cn/疾速开始如果你对 OOTDiffusion 感兴趣,能够在本地自行部署摸索~ 1、克隆我的项目地址 git clone https://github.com/levihsu/OOTDiffusion2、创立 conda 环境并装置所需的包 conda create -n ootd python==3.10conda activate ootdpip install torch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2 numpy==1.24.4 scipy==1.10.1 scikit-image==0.21.0 opencv-python==4.7.0.72 pillow==9.4.0 diffusers==0.24.0 transformers==4.36.2 accelerate==0.26.1 matplotlib==3.7.4 tqdm==4.64.1 gradio==4.16.0 config==0.5.1 einops==0.7.0 ninja==1.10.2最初举荐的开源我的项目曾经收录到 GitHub 我的项目,欢送 Star: https://github.com/chenyl8848/great-open-source-project或者拜访网站,进行在线浏览: https://chencoding.top:8090/#/大家的点赞、珍藏和评论都是对作者的反对,如文章对你有帮忙还请点赞转发反对下,谢谢!

February 29, 2024 · 1 min · jiezi

关于python:Pydantic强大的Python-数据验证库

PydanticPydantic 是一个在 Python 中用于数据验证和解析的第三方库。它提供了一种简略且直观的形式来定义数据模型,并应用这些模型对数据进行验证和转换。 Pydantic 的一些次要个性: 类型注解:Pydantic 应用类型注解来定义模型的字段类型。你能够应用 Python 内置的类型、自定义类型或者其余 Pydantic 提供的验证类型。数据验证:Pydantic 主动依据模型定义进行数据验证。它会查看字段的类型、长度、范畴等,并主动报告验证谬误。你能够应用 ValidationError 异样来捕捉验证谬误。模型转换:Pydantic 提供了从各种数据格式(例如 JSON、字典)到模型实例的转换性能。它能够主动将输出数据解析成模型实例,并保留类型安全性和验证规定。Pydantic 应用前须要先进行装置。 pip install pydanticPydantic 基本操作应用 Pydantic,能够定义一个模型类,该类须要继承 pydantic 中的 BaseModel 类,模型类形容了数据的构造和类型,并指定验证规定。 而后,能够应用这个模型类来验证输出的数据是否合乎预期,并以类型平安的形式拜访和操作数据。 from pydantic import BaseModel, ValidationErrorclass User(BaseModel): name: str age: int email: strtry: user = User(name="Alice", age="30", email="alice@example.com") except ValidationError as e: print(e.json())如果创立实例的数据不合乎类型注解的要求,则会报 ValidationError 谬误。 Pydantic 高级操作Pydantic 还能够联合 typing 模块,进行默认值,可选字段属性等验证的高级操作。甚至还能够通过 EmailStr 类来间接验证邮件正确性,但该类依赖一个第三方模块,在应用前须要应用 pip install email-validator 进行装置后才能够应用。 from typing import Optionalfrom pydantic import BaseModel, EmailStrclass User(BaseModel): name: str age: int email: EmailStr phone: Optional[str] = Noneuser = User(name="Alice", age=30, email="alice@example.com") # 无效user = User(name="Alice", age=30, email="invalid_email") # 谬误:有效的电子邮件Field 对象Field函数提供了许多参数来定制字段的行为。以下是一些罕用的参数: ...

February 26, 2024 · 2 min · jiezi

关于python:爬虫自动化控制手机技术选型uiautomator2-appium-和-Airtest-三者对比

之前接手了一个到职同时的代码,应用的是 uiautomator2 来管制手机做微信相干内容的抓取 然而 uiautomator2 的名气不是很大,过后那个同时拍拍屁股走时,对 uiautomator2 的应用还存在一些问题,比方过段时间不操作手机,电脑和手机之间就会永恒断联,只能通过重装 u2 解决(不过这个问题,在我接手后没有遇到过) 看「崔庆才」的《Python3 网络爬虫开发实战 第二版》外面提到的对手机的自动化框架次要是 appium 和 Airtest ,并没有提及 uiautomator2,所以多半这个 uiautomator2 是不如 appium 和 Airtest 的 对 uiautomator2 、 appium 和 Airtest 三者的应用教训,我都是有余的,所以我就先简略的比照一下三者的 commit 来看看我的项目的沉闷水平,这在肯定水平上能够反馈我的项目的可用性 首先看看 appium 的 commits 记录 再看看 Airtest 的 commits 记录 再看看 uiautomator2 的 commits 记录 能够看到,从我的项目的保护激情来看,是 appium >> Airtest >> uiautomator2 所以,如果还有新的我的项目启动,应该不会抉择 uiautomator2 了,而是会抉择 appium 或者 Airtest 至于 appium、Airtest 之间的差别,倡议看「崔庆才」的《Python3 网络爬虫开发实战 第二版》,有近 40 页的内容在讲这两者 ...

February 25, 2024 · 1 min · jiezi

关于python:国产化禁止使用不安全的密码算法DESRC2RSA1024位及以下MD5SHA1

一、引言随着互联网的遍及和技术的倒退,网络安全问题日益严重。明码算法作为网络安全的基石,其安全性间接关系到用户数据的平安。一些不平安的明码算法一直被曝光,给用户带来了极大的安全隐患。 二、不平安的明码算法1. DESDES(Data Encryption Standard)是一种对称加密算法,自1977年公布以来,始终是寰球最宽泛应用的加密算法之一。然而,随着计算机解决能力的进步,DES的密钥长度(56位)曾经不足以保证数据的安全性。因而,DES算法被认为是不平安的。 2. RC2RC2(Rivest Cipher 2)是一种对称加密算法,与DES相似,也存在着密钥长度有余的问题。RC2反对的密钥长度为40位至128位,但在理论利用中,通常应用64位或128位密钥。因为RC2的密钥长度较短,容易受到暴力破解攻打,因而也不平安。 3. RSA(1024位及以下)RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,广泛应用于数字签名、密钥替换等场景。然而,RSA算法的安全性依赖于大数合成的困难性。当密钥长度较短时(如1024位及以下),攻击者可能通过暴力破解或其余办法找到私钥,从而破解加密信息。因而,对于RSA算法,倡议应用至多2048位的密钥长度。 4. MD5MD5(Message-Digest Algorithm 5)是一种宽泛应用的哈希函数,用于生成数据的摘要信息。然而,MD5算法存在重大的安全漏洞,容易受到碰撞攻打和预测攻打。这意味着攻击者能够通过结构特定的输出数据,使MD5输入雷同的摘要信息,从而实现伪造数据或篡改数据的目标。因而,MD5曾经不再被认为是平安的哈希函数。 5. SHA1SHA1(Secure Hash Algorithm 1)是另一种宽泛应用的哈希函数,用于生成数据的摘要信息。与MD5相似,SHA1算法也存在平安问题。尽管SHA1的安全性略高于MD5,但依然容易受到碰撞攻打和预测攻打。因而,SHA1也不再被认为是平安的哈希函数。 三、为什么禁止应用这些不平安的明码算法?禁止应用不平安的明码算法次要有以下几个起因: 数据安全:不平安的明码算法可能导致用户数据泄露、篡改等平安问题,给用户带来损失。零碎稳定性:不平安的明码算法可能导致系统解体、宕机等故障,影响零碎的失常运行。法律危险:应用不平安的明码算法可能违反相干法律法规,给企业和集体带来法律危险。信任危机:应用不平安的明码算法可能导致用户对服务提供商的信任度降落,影响企业的名誉和市场竞争力。四、举荐应用的明码算法以下是一些举荐的明码算法: 对称加密:举荐应用AES(Advanced Encryption Standard)算法,其密钥长度为128位、192位或256位,安全性较高。此外,还能够思考应用Camellia、Twofish等其余对称加密算法。非对称加密:举荐应用RSA(至多2048位密钥长度)、ECC(Elliptic Curve Cryptography)等非对称加密算法。这些算法具备较高的安全性和计算效率。哈希函数:举荐应用SHA-256、SHA-3等哈希函数,这些函数具备较高的安全性和抗碰撞能力。此外,还能够思考应用BLAKE2、GOST等其余哈希函数。

February 25, 2024 · 1 min · jiezi

关于python:人工智能的飞速发展中Sora正闪耀登场

引言:人工智能的新篇章在科技突飞猛进的时代,人工智能(AI)曾经成为咱们生存的一部分。从智能手机、主动驾驶汽车到智能家居零碎,AI的利用曾经渗透到咱们生存的方方面面。然而,随着技术的一直倒退,一个全新的AI产品正在锋芒毕露,它就是Sora。Sora与之前的产品不同,不只是一种娱乐形式,更是一种翻新的生产力,它正在重塑咱们了解和创立内容的形式。如果你对将来的内容创作充斥期待,那么Sora无疑将成为你的得力助手。 Sora:一款能够了解整个世界的常识的产品Sora是一款AI产品,它能够了解整个世界的常识,依照这些常识生成精彩纷呈的视频内容。这款产品的呈现,无疑是对传统内容创作的一种颠覆性的挑战。它不仅能够帮忙咱们更好地了解世界,还能够为内容创造者开拓全新天地。 1. Sora的外围性能Sora的外围性能是了解世界的常识和生成精彩的视频内容。通过深度学习和大数据分析,Sora能够获取大量的信息,而后通过算法将这些信息转化为乏味的视频内容。这种能力使得Sora在许多畛域都有宽泛的利用前景,如电影特效、动画制作、虚拟现实/加强事实等。 2. Sora的技术劣势Sora的技术劣势次要体现在以下几个方面: 弱小的数据处理能力:Sora能够解决大量的数据,包含文字、图片、音频和视频等,这使得它在解决简单信息时具备很大的劣势。先进的算法:Sora采纳了先进的深度学习和大数据分析算法,这使得它在了解和生成视频内容方面具备很高的精度和效率。丰盛的利用场景:Sora能够利用于许多畛域,如电影特效、动画制作、虚拟现实/加强事实等,这使得它具备很大的市场潜力。Sora:为内容创造者开拓全新天地的工具Sora的呈现,为内容创造者提供了一个全新的创作平台。通过应用Sora,内容创造者能够轻松地获取大量的信息,而后通过算法将这些信息转化为乏味的视频内容。这种创作形式不仅节俭了工夫,还进步了创作的效率和品质。 1. Sora的创作流程应用Sora进行内容创作的过程非常简单。首先,内容创造者须要将他们想要表白的信息输出到Sora中。而后,Sora会依据这些信息生成相应的视频内容。最初,内容创造者能够依据本人的需要对这些视频进行编辑和调整。 2. Sora的劣势Sora为内容创造者带来了许多劣势: 高效的创作过程:应用Sora进行内容创作,能够帮忙内容创造者节俭大量的工夫和精力。丰盛的创意起源:Sora能够提供大量的信息和常识,这为内容创造者提供了丰盛的创意起源。高质量的视频内容:Sora能够依据输出的信息生成高质量的视频内容,这使得内容创造者能够更加专一于内容的创意和表白。论断:拥抱将来,共创辉煌人工智能的倒退正在扭转咱们的生存和工作形式。在这个过程中,Sora作为一款AI产品,为咱们提供了一个全新的创作平台。通过应用Sora,咱们能够更好地了解世界,更高效地创作出精彩的视频内容。在将来的日子里,让咱们一起拥抱人工智能的倒退,共创一个更加美妙的将来。咱们第一工夫整顿了市面上最全的 Sora 学习材料,笼罩介绍、将来变现玩法、各路观点、技术解读等等,还创立了交换群。想要理解的小伙伴们,连忙点击下方退出咱们吧:docs.qq.com/doc/DQUFURXllVnBaa2pZ

February 25, 2024 · 1 min · jiezi

关于python:Python-潮流周刊第-39-期摘要

本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你筛选最值得分享的文章、教程、开源我的项目、软件工具、播客和视频、热门话题等内容。愿景:帮忙所有读者精进 Python 技术,并增长职业和副业的支出。 周刊全文:https://pythoncat.top/posts/2024-02-24-weekly 以下是本期摘要: 文章&教程 ① uv:Rust 开发的 Python 打包工具 ② Rye:愿景连续 ③ 为什么越来越多用 Rust 开发的库? ④ 80 行 Python 实现一个搜索引擎 ⑤ 如何计算 Python 中的 CPU 指令数? ⑥ Python 复用装璜器代码 ⑦ 像专业人士一样解决 Asyncio 工作 ⑧ 应用 textwrap 模块操作字符串 ⑨ 总结 Python 版本间的次要变更点 ⑩ 将 Postgres 作为队列应用 ⑪ 我在所有 Django 我的项目中都用的 20 个包 ⑫ Python 元类的实在案例 ⑬ 一万亿行气象数据的编程挑战 ️我的项目&资源 ① uv:性能极快的 Python 包装置和解析器 ② sqlite-web:基于 Web 的 SQLite 数据库工具 ...

February 24, 2024 · 1 min · jiezi

关于python:解决maven编译错误程序包comsunxmlinternalwsspi不存在

大家好我是咕噜美乐蒂,很快乐又和大家见面了!Maven是一个风行的Java项目管理工具,它能够帮忙咱们构建、治理和部署Java我的项目。当在应用Maven编译我的项目时,有时会遇到一些谬误,比方"程序包com.sun.xml.internal.ws.spi不存在"。这个问题通常呈现在应用Java Web Services(JAX-WS)相干的库时。上面我将提供一些解决这个问题的办法。1.查看依赖关系:首先,你须要查看我的项目的依赖关系。确保你曾经在pom.xml文件中正确地配置了相干依赖项。查找并确认是否存在与com.sun.xml.internal.ws.spi相干的依赖项。如果没有增加或者增加谬误的依赖项,可能会导致编译谬误。2.更新依赖版本:如果你曾经正确地增加了相干依赖项,但依然遇到编译谬误,那么有可能是因为依赖项的版本不兼容。你能够尝试更新依赖项的版本,以解决可能存在的兼容性问题。能够通过在pom.xml文件中批改相应依赖项的版本号来实现。3.排除抵触的依赖项:有时候,我的项目中可能存在多个依赖项之间的抵触。这些抵触可能导致编译谬误。你能够通过排除抵触的依赖项来解决这个问题。在pom.xml文件中,应用<exclusions>元素来排除特定依赖项的传递性依赖。例如:xml<dependency> <groupId>com.example</groupId><artifactId>example-artifact</artifactId><version>1.0.0</version><exclusions> <exclusion> <groupId>com.sun.xml.internal.ws.spi</groupId> <artifactId>example-dependency</artifactId> </exclusion></exclusions></dependency>这样做将排除指定依赖项的传递性依赖关系,从而解决抵触问题。4.查看Java版本:确保你正在应用与依赖项兼容的Java版本。有些依赖项可能须要特定的Java版本能力失常工作。如果你的Java版本与依赖项不兼容,那么可能会导致编译谬误。查看并降级你的Java版本,以确保与我的项目中应用的依赖项相匹配。5.清理和从新构建:有时候,编译谬误可能是因为构建过程中的一些长期问题引起的。你能够尝试清理我的项目,并从新构建它。能够应用Maven的命令行工具执行以下命令:mvn cleanmvn compile这将革除我的项目目录中的临时文件和构建产物,并从新编译我的项目。6.查看其余开发者的解决方案:如果你依然无奈解决编译谬误,能够在互联网上搜寻相似的问题,查看其余开发者是如何解决这个问题的。可能会有一些特定于你的状况的解决方案。总结起来,解决"Maven编译谬误:程序包com.sun.xml.internal.ws.spi不存在"的办法包含查看依赖关系、更新依赖版本、排除抵触的依赖项、查看Java版本、清理和从新构建以及参考其余开发者的解决方案。通过应用这些办法,你应该可能解决这个问题并胜利编译你的我的项目。祝你好运!好啦,明天美乐蒂就和大家分享到这里啦,小伙伴们有更好的方法能够在评论区打进去哦~~以便大家更不便地操作呢。

February 24, 2024 · 1 min · jiezi

关于python:20个改善编码的Python异常处理技巧让你的代码更高效

异样解决是写好代码的一个重要的方面,尽管许多开发人员都相熟根本的try-except块,然而有很多更深刻的常识能够使异样解决更高效、更可读和更python化。所以本文将介绍对于Python异样的20个能够显著改善编码的Python异样解决技巧,这些技巧能够让你纯熟的把握Python的异样解决。 Python中的异样是在程序执行期间产生的毁坏了程序指令的失常流程的事件。与其余编程语言一样,Python应用异样来代表谬误产生的信号,程序能够做出反馈,并复原或告诉用户产生的问题。 1、最简略的异样解决咱们都晓得最简略的异样解决如下: try: # Your code here except IOError: # Handle I/O errors except Exception as e: # Handle other exceptions finally: # Cleanup, runs no matter what异样是按层次结构组织的,如果产生了IOError会执行IOError的except代码,剩下的异样则交由Exception解决。了解这个层次结构能够依据须要更宽泛或更具体地捕捉谬误。 应用finally子句确保执行清理操作,而不论是否产生异样。它非常适合敞开文件或开释资源。 2、自定义异样创立自定义异样能够使代码更具可读性和可维护性,能够分明地示意特定的谬误条件。 class MyCustomError(Exception): pass try: raise MyCustomError("A specific error occurred") except MyCustomError as e: print(e)3、Else in Try-Except如果没有引发异样,则try-except块中的else子句将运行。这是其余语言没有的 try: # Attempt operation except Exception: # Handle error else: # Executes if no exceptions4、AS关键字在捕捉异样时,能够应用as关键字将异样调配给一个变量,这样能够显示详细信息并使调试更容易。 try: # Some operation except Exception as e: print(f"Error: {e}")5、捕捉多个异样元组可用于在一行中捕捉多种异样类型,从而简化错误处理代码。 ...

February 24, 2024 · 2 min · jiezi

关于python:使用-python-通过代理服务器访问网络

要应用不同的IP地址拜访网站,你能够通过代理服务器来实现。Python的requests库反对通过代理拜访网络资源,这是一种常见的做法。上面是一个根本示例,展现如何应用requests库通过不同的代理IP地址去拜访一个网站。 首先,确保你曾经装置了requests库。如果没有装置,能够通过pip装置: pip install requests而后,你能够应用以下代码通过代理拜访一个网站: import requests# 定义代理IP地址和端口,示例中应用的是假如的代理,请替换为理论可用的代理proxies = { "http": "http://your_proxy_ip:proxy_port", "https": "http://your_proxy_ip:proxy_port",}# 指标网站的URLurl = 'http://example.com'try: # 应用代理拜访网站 response = requests.get(url, proxies=proxies) # 打印网页内容 print(response.text)except Exception as e: print(f"Error accessing {url} through proxy: {e}")请留神,这里的"your_proxy_ip:proxy_port"须要替换成你的代理服务器的IP地址和端口号。如果你的代理服务器须要认证,你还须要在代理地址中蕴含用户名和明码,格局如下: proxies = { "http": "http://username:password@your_proxy_ip:proxy_port", "https": "http://username:password@your_proxy_ip:proxy_port",}应用不同的IP地址拜访网站通常是为了匿名化或绕过一些地理位置限度。但请确保你应用这种办法时恪守指标网站的应用条款和相干法律法规。代理服务器的抉择和应用须要审慎,倡议应用可信赖的代理服务提供商。 指定 proxy 的代码: http_proxy = "http://194.62.145.248:8080"https_proxy = "https://194.62.145.248:8080"ftp_proxy = "10.10.1.10:3128"proxyDict = { "http" : http_proxy, "https" : https_proxy, "ftp" : ftp_proxy }优化网络申请设置requests 库提供了多种设置来优化网络申请,包含超时设置、重试逻辑等。在面对网络不稳固或代理服务器响应慢的状况时,正当的超时设置和重试机制能够显著进步利用的健壮性。 设置申请超时:通过 timeout 参数能够指定申请的最大等待时间。应用重试逻辑:能够应用 requests 库的 Session 对象和 HTTPAdapter 来实现主动重试策略。from requests.adapters import HTTPAdapterfrom requests.packages.urllib3.util.retry import Retryimport requestssession = requests.Session()retries = Retry(total=5, backoff_factor=0.1, status_forcelist=[500, 502, 503, 504])session.mount('http://', HTTPAdapter(max_retries=retries))session.mount('https://', HTTPAdapter(max_retries=retries))response = session.get('https://cloud.tencent.com/developer/article/2388638', proxies=proxies, timeout=5)print(response.text)

February 23, 2024 · 1 min · jiezi

关于python:Python-代码使用代理服务器访问网络遇到连接无法建立的错误

在面对应用 Python 的 requests 库通过代理拜访 URL 时遇到的谬误,如 Error accessing https://cloud.tencent.com/developer/article/2388638 through proxy: HTTPSConnectionPool(host='cloud.tencent.com', port=443): Max retries exceeded with url: /developer/article/2388638 (Caused by ProxyError('Unable to connect to proxy', NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x0000027520A40880>: Failed to establish a new connection: [WinError 10061] No connection could be made because the target machine actively refused it'))), 咱们能够通过一系列的诊断和解决步骤来尝试修复这一问题。这个谬误表明尝试通过指定的代理服务器连贯到指标 URL 时,连贯被代理服务器回绝了。 诊断问题错误信息表明代理服务器回绝了连贯申请。这可能是因为多种起因造成的,包含但不限于代理服务器配置谬误、网络问题、或者代理服务器软件自身的问题。要无效解决这个问题,须要从根底做起,逐渐排查可能的起因。 1. 查看代理服务器配置确保代理服务器的地址、端口和认证信息(如果需要的话)是正确的。如果你在代码中硬编码了代理服务器的配置,应该从新查看这些配置信息是否正确无误。如果应用的是环境变量来配置代理,同样须要确保这些环境变量设置正确。 2. 验证网络连接确保你的机器能够拜访代理服务器。能够应用 ping 或者 telnet 命令来测试代理服务器的地址和端口是否可达。例如,如果代理服务器的地址是 proxy.example.com,端口是 8080,你能够在命令行中运行 telnet proxy.example.com 8080 来查看连贯是否胜利。 ...

February 23, 2024 · 1 min · jiezi

关于python:python-urlopen-的使用方法介绍

为了深刻解析这段 Python 代码及其含意,咱们须要逐渐拆分并具体探讨代码中的每个元素,以及它们在网络编程和平安通信中的作用。同时,咱们将探讨代码中存在的安全隐患以及如何解决这些问题。 解读代码段代码段如下: from urllib.request import urlopenimport sslurlopen(`https://www.howsmyssl.com/a/check`, context=ssl._create_unverified_context()).read()这段代码次要执行了一个 HTTPS 申请,指标是 https://www.howsmyssl.com/a/check,这个网站用于查看发动申请的 SSL/TLS 客户端的安全性。接下来,咱们将具体解析代码的每个局部。 导入 urlopen 和 sslfrom urllib.request import urlopen: 这行代码从 Python 的 urllib.request 模块中导入 urlopen 函数。urllib 是 Python 的规范库之一,提供了一系列用于操作 URL 的性能,其中 urlopen 函数用于关上一个 URL。import ssl: 这行代码导入了 Python 的 ssl 模块。ssl 模块提供了一系列用于解决 SSL 和 TLS 的工具,是 Python 中实现加密链接的外围模块。发动 HTTPS 申请urlopen(https://www.howsmyssl.com/a/check, context=ssl._create_unverified_context()): 这行代码应用 urlopen 函数发动一个 HTTPS 申请到 https://www.howsmyssl.com/a/check。要害参数 context=ssl._create_unverified_context() 创立了一个 SSL 上下文,这个上下文不验证 SSL 证书。这是一个十分重要的局部,因为它波及到平安通信的基本。.read(): 这部分代码读取并返回从 urlopen 函数获取的数据。通常,这些数据是以字节模式返回的,蕴含了网站的响应内容。安全隐患与解决办法应用 ssl._create_unverified_context() 办法导致 Python 疏忽了 SSL 证书的验证。尽管这样能够解决自签名证书或证书验证过程中遇到的问题,但同时也引入了平安危险,因为它使得客户端容易受到中间人攻打(MITM)。 ...

February 22, 2024 · 1 min · jiezi

关于python:使用-Python-结合-Selenium-访问一个-url

环境筹备在开始之前,确保你的零碎中曾经装置了 Python。此外,你须要装置 Selenium 包,以及对应的 WebDriver。Selenium 是一个自动化测试工具,能够模仿在网页上的各种操作,比方点击、输出等。WebDriver 是一个浏览器特定的驱动程序,它容许 Selenium 管制浏览器。 pip install selenium依据你抉择的浏览器,下载对应的 WebDriver,并确保它的门路曾经增加到零碎的环境变量中。这是必要的步骤,以便 Selenium 可能启动和操作浏览器。比方,如果你应用 Chrome 浏览器,你须要下载 ChromeDriver。 编写代码导入 Selenium 的 WebDriver 库,而后创立一个浏览器实例。应用该实例关上一个 URL,并执行你须要的任何操作。 from selenium import webdriverfrom selenium.webdriver.common.keys import Keysfrom selenium.webdriver.chrome.options import Options# 配置 WebDriverchrome_options = Options()chrome_options.add_argument(`--headless`) # 无界面模式chrome_options.add_argument(`--no-sandbox`)chrome_options.add_argument(`--disable-dev-shm-usage`)driver = webdriver.Chrome(options=chrome_options)# 拜访 URLurl = `http://example.com`driver.get(url)# 在此处增加你的操作,比方查找元素、点击等# 敞开浏览器driver.quit()操作元素应用 Selenium,你能够模仿大部分用户交互。比方,找到输入框并输出文字,点击按钮等。 # 找到元素并输出文字input_element = driver.find_element_by_name(`q`)input_element.send_keys(`Selenium`)input_element.send_keys(Keys.RETURN) # 模仿按下回车键# 期待页面加载后果driver.implicitly_wait(10) # 期待 10 秒# 找到并点击链接link_element = driver.find_element_by_link_text(`Selenium - Web Browser Automation`)link_element.click()解决异样在应用 Selenium 时,可能会遇到元素未找到等异样。为了更持重地解决这些状况,能够应用 try-except 块。 ...

February 22, 2024 · 1 min · jiezi

关于python:fastapi-关于线程池同步异步的问题解答汇总

seo优化: 如何在 python 的 asyncio 外面执行同步函数并且不阻塞事件循环如何在 python 的 fastapi 外面执行同步函数并且不阻塞事件循环fastapi 的视图函数加不加 async 的区别fastapi 如何在异步视图函数外面执行同步代码?uvicorn 如何调节线程池大小 peewee 会阻塞 fastapi 的 异步协程吗 python asyncio,如何在异步中执行同步函数怎么办?

February 22, 2024 · 1 min · jiezi

关于python:Python基础语法条件控制四

一、if语句Python条件管制之if语句的语法结构: '''if语句根本构造如下:if 条件1: 条件代码1elif 条件2: 条件代码2else: 条件代码3'''# 案例如下#!/bin/bashnum_list = [1,2,3,4,5,6]if len(num_list) > 3: # 条件1 print("num_list列表的长度为:"len(num_list) + ",大于3" )elif max(num_list) < 3: # 条件2 print("num_list列表的最大值为:"max(num_list))else: # 其余状况条件 print("其余状况")如果满足条件1,则执行条件1的代码;如果满足条件2,则执行条件2的代码;其余所有状况执行其余的逻辑代码。Python的条件语句中用elif关键字代替了 else if ,每个条件前面跟:,冒号前面是具体的逻辑代码,切记要应用缩进格局来控制代码块,雷同缩进的语句在一起形成一组代码块if语句中能够应用运算符进行条件判断 ,> < >=等,也可应用逻辑运算符和身份运算符进行判断。二、match case语句Python也能够用match ... case语句进行条件判断,具体语法结构如下 '''# match .. .case 语法结构: match 对象: case 条件1: 执行代码1 case 条件2: 执行代码2 case 条件3: 执行代码3 case _: 执行其余代码'''# 案例如下#!/bin/bashobj_list = ['java','python','go','groovy','C']for obj in objlist: match obj: case 'java': print("我是java") case 'python': print("我是Python") case 'groovy': print("我是groovy") case _: print("我是其余语言") match ... case也能够匹配多个条件,条件间用【|】分隔,例如:case "java" | "python"三、if嵌套根本格局如下: ...

February 22, 2024 · 1 min · jiezi

关于python:Python基础语法运算符三

一、算数运算符设变量a,b=10,23 运算符运算符含意运算后果+加法计算c = a+b 后果为 33--减法计算:c = b-a 后果为 13*乘法计算c = a*b 后果为 231/除法计算c = b/a 后果为 2.3%取模,取除法计算的余数设c = 2 c % a = c / a 后果为 0**幂 返回x的y次方a**b 后果为 10的21次方//除法取整数计算b // a 后果为 2二、比拟运算符设变量a,b=10,23 运算符运算符含意运算后果==等于 比拟对象是否相等,等同于id()函数a == b 后果返回false!=不等于 比拟两个对象是否不相等a != b 后果返回true>大于a > b 返回后果 false<小于a < b 返回后果 true>=大于等于a >= b 返回后果 false<=小于等于a <= b 返回后果 true//除法取整数计算b // a 后果为 2三、赋值运算符设变量a,b=10,23 运算符运算符含意运算后果=根本赋值运算符c = a+b 给变量c赋值,返回后果 33+=加法赋值估算符b += a 等同于 b = b + a-=减法赋值运算符b -= a 等同于 b = b - a*=乘法赋值运算符b = a 等同于 b = b a/=除法赋值运算符b /= a 等同于 b = b / a%=取模赋值运算符b %= a 等同于 b = b % a**=幂等值运算符符b = a 等同于 b = b a//=取整除运算符b **= a 等同于 b = b // a四、位运算符按位运算符是把数据转化为二进制进行计算a = 0011 1100b = 0000 1101 ...

February 22, 2024 · 2 min · jiezi

关于python:Python删除列表元素的3种方法你都会吗

删除列表元素的3种办法依据下标删除,应用del关键词names = ['张三', '李四', '王五', '赵六‘, ’罗翔', '卢锡安']print(names)#删除第3个元素,del是delete的缩写del names[2] #再次打印会产生王五不见了print(names)注:del是一个关键词,而不是一个函数所以不是应用小括号:del(names[2]),而是应用空格:del names[2] 删除报错依据下标删除必须保障下标是存在的,否则程序会报错: names = ['张三', '李四']#删除第3个元素,这里会报IndexError谬误,因为只有2个元素,无奈删除第3个del names[2]# 报错:IndexError: list assignment index out of range为了避免报错,让程序更加稳固牢靠,咱们能够先判断一下再删除: names = ['张三', '李四']#先应用len函数判断是否长度不小于3,才执行删除操作if len(names) >= 3: del names[2]应用pop办法删除除了应用del关键词,还能够应用pop办法来删除元素,而且pop有几个特点: pop不指定下标时,默认会删除最初一个pop也能够指定下标,删除指定地位的元素。如果下标非法,也会抛出IndexErrorpop会返回以后删掉的值给name变量,而del不能返回,仅仅是执行删除操作names = ['张三', '李四', '王五', '赵六‘, ’罗翔', '卢锡安']#删除最初1个元素name = names.pop() print(name)#删除倒数第2个元素name = names.pop(-2)print(name)依据值删除有时候咱们不晓得元素的下标,就想要删除某个特定的值,这时候应用remove办法。 names = ['张三', '李四', '王五', '赵六‘, ’罗翔', '卢锡安']#删掉赵六n = names.remove('赵六')print(n)删除值报错如果被删除的值不存在,程序会报一个ValueError谬误,因为要删除的不存在。 names = ['张三', '李四', '王五', '赵六‘, ’罗翔', '卢锡安']#上面一行会报ValueError谬误,因为列表中没有王八。n = names.remove('德莱文')为了避免报错,咱们能够应用in关键词,先断定要删除的值是否在列表中: #应用in关键词判断王八是否在列表中if '德莱文' in names: n = names.remove('德莱文') print(n)in关键词是一个Python的操作符,用来判断后面的元素(王八)是否在前面的列表中(names)。in也能够利用本章前面学到的元组,字典中。 ...

February 21, 2024 · 1 min · jiezi

关于python:Python打印文件树

# coding=utf-8import os.pathimport sysimport timelink1 = "─┬─"link2 = "├──"link3 = "───"link4 = "└──"link5 = " │ "link6 = " "link7 = "│ "class File(object): def __init__(self, abs_path, name, children=[]): self.abs_path = abs_path self.name = name self.children = children self.next = None def __repr__(self) -> str: return str({'name': self.name, 'children': self.children })def create_path(parent, file): return parent + os.sep + filedef sub_dirs(path): return [x for x in os.listdir(path) if os.path.isdir(create_path(path, x))]def sub_dirs_abs(path): return [create_path(path, x) for x in os.listdir(path) if os.path.isdir(create_path(path, x))]def dir_tree(path): parent = File(path, os.path.basename(path), []) dirs = sub_dirs_abs(path) for dir in dirs: kid = dir_tree(dir) parent.children.append(kid) for i in range(len(parent.children) - 1): parent.children[i].next = parent.children[i + 1] return parentdef space(num=0): return " " * numdef print_prefix(): passdef print_dir_tree(dir, link='', deep=0, prefix_print=''): print(prefix_print, end="") print(link, end="") print(dir.name) if dir.next: prefix_print += link7 else: prefix_print += link6 for i in range(len(dir.children) - 1): print_dir_tree(dir.children[i], link2, deep + 1, prefix_print) if len(dir.children) >= 1: print_dir_tree(dir.children[-1], link4, deep + 1, prefix_print)def main(argv): base_path = argv[1] if len(argv) >= 2 else os.path.abspath('.') root = dir_tree(base_path) print_dir_tree(root)if __name__ == '__main__': start = time.time() main(sys.argv) end = time.time() print("print dir tree cost {:.2f}s".format(end - start))

February 20, 2024 · 1 min · jiezi

关于python:Python教程25Python中参数类型详解

更多精彩内容,请关注同名公众:一点sir(alittle-sir)当咱们在编写函数时,会定义一些占位符,这些占位符就是参数,参数是函数定义中用于接管内部传递值的占位符,这个会帮忙咱们在函数被调用时接管内部传递的值。在Python当中,有各种各样类型的参数,次要有地位参数、默认参数、关键字参数、可变地位参数、可变关键字参数以及强制关键字参数。 地位参数地位参数(Positional Arguments)是最常见的参数类型,也是默认的参数类型,大家平时写的函数基本上都是地位参数,算是十分好了解的。它们依照在函数定义中的程序进行传递,并且在函数调用时必须依照程序提供。 def greet(name, message): print(message, name)greet("Alittle", "Hello") # 输入: Hello Alittle ````## 默认参数默认参数(Default arguments)就是这些参数在函数定义时就有默认值,当函数被调用时,如果没有为该参数提供特定的值,那么就会应用默认值作为参数的值。通过给参数设置默认值,能够让函数在某些状况下更加灵便和方便使用。如果调用函数时没有提供该参数的值,函数就会应用默认值,否则将应用传递给参数的值。def greet(name, message="Hello"): print(message, name)应用默认参数调用函数greet("Alittle") # 输入: Hello Alittle 传递特定的参数值调用函数greet("Kobe", "Hi") # 输入: Hi Kobe 须要留神的是,在Python中,默认参数是依照从左到右的程序顺次设置的,如果你想给第一个参数设置默认值,必须确保它位于前面的参数之前。也就是说给倒数第二个参数设置默认值,必须先给倒数第一个参数设置默认值。def greet(name="Iverson", message): print(message, name)因为第一个参数设置了默认值,能够仅传递第二个参数greet("Kobe") 以上例子运行的时候会报错:File "D:\Program Files\JetBrains\PycharmProjects\hello.py", line 33 def greet(name="Iverson", message): ^^^^^^^SyntaxError: non-default argument follows default argument 尝试给第一个参数设置默认值时会呈现语法错误。这是因为在定义函数时,默认参数只能放在非默认参数的前面。所以如果咱们想给第一个参数设置默认值,能够思考应用关键字参数的形式传递参数值,或者两者参数换一下地位就能够了。## 关键字参数关键字参数(Keyword Arguments)是一种在函数调用时应用参数名称来指定参数值的形式。应用关键字参数能够使函数调用更加清晰和易读,特地是当函数有多个参数且它们具备雷同的数据类型或默认值时。就比方下面默认参数的那个例子:def greet(name, message): print(message, name)应用关键字参数调用函数greet(name="Iverson", message="Hello") # 输入: Hello Iversongreet(message="Hi", name="Kobe") # 输入: Hi Kobe 在上述示例中,咱们在函数调用时通过参数名称指定了参数值。这样一来,不仅能够精确传递参数,还能够使函数调用的用意更加清晰和易懂。即便函数定义中第一个参数设置了默认值,运行也不会报错。所以应用关键字参数能够显式地指定参数名称,能够防止因参数程序谬误而导致的谬误。并且只给关怀的参数传递值,而疏忽其余参数。在函数调用时提供了更好的可读性和可维护性。## 可变地位参数可变地位参数(Variable Length Positional Arguments)是一种容许函数承受任意数量的地位参数的个性。在函数定义时,应用星号(\*)作为前缀来示意可变地位参数。它会将所有传入的地位参数打包成一个元组(tuple)。在函数定义时,咱们能够在参数列表中应用\*args来接管这些参数。def calculate_sum(*numbers): ...

February 18, 2024 · 1 min · jiezi

关于python:如何使用Python打造办公小助手工具

 明天,给大家介绍 Python 一些鲜为人知的操作。 这些操作,并非是炫技,而是真的实用! 性能合集,欢送大家 star: https://gitee.com/CoderWanFeng/python-office 以下代码 1. 生成二维码 咱们在日常生活中常常看到二维码,QR 码节俭了很多用户的工夫。咱们也能够用 python 库 qrcode 为网站或个人资料创立独特的 QR 码。 装置 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple python-office -U 代码 # 导入库import office# 执行这行代码,生成链接对应的二维码office.tools.qrcodetools('http://python4office.cn/python-office/profile/') 2. 翻译 咱们生存在一个多语言的世界里。因而,为了了解不同的语言,咱们须要一个语言翻译器。咱们能够在 python 库 Translator 的帮忙下创立咱们本人的语言翻译器。 装置 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple python-office -U 代码 # 导入这个库import office # to_lang,是翻译的后果应用哪种语言,反对寰球100多个语言;content,是你想翻译的文本内容office.tools.transtools(to_lang='Chinese', content='程序员') 3. 提取音频 在某些状况下,咱们有 mp4 文件,但咱们只须要其中的音频,比方用另一个视频的音频制作一个视频。 咱们为取得雷同的音频文件做了足够的致力,但咱们失败了。这个问题用 python 库 moviepy 能够轻而易举的解决。 装置 ...

February 18, 2024 · 1 min · jiezi

关于python:频繁调一个http请求和多个不同http请求性能一样吗

在探讨频繁调用一个HTTP申请和多个不同HTTP申请的性能时,咱们须要思考几个关键因素,包含网络提早、服务器解决能力、申请的复杂性以及网络带宽等。在某些状况下,频繁调用一个HTTP申请可能和多个不同HTTP申请具备类似的性能,但在其余状况下,这两种做法可能会产生截然不同的后果。以下是对这个问题的详细分析。 网络提早和服务器解决能力网络提早是因为网络传输过程中的各种提早因素导致的,例如数据包的传输工夫、路由器的解决工夫等。服务器解决能力则指的是服务器硬件和软件对申请的处理速度。在某些状况下,频繁调用一个HTTP申请可能会进步服务器解决能力的利用率,从而缩小总的响应工夫。这是因为服务器能够在解决完一个申请后立刻开始解决下一个申请,而无需期待网络提早的工夫。 然而,如果服务器解决能力无限,频繁调用一个HTTP申请可能会导致服务器过载,从而减少响应工夫。此外,如果网络提早较大,频繁调用一个HTTP申请可能并不会进步性能,因为网络提早可能会成为瓶颈。         2.申请的复杂性 HTTP申请的复杂性对性能也有影响。如果一个HTTP申请须要解决大量的数据或进行简单的计算,那么该申请可能须要更长的工夫能力实现。在这种状况下,频繁调用一个简单的HTTP申请可能会导致性能降落。然而,如果多个不同的HTTP申请都比较简单,那么这些申请能够并行处理,从而可能进步总体性能。         3.网络带宽 网络带宽也是影响性能的一个重要因素。如果网络带宽无限,频繁调用一个HTTP申请可能会导致网络拥挤,从而减少响应工夫。然而,如果多个不同的HTTP申请都比拟小,那么这些申请能够并行传输,从而可能进步总体性能。 综上所述,频繁调用一个HTTP申请和多个不同HTTP申请的性能取决于多种因素,包含网络提早和服务器解决能力、申请的复杂性以及网络带宽等。在某些状况下,这两种做法可能具备类似的性能,而在其余状况下,它们可能会产生截然不同的后果。因而,在设计和优化Web应用程序时,应该依据具体情况进行衡量和剖析,以抉择最适宜的策略。 在理论利用中,能够通过一些技术手段来优化HTTP申请的性能。例如,能够应用缓存技术来防止反复的HTTP申请,能够施行负载平衡来进步服务器解决能力,能够应用HTTP/2协定来缩小网络提早和拥塞等。此外,还能够通过代码优化、数据库优化等形式来晋升整个应用程序的性能。

February 16, 2024 · 1 min · jiezi

关于python:常见java错误arthas的使用常用命令

arthas的应用arthas是一款弱小的Java诊断工具,能够帮忙开发者疾速定位和解决Java应用程序中的问题。本文将介绍arthas的根本应用办法,包含装置、启动、根本命令和高级性能。 一、装置arthas1.1 Windows零碎在Windows零碎中,能够通过以下步骤装置arthas: 拜访arthas的GitHub发布页面:https://github.com/alibaba/arthas/releases下载最新版本的arthas(以arthas-boot.jar为例),并将其解压到一个目录中,例如:C:arthas将arthas的bin目录增加到零碎的PATH环境变量中,例如:C:\arthas\bin关上命令提示符,输出arthas --version,如果显示arthas的版本信息,则示意装置胜利。1.2 Linux零碎在Linux零碎中,能够通过以下步骤装置arthas: 拜访arthas的GitHub发布页面:https://github.com/alibaba/arthas/releases下载最新版本的arthas(以arthas-boot.jar为例),并将其解压到一个目录中,例如:/opt/arthas将arthas的bin目录增加到零碎的PATH环境变量中,例如:/opt/arthas/bin关上终端,输出arthas --version,如果显示arthas的版本信息,则示意装置胜利。二、启动arthas2.1 在线模式在线模式下,arthas会附加到指标Java过程上,实时监控和诊断Java应用程序。启动arthas的命令如下: java -jar arthas-boot.jar <指标过程ID>其中,<指标过程ID>是指标Java过程的ID。能够通过jps命令查看以后运行的Java过程及其ID。 2.2 离线模式离线模式下,须要先导出指标Java过程的内存快照(core文件),而后应用arthas剖析该快照。启动arthas的命令如下: java -jar arthas-boot.jar --core <core文件门路>其中,<core文件门路>是指标Java过程的内存快照文件门路。 三、根本命令3.1 help命令help命令能够查看arthas反对的所有命令及其简要阐明。输出help后,会显示如下输入: Usage: help [command] [options] -h | --help | --version | --description | --groups | --classloaders | --threads | --dependencies | --dashboard | --interceptors | --sc | --jad | --mc | --redefine | --watch | --option | --websocket | --telnet | --ssh | --local | --tunnel | --selectJvm | --selectClassLoader | --selectInstace | --attach | --detach | --quit | --close | --reset | --reload | --kill | --suspend | --resume | --interrupt | --interactive | --batch | --sampler [options] | --sample <pattern> [options] | --monitor <pattern> [options] | --trace <pattern> [options] | --stack <pattern> [options] | --tt <pattern> [options] | --info <pattern> [options] | --methods [options] | --params [options] | --bp <pattern> [options] | --jad <pattern> [options] | --mc <pattern> [options] | --redefine <pattern> [options] | --watch <pattern> [options] | --option <pattern> [options] | --dashboard [options] | --interceptors [options] | --sc <pattern> [options] | --jad <pattern> [options] | --mc <pattern> [options] | --redefine <pattern> [options] | --watch <pattern> [options] | --option <pattern> [options] | --dashboard [options] | --interceptors [options] | --sc <pattern> [options] | --jad <pattern> [options] | --mc <pattern> [options] | --redefine <pattern> [options] | --watch <pattern> [options] | --option <pattern> [options] | --dashboard [options]br -b, -eBreakpoint, -nNew breakpoint, -cClear breakpoint, -lList breakpoints, -aAll breakpoints, -iInfo breakpoint, -xDisable breakpoint, -dDelete breakpoint, -hHelp, -vVersion, -tThread, -oOption, -fForce, -qQuick mode, -mMethod trace filter, -pPattern match, -rRange match, -uUser defined range match, -gGroup match, -LLine number match, -NNext line match, -CClass match, -EException match, -SSource match, -FField match, -DDebugger command match, -GGroup name match, -HHot swap match, -MMethod modifier match, -IInstance ID match, -RRemote IP match, -TThread CPU time threshold (ms), -WWaiting for matching thread to suspend, -XSkip matched method in stack trace, -YForce matched method in stack trace, -ZEnable class redefinition, -UUse agent built-in properties and variables as default values when parsing option arguments, -KKeep alive interval (ms), -PPlugin class name pattern match, -AAgent address match, -BBatch mode flag, -CConnect address and port of target JVM or agent process, -DConnect address and port of local JVM or agent process if tunnel is enabled, -EError message template for batch mode output, -FFile path pattern match for batch mode input and output files, -GGroup name pattern match for batch mode input and output files, -HHelp message template for batch mode output, IInterval between batch mode commands (ms), JNumber of times to repeat batch mode command execution, KKeep alive interval (ms), LLog level for batch mode output messages, MMessage template for batch mode output messages with placeholders for error codes and error messages from failed commands or scripts in batch mode output file(s), NNumber of lines to skip at the beginning of batch mode input file(s), OOutput file path for batch mode output messages and error messages from failed commands or scripts in batch mode output file(s), PPlugin class name pattern match for batch mode input and output files, QQuick mode flag for batch mode commands execution, RRemote IP pattern match for batch mode input and output files, SSource pattern match for batch mode input and output files, TTarget JVM or agent process ID or address pattern match for batch mode commands execution and input/output files selection if tunnel is enabled or not specified respectively3.2 watch参数的根本用法watch参数的根本用法非常简单,只须要在arthas命令行中输出watch关键字,前面跟上要监控的办法名即可。例如,咱们想要监控com.example.demo.service.UserService类的addUser办法,能够输出以下命令: ...

February 14, 2024 · 3 min · jiezi

关于python:运维测试移动测试自动化知识总结第1篇移动端测试介绍md文档已分享

<article class=“article fmt article-content”><p></p><h5>本系列文章md笔记(已分享)次要探讨挪动测试相干常识。次要知识点包含:挪动测试分类及android环境搭建,adb常用命令,appium环境搭建及应用,pytest框架学习,PO模式,数据驱动,Allure报告,Jenkins继续集成。把握操作app的根本api,把握元素定位及获取元素信息的api,把握事件操作api,把握app模仿手势操作,把握手机操作的api。把握pytest函数执行程序,把握pytest函数参数化,把握PO模式的作用,把握yaml语法。可能应用allure和pytest生成测试报告。</h5><h2>全套笔记和代码自取移步gitee仓库: gitee仓库获取残缺文档和代码</h2><h2>感兴趣的小伙伴能够自取哦,欢送大家点赞转发~</h2><hr/><h3>共 7 章,34 子模块</h3><p></p><h2>挪动端测试介绍</h2><h3>学习次要内容</h3><table><thead><tr><th>1</th><th>挪动测试分类及android环境搭建</th></tr></thead><tbody><tr><td>2</td><td>adb常用命令</td></tr><tr><td>3</td><td>appium环境搭建及应用</td></tr><tr><td>4</td><td>pytest框架学习</td></tr><tr><td>5</td><td>PO模式</td></tr><tr><td>6</td><td>数据驱动</td></tr><tr><td>7</td><td>Allure报告</td></tr><tr><td>8</td><td>Jenkins继续集成</td></tr></tbody></table><h3>学习指标</h3><ol><li>把握挪动端安卓模拟器的装置</li><li>把握常见的adb指令</li><li>理解支流的挪动端自动化测试工具</li><li>把握appium环境搭建</li><li>理解appium入门案例</li></ol><h2>挪动端测试常识概览</h2><h3>学习指标</h3><ul><li>理解挪动端测试分类</li></ul><h4>1. 什么事挪动端测试</h4><p>挪动端测试是指对挪动利用进行的测试, 即实体的个性满足需要的水平</p><h4>2. 挪动端测试分类</h4><h5>2.1 app功能测试</h5><ul><li>业务逻辑正确性测试</li></ul><pre><code class=“python”>1. 查看是否合乎业务需要文档2. 是否满足隐性需要</code></pre><ul><li>兼容性测试</li></ul><pre><code class=“python”>1. 零碎版本是否兼容: 安卓 原生零碎高低版本间是否兼容,例如安卓10.0的是否兼容9.0 二次开发的零碎, 比方小米的MIUI零碎间的兼容、华为的EMUI高低版本间兼容性是否良好 ios 版本间的兼容是否良好2. 分辨率是否兼容3. 网络状况 弱网测试、WIFI限速、更改网络app模式</code></pre><ul><li>异样测试</li></ul><pre><code class=“python”>1.热启动利用 [1]app至于后盾时是A页面,切换到前台,还是A页面,还是初始化页面 [2]app长时间置于后盾,切换到前台,还是A页面,还是初始化页面,解体/闪退2.网络切换和中断复原 [1]4g-2g wifi-4g,保障app可用,业务失常 [2]wif-断网-wifi 断点续传 下载利用5M 下载了3M断网,再次联网,持续以后地位下载3.电话和信息中断复原 [1]电话:看视频,打电话30分钟,切换为持续查看地位 [2]短信:玩游戏 4.降级装置卸载测试 [1]降级测试 邻近版本升级 1.0—>1.1—>1.2 跨版本升级 1.0—->2.0 [2]装置测试 首次装置 笼罩装置 高版本—>低版本 胜利 低版本—>高版本 不容许 卸载后装置 [3]卸载测试 首次卸载 卸载—>装置—>卸载 5.健壮性测试 手机资源耗费 流量耗费 解体复原等测试</code></pre><h5>2.2 app自动化测试</h5><pre><code class=“python”>通过场景和数据的预设,把以人为驱动的测试行为转化为机器执行的一种过程.⚠ 留神: 并不是所有性能都能进行自动化.</code></pre><h5>2.3 app平安测试</h5><pre><code class=“python”>通过平安测试技术,保障app尽可能的不存在安全漏洞.</code></pre><p>更多挪动测试参考:</p><ul><li>挪动测试的分类</li></ul><h2>挪动端测试环境搭建</h2><p>挪动端自动化测试的根底环境配置</p><ul><li><ol><li>装置Java环境</li></ol></li></ul><pre><code class=“python”>Android利用为例解说,须要装置java环境</code></pre><ul><li><ol><li>SDK环境</li></ol></li></ul><pre><code class=“python”>Android依赖SDK的环境</code></pre><ul><li><ol><li>模拟器环境</li></ol></li></ul><pre><code class=“python”>思考大家连贯真机不不便,所以采纳模拟器代替</code></pre><h4>1. Wind 装置java环境</h4><p>装置步骤:</p><h5>1.1 装置jdk1.8</h5><pre><code class=“python”>运行jdk-8u151-windows-x64.exe⽂件,默认装置即可(例如我的装置⽬录:C:\Program Files\Java\jdk1.8.0)</code></pre><h5>1.2 配置java环境变量(windows为例)</h5><pre><code class=“python”>1.进入我的电脑–>属性–>高级零碎设置—>环境变量2.在零碎变量下点击新建 -> 变量名: JAVA_HOME -> 变量值: C:\Program Files\Java\jdk1.8.0</code></pre><h5>1.3 验证环境变量</h5><pre><code class=“python”>1.关上dos 快捷键win+r2.输出java -version</code></pre><p>呈现下图,阐明装置胜利</p><p></p><h4>2. Mac 装置java环境</h4><p>将下载的osx版的java环境默认进行装置,而后进行一下配置:</p><pre><code class=“python”>1.进入命令行, vim ~/.bash_profile 2.# set jdk1.8 JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar PATH=$PATH:$JAVA_HOME/bin export JAVA_HOME CLASSPATH export PATH</code></pre><p>启动终端,输出java -version查看是否失常启动</p><p></p><h4>1. Window 装置sdk(Androi须要的环境)</h4><p>装置步骤:</p><h5>1.1 解压Android sdk 文件夹</h5><p><strong>留神:门路中不要有中文, 确保文件夹下有一下两个文件</strong></p><p>如下图: </p><h5>1.2 配置到零碎环境变量下.</h5><pre><code class=“python”>SDK环境变量配置(Windowns7为例) 1.进入我的电脑 -> 属性 -> 高级零碎设置 -> 环境变量 2.在零碎变量下点击新建 -> 变量名: ANDROID_HOME -> 变量值: D:\android-sdk -> 点击确定按钮 3.在零碎变量下找到零碎的path变量,最初增加:;%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\tools;(最后面是一个分号,如果path变量最初已有分号,可不必增加) -> 点击确定按钮</code></pre><h5>1.3 验证环境变量是否配置胜利</h5><ul><li>在dos中输出adb指令,如下图配置胜利 </li><li><p>在dos中输出<strong>android</strong>指令 呈现Android sdk manager对话框 </p><blockquote>留神:**</blockquote></li></ul><p><strong>如果sdk中曾经有build-tools和platform-tools文件夹,就不须要再进行下载安装了</strong></p><h4>2. Mac 装置android sdk</h4><ol><li>把下载的android sdk macosx版本的解压到指定目录(我的解压到//Library/Java/)</li></ol><p></p><blockquote><strong>留神:</strong></blockquote><p><strong>如果sdk没有build-tools和platform-tools文件夹,要把提供的文件夹挪动到此处, 前面只须要配置环境变量即可,不须要下载了</strong></p><ol start=“2”><li>把sdk配置到零碎环境变量</li></ol><pre><code class=“python”>1.进入命令行, vim ~/.bash_profile2.# set android ANDROID_HOME=电脑寄存的门路/android-sdk-macosx PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools export ANDROID_HOME export PATH</code></pre><ol><li>验证是否胜利</li></ol><p>验证<strong>adb命令</strong>: 在终端输出adb,呈现adb版本信息阐明胜利</p><p></p><p>验证android是否配置胜利: 在终端输出<strong>android</strong>, 呈现此图片说明胜利</p><p></p><h4>3、抉择不同版本的的Android零碎进行下载</h4><p><strong>留神</strong>:</p><blockquote>因为安卓镜像在国外,最好更换国内的镜像</blockquote><p>步骤</p><ul><li>在弹出的android sdk manager页面,点击tools, 下啦框点击options</li></ul><p></p><ul><li>在弹出的对话框输出国内惊现的地址和端口号.</li></ul><p></p><pre><code class=“python”>镜像地址列表(也能够网上查找最新的): 中国科学院开源协会镜像站地址: IPV4/IPV6: mirrors.opencas.cn 端口:80 IPV4/IPV6: mirrors.opencas.org 端口:80 IPV4/IPV6: mirrors.opencas.ac.cn 端口:80 上海GDG镜像服务器地址: sdk.gdgshanghai.com 端口:8000 北京化工大学镜像服务器地址: IPv4: ubuntu.buct.edu.cn/ 端口:80 IPv4: ubuntu.buct.cn/ 端口:80 IPv6: ubuntu.buct6.edu.cn/ 端口:80 大连东软信息学院镜像服务器地址: mirrors.neusoft.edu.cn 端口:80</code></pre><h3>1. window装置andorid模拟器</h3><h4>1. 模拟器Genymotion装置</h4><pre><code class=“python”>1.执行genymotion-2.11.0-vbox.exe(是一个汇合程序,蕴含genymotion和virtualbox) -> 不须要更改配置,间接下一步默认装置2.装置完genymotion持续期待,会提醒装置virtualbox,持续装置,期间会提醒装置oracle插件,全副容许装置3.装置实现后会在桌面展现genymotion和virtualbox两个图标</code></pre><p></p><blockquote>留神:</blockquote><p>装置其余的模拟器也能够 ,装置胜利就能够.(比方MuMu 逍遥 夜神 雷电)</p><h4>2. Mac 下装置模拟器</h4><p>mac下装置要装两个dmg文件: genymotion-2.12.1.dmg和VirtualBox-5.2.26-128414-OSX.dmg</p><pre><code class=“python”>1.装置genymotion-2.12.1.dmg-》不必更改配置,默认装置就行2.装置VirtualBox-5.2.26-128414-OSX.dmg -》 不必更改配置间接装置就行3.装置后也会看到下面三个利用</code></pre><h4>3.虚拟机镜像导入</h4><pre><code class=“python”>1.关上virtualbox2.进入virtualbox -> 治理 -> 导入虚构电脑3.点击文件抉择(Samsung Galaxy S6 - 5.1.0 - API 22 - 1440x2560.ova) -> 点击下一步4.勾选 从新初始化所有网卡的MAC地址5.点击导入按钮 -> 期待倒入实现6.virtualbox列表会展现如下图圈出的选项</code></pre><p></p><h4>4. 启动模拟器</h4><p>在genymotion主界面点机start按钮.启动胜利就会显示下图</p><p></p><h4>5. 装置利用apk</h4><p>安卓模拟器启动起来后,咱们就能够装置要进行测试的利用了.装置胜利后,咱们的环境搭建就全副完结.</p><p><strong>装置办法:</strong></p><ul><li>adb命令行(前面解说)</li><li>间接拖拽要装置的apk到模拟器上,主动装置</li></ul><h4>注意事项</h4><h5>1. 装置ARM插件</h5><p><strong>装置某些利用apk时因为apk性能比拟丰盛,然而模拟器自带的不反对这些性能,所以要装置arm插件,来满足apk的应用</strong>.</p><p><strong>(1)、拖动ARM_Translation_Lollipop_20160402.zip到已启动的android虚拟机上</strong></p><p>须要下载对应版本的插件、咱们应用的是adnroid5.1 所以应用的是这个</p><p><strong>(2)点击提醒的ok按钮</strong></p><p></p><p><strong>(3)、再次点击提醒的ok按钮,重启模拟器既能够装置apk文件</strong></p><p></p><h5>2. 应用其余版本的模拟器的步骤</h5><p><strong>(1)、须要到genymotion官网上注册一个账号</strong></p><p><strong>(2)、进入genymotion界面,点击add按钮、会弹出登录对话框、输出注册的账号</strong></p><p></p><p><strong>(3)、登录胜利后能够抉择对应不同的android版本、手机型号进行装置</strong></p><p></p><p></p><p></p><h2>ADB常用命令</h2><h3>学习指标</h3><ul><li>把握罕用的ADB命令</li></ul><h4>1. ADB命令简介</h4><pre><code class=“python”>ADB全名Andorid Debug Bridge。 是一个Debug工具。为何称之为Bridge呢? 因为adb是一个规范的C/S构造的工具, 是要连贯开发电脑和调试手机的蕴含如下几个局部: 1.Client端,运行在开发机器中,即你的开发PC机。用来发送adb命令。 2.Daemon守护过程, 运行在调试设施中, 即的调试手机或模拟器。 3.Server端, 作为一个后盾过程运行在开发机器中, 即你的开发PC机. 用来治理PC中的Client端和手机的Daemon之间的通信。</code></pre><h4>2. 常用命令</h4><ul><li>adb 帮忙</li></ul><pre><code class=“python”>adb –help</code></pre><ul><li>启动adb 服务</li></ul><pre><code class=“python”>adb start-server</code></pre><ul><li>敞开adb 服务</li></ul><pre><code class=“python”>adb kill-server</code></pre><ul><li>获取设施号</li></ul><pre><code class=“python”>adb devices</code></pre><ul><li>获取零碎版本</li></ul><pre><code class=“python”>adb shell getprop ro.build.version.release</code></pre><ul><li>发送文件到手机</li></ul><pre><code class=“python”>adb push 电脑端⽂件门路/须要发送的文件,手机端存储的门路adb push C:\Users\win\Desktop\xx.png /sdcard</code></pre><ul><li>从手机拉取文件</li></ul><pre><code class=“python”>adb pull 手机端的门路/拉取文件名 电脑端存储文件门路adb pull /sdcard/xx.png C:\Users\win\Desktop</code></pre><ul><li>查看手机运行日志</li></ul><pre><code class=“python”>adb logcat</code></pre><ul><li>进入到手机终端</li></ul><pre><code class=“python”>adb shell</code></pre><ul><li>获取app启动包名和启动名(⚠手机须要先关上对应app)</li></ul><pre><code class=“python”>1.Mac/Linux: ‘adb shell dumpsys window windows | grep mFocusedApp’2.在 Windows 终端运⾏ ‘adb shell dumpsys window windows | findstr mFocusedApp’</code></pre><ul><li>装置app到手机</li></ul><pre><code class=“python”>adb install 门路/xxx.apk</code></pre><ul><li>卸载手机app</li></ul><pre><code class=“python”>adb uninstall app</code></pre><ul><li>获取app启动工夫</li></ul><pre><code class=“python”>adb shell am start -W 包名/.启动名</code></pre><p>`python<br/>adb shell getprop ro.build.version.release</p><pre><code>* 发送文件到手机</code></pre><p>adb push 电脑端⽂件门路/须要发送的文件,手机端存储的门路</p><p>adb push C:\Users\win\Desktop\xx.png /sdcard</p><pre><code>* 从手机拉取文件</code></pre><p>adb pull 手机端的门路/拉取文件名 电脑端存储文件门路</p><p>adb pull /sdcard/xx.png C:\Users\win\Desktop</p><pre><code>* 查看手机运行日志</code></pre><p>adb logcat</p><pre><code>* 进入到手机终端</code></pre><p>adb shell</p><pre><code>* 获取app启动包名和启动名(⚠手机须要先关上对应app)</code></pre><p>1.Mac/Linux: ‘adb shell dumpsys window windows | grep mFocusedApp’<br/>2.在 Windows 终端运⾏ ‘adb shell dumpsys window windows | findstr mFocusedApp’</p><pre><code>* 装置app到手机</code></pre><p>adb install 门路/xxx.apk</p><pre><code>* 卸载手机app</code></pre><p>adb uninstall app</p><pre><code>* 获取app启动工夫</code></pre><p>adb shell am start -W 包名/.启动名</p></article> ...

February 13, 2024 · 2 min · jiezi

关于python:运维测试测试理论工具总结笔记第1篇测试理论的主要内容已分享附代码

<article class=“article fmt article-content”><p></p><h5>本系列文章md笔记(已分享)次要探讨测试实践+测试工具相干常识。Python测试实践的次要内容,把握软件测试的根本流程,晓得软件测试的V和W模型的优缺点,把握测试用例设计的因素,把握等价类划分法、边界值法、因果图法、断定表法。理解缺点的定义,晓得缺点的详细信息。理解禅道、Jire的装置配置,把握禅道的应用,包含角色的常见、缺点状态的批改。</h5><h2>全套笔记和代码移步gitee仓库: gitee仓库获取残缺文档和代码</h2><h2>感兴趣的小伙伴能够自取哦,欢送大家点赞转发~</h2><hr/><h3>共 5 章,16 子模块</h3><p></p><p></p><h5>Python测试实践的次要内容</h5><ul><li><p>软件测试的根本实践</p><ul><li>把握测试的定义</li><li>把握测试的分类</li><li>把握测试的根本流程</li><li>把握测试的根本 准则</li></ul></li><li><p>测试用例</p><ul><li>把握测试用例编写的因素</li><li>把握编写测试用例</li></ul></li><li><p>缺点</p><ul><li>理解什么是缺点</li><li>理解缺点治理的益处</li><li>理解缺点报告的内容</li></ul></li><li><p>缺点管理工具</p><ul><li>禅道</li><li>Jire</li></ul></li></ul><p><strong><em>参考:</em></strong></p><ol><li>Jira中武官网</li><li>禅道官网</li><li>google软件测试之道</li><li>优质代码:软件测试的原实际与模式</li></ol><h3>学习指标</h3><ul><li>把握软件测试的根本流程</li><li>晓得软件测试的V和W模型的优缺点</li><li>把握软件测试的分类</li></ul><h5>软件测试的倒退</h5><p></p><p>1960年代是调试期间(测试即调试)</p><p>1960年 - 1978年 论证期间(软件测试是验证软件是正确的)和 1979年 - 1982年 破坏性测试期间(为了发现错误而执行程序的过程)</p><p>1983年起,软件测试已有了行业标准(IEEE829),它须要使用专门的办法和伎俩,须要专门人才和专家来承当。</p><p>1990年起软件迅速倒退,测试行业也更着产生了巨大变化,开始引入业余测试工具</p><h5>什么是软件测试</h5><p>在规定条件下对程序进行操作,从而发现错误,对软件品质进行评估的一个过程.</p><h5>软件测试的目标</h5><p>是想以起码的人力,物力和工夫找出软件中潜在的各种谬误与缺点,通过修改各种谬误和缺点进步软件品质,回避软件公布后因为潜在的软件缺陷和谬误造成的隐患以及带来的商业危险。</p><p><strong>留神:</strong>不要和软件测试的定义混同</p><h5>软件测试的定义</h5><p>应用<strong>人工或主动</strong>伎俩来运行或测试摸个零碎的过程,其目标在于测验它是否满足规定的需要或是弄清预期后果和理论后果之间的差异.</p><h3>软件开发过程模型</h3><p></p><blockquote>软件开发模型(Software Development Model)是指软件开发全副过程、流动和工作的构造框架。软件开发包含需要、设计、编码和测试等阶段,有时也包含维护阶段。 软件开发模型能清晰、直观地表白软件开发全过程,明确规定了要实现的次要流动和工作,用来作为软件我的项目工作的根底。对于不同的软件系统,能够采纳不同的开发方法、应用不同的程序设计语言以及各种不同技能的人员参加工作、使用不同的治理办法和伎俩等,以及容许采纳不同的软件工具和不同的软件工程环境。</blockquote><p><strong>软件开发过程模型</strong>是软件开发人员在公司里工作的过程.</p><p><strong>常见的软件开发过程模型</strong></p><ul><li>瀑布模型</li><li>疾速原型模型</li><li>增量模型</li><li>螺旋模型</li></ul><h4>1. 瀑布模型</h4><hr/><p></p><blockquote>1970年温斯顿·罗伊斯(Winston Royce)提出了驰名的“瀑布模型”,直到80年代晚期,它始终是惟一被宽泛采纳的软件开发模型。</blockquote><p>瀑布模型将软件生命周期划分为制订打算、需要剖析、零碎设计、程序编写、软件测试和运行保护等六个根本流动,并且规定了它们自上而下、互相连接的固定秩序,如同瀑布流水,逐级着落。</p><p><strong>1.1 核心思想</strong></p><p><strong>瀑布模型核心思想</strong></p><p>在瀑布模型中,软件开发的各项流动严格依照线性形式进行,以后流动承受上一项流动的工作后果,施行实现所需的工作内容。以后流动的工作后果须要进行验证,如果验证通过,则该后果作为下一项流动的输出,持续进行下一项流动,否则返回批改。</p><p><strong>1.2 位置</strong></p><p>瀑布模型是最早呈现的软件开发模型, 在软件工程中占有重要的位置,它提供了软件开发的根本框架.</p><p><strong>1.3 优缺点</strong></p><p><strong>长处:</strong></p><pre><code class=“python”>1. 为我的项目提供了按阶段划分的检查点,软件开发的每个阶段都很清晰明了 2. 以后阶段实现后,只有去关注后续阶段 3. 可在迭代模型中每轮迭代很相似于一个小的瀑布模型 4. 它提供了一个模版,这个模版使得剖析、设计、编码、测试能够在改模版下有一个独特的领导</code></pre><p><strong>毛病:</strong></p><ol><li>各个阶段的划分齐全固定,阶段之间产生大量的文档,极大地减少了工作量</li><li>因为开发模型是线性的,用户只有等到整个过程的末期能力见到开发成绩,从而减少了开发危险</li><li><strong>突出毛病是不适应用户需要的变动</strong></li><li>软件的理论状况必须到我的项目开发的前期客户能力看到,这要求客户有足够的急躁</li></ol><p><strong>4). 应用范畴</strong></p><ul><li>用户的需要十分分明全面,且在开发过程中没有或很少变动;</li><li>开发工作对用户参加的要求很低。</li></ul><h4>2. 疾速原型模型</h4><hr/><p></p><p>疾速原型模型的第一步是建造一个疾速原型,实现客户或将来的用户与零碎的交互,用户或客户对原型进行评估,进一步细化待开发软件的需要。通过逐渐调整原型使其满足客户的要求,开发人员能够确定客户的真正需要是什么;第二步则在第一步的根底上开发客户称心的软件产品。</p><p><strong>2.1 核心思想</strong></p><p>疾速原型是利用原型辅助软件开发的一种新思维。通过简略疾速剖析,疾速实现一个原型,用户与开发者在试用原型过程中增强通信与反馈,通过重复评估和改良原型,缩小误会,补救破绽,适应变动,最终进步软件品质。</p><p><strong>2.2 优缺点</strong></p><p><strong>长处:</strong></p><p>克服瀑布模型的毛病,适应需要的变动,可能开发出更加让用户更加称心的需要</p><p><strong>毛病:</strong></p><ul><li>所选用的开发技术和工具不肯定合乎支流的倒退;</li><li>疾速建设起来的系统结构加上间断的批改可能会导致产品质量低下。</li><li>应用这个模型的前提是要有一个展现性的产品原型,因而在肯定水平上可能会限度开发人员的翻新。</li></ul><p><strong>2.3 应用范畴</strong></p><ul><li>不适宜大型项目的研发</li><li>对所开发的畛域比拟相熟而且有疾速的原型开发工具</li></ul><h4>3. 增量模型</h4><hr/><p></p><p><strong>3.1 介绍</strong></p><p>增量模型又称为渐增模型,是把待开发的软件系统模块化,将每个模块作为一个增量组件,从而分批次地剖析、设计、编码和测试这些增量组件。使用增量模型的软件开发过程是递增式的过程。绝对于瀑布模型而言,采纳增量模型进行开发,开发人员不须要一次性地把整个软件产品提交给用户,而是能够分批次进行提交。</p><p><strong>3.2 根本思维</strong></p><p>增量模型在各个阶段并不交付一个可运行的残缺产品,而是交付满足客户需要的一个子集的可运行产品。整个产品被分解成若干个构件,开发人员一一构件地交付产品,这样做的益处是软件开发能够较好地适应变动,客户能够一直地看到所开发的软件,从而升高开发危险。</p><p><strong>3.3 优缺点</strong></p><p><strong>长处</strong></p><ul><li>将待开发的软件系统模块化,能够分批次地提交软件产品,使用户能够及时理解软件我的项目的停顿</li><li>以组件为单位进行开发升高了软件开发的危险。一个开发周期内的谬误不会影响到整个软件系统。</li><li>开发程序灵便。开发人员能够对组件的实现程序进行优先级排序,先实现需要稳固的外围组件。当组件的优先级发生变化时,还能及时地对实现程序进行调整。</li></ul><p><strong>毛病</strong></p><ul><li>要求待开发的软件能给进行增量式的开发,否则会很麻烦</li><li>在软件开发过程中需要变动是不可避免的,增量模型的灵活性能够使其适应这种变动的能力大大优于瀑布模型和疾速原型模型,但也很容易进化为边做边改模型,从而是软件过程的管制失去整体性.</li></ul><p><em>3.4 应用场景</em>*</p><ul><li>进行已有产品升级或新版本开发</li></ul><h4>4. 螺旋模型</h4><hr/><p></p><blockquote>1988年,巴利·玻姆(Barry Boehm)正式发表了软件系统开发的“螺旋模型]”,它将瀑布模型和疾速原型模型联合起来,强调了其余模型所漠视的危险剖析,特地适宜于大型简单的零碎。</blockquote><p>如图所示,螺旋模型沿着螺线进行若干次迭代,图中的四个象限代表了以下流动:</p><p>(1) 制订打算:确定软件指标,选定实施方案,弄清我的项目开发的限度条件;</p><p>(2) 危险剖析:剖析评估所选计划,思考如何辨认和打消危险;</p><p>(3) 施行工程:施行软件开发和验证;</p><p>(4) 客户评估:评估开发工作,提出修改倡议,制订下一步打算。</p><p>螺旋模型由危险驱动,强调可选计划和约束条件从而支持软件的重用,有助于将软件品质作为非凡指标融入产品开发之中。</p><p><strong>4.1 优缺点</strong></p><p><strong>长处:</strong></p><ul><li>设计灵便能够在我的项目各个阶段进行变更</li><li>危险驱动,每个我的项目上线前都要进行危险剖析</li></ul><p><strong>毛病:</strong></p><ul><li>螺旋模型强调危险剖析,须要相当丰盛的危险评估教训和专门知识,在危险较大的我的项目开发中,如果未可能及时标识危险,势必造成重大损失;</li><li>如果执行危险剖析将大大影响我的项目的利润,那么进行危险剖析毫无意义,</li></ul><p><strong>4.2 应用场景</strong></p><p>适宜应用大规模的软件我的项目</p><p>评估:评估开发工作,提出修改倡议,制订下一步打算。</p><p>螺旋模型由危险驱动,强调可选计划和约束条件从而支持软件的重用,有助于将软件品质作为非凡指标融入产品开发之中。</p><p><strong>4.1 优缺点</strong></p><p><strong>长处:</strong></p><ul><li>设计灵便能够在我的项目各个阶段进行变更</li><li>危险驱动,每个我的项目上线前都要进行危险剖析</li></ul><p><strong>毛病:</strong></p><ul><li>螺旋模型强调危险剖析,须要相当丰盛的危险评估教训和专门知识,在危险较大的我的项目开发中,如果未可能及时标识危险,势必造成重大损失;</li><li>如果执行危险剖析将大大影响我的项目的利润,那么进行危险剖析毫无意义,</li></ul><p><strong>4.2 应用场景</strong></p><p>适宜应用大规模的软件我的项目</p></article>

February 13, 2024 · 1 min · jiezi

关于python:日本房产泡沫破灭后普通人的生存状态

<article class=“article fmt article-content”><p>日本房地产泡沫幻灭后,整个经济体系都受到了微小的冲击。许多企业倒闭,失业率飙升,人们的生存程度也大幅降落。然而,在这场危机中,一些行业却迎来了新的时机和挑战。</p><h4>行业</h4><p>动漫产业成为了日本经济的支柱产业之一。在泡沫经济期间,日本的动漫产业一度风靡寰球,成为了日本文化的代表之一,一些优良的动漫公司通过不断创新和改良,胜利地打造了本人的品牌形象,博得了更多的市场份额。例如,驰名的漫画家尾田树一郎创作的《海贼王》在寰球范畴内都有着宽泛的影响力。此外,随着日本游戏产业的崛起,动漫角色也成为了许多游戏中的重要元素,为动漫产业带来了新的商机。</p><p>新资料产业也成为了日本经济的新兴产业之一。在泡沫经济期间,日本的房地产业已经适度依赖钢铁、水泥等传统资料。然而,随着泡沫幻灭,这些传统资料的市场需求大幅降落,许多企业陷入了窘境。然而,一些新资料企业通过研发翻新,胜利地开发出了更加环保、高效的新资料产品。例如,日本的碳纤维制造商东丽公司生产的碳纤维资料被广泛应用于航空航天、汽车制作等畛域。此外,随着日本人口老龄化问题的加剧,一些新资料也被用于医疗畛域,如人工关节、心脏瓣膜等。</p><p>汽车行业也成为了日本经济的支柱产业之一。在泡沫经济期间,日本的汽车产业已经一度占据了寰球市场的主导地位。然而,随着泡沫幻灭,许多汽车企业陷入了窘境。然而,一些优良的汽车制造商通过不断创新和改良,胜利地打造出了本人的品牌形象,博得了更多的市场份额。例如,丰田汽车公司推出的混合能源车型普锐斯在寰球市场上都备受欢送。此外,随着日本国内消费者对环保意识的进步,新能源汽车也成为了汽车行业的新趋势。</p><h4>职业</h4><p>教育行业因为人口老龄化问题的加剧而失去了长足的倒退。随着日本国内对教育的器重水平一直进步,越来越多的人开始抉择从事教育行业。例如,小学、中学、高中等教育机构须要大量的老师和辅导员来满足学生的需要。此外,随着日本国内对外语学习的需要一直减少,一些外语培训机构也成为了热门的职业抉择。</p><p>医疗行业因为人口老龄化问题的加剧而失去了长足的倒退,随着日本国内对衰弱的器重水平一直进步,越来越多的人开始抉择从事医疗行业。例如,医院、诊所等医疗机构须要大量的医生、护士和其余医疗人员来满足患者的需要。此外,随着日本国内对衰弱治理的需要一直减少,一些衰弱治理公司也成为了热门的职业抉择。</p><p>IT行业却因为互联网技术的飞速发展而失去了长足的倒退。随着日本国内对数字化技术的需要一直减少,越来越多的人开始抉择从事IT行业。例如,软件开发公司、互联网公司等IT企业须要大量的程序员、测试员和其余技术人员来满足市场需求。此外,随着日本国内对人工智能、大数据等畛域的钻研不断深入,一些钻研机构和企业也成为了热门的职业抉择。</p><p>日本房产泡沫幻灭后尽管给整个经济体系带来了微小的冲击,但也催生了一些新的产业和企业。这些新兴产业和企业通过不断创新和改良,胜利地应答了市场的挑战,并获得了不俗的问题。这也为咱们提供了一个启发:在任何时候,只有咱们可能放弃翻新精力、敢于拥抱改革,就肯定可能在竞争强烈的市场中立于不败之地。</p><p>本文由ai生成</p><p></p></article>

February 13, 2024 · 1 min · jiezi

关于python:数据库postgressql设置数据库执行超时时间

<article class=“article fmt article-content”><p>在这篇文章中,咱们将深入探讨PostgreSQL数据库中的一个要害设置:<code>SET statement_timeout</code>。这个设置对于治理数据库性能和优化查问执行工夫十分重要。让咱们一起来理解它的工作原理以及如何无效地应用它。</p><h3>什么是statement_timeout?</h3><p><code>statement_timeout</code>是一个PostgreSQL服务器参数,用于设置单个SQL语句的执行超时工夫。当一个查问执行的工夫超过了设定的超时工夫,PostgreSQL将终止该查问并返回一个错误信息。这个参数能够帮忙咱们避免长时间运行的查问对数据库性能造成影响,同时也有助于爱护数据库免受歹意攻打。</p><h3>如何设置statement_timeout?</h3><p>要设置<code>statement_timeout</code>,咱们能够在PostgreSQL的配置文件(通常是<code>postgresql.conf</code>)中进行批改,或者通过<code>ALTER SYSTEM</code>命令动静地更改。以下是两种办法的示例:</p><h4>1. 在配置文件中设置</h4><p>关上<code>postgresql.conf</code>文件,找到<code>statement_timeout</code>参数,而后将其设置为所需的值(以毫秒为单位)。例如,要将超时工夫设置为30秒,能够增加以下行:</p><pre><code class=“python”>statement_timeout = 30000</code></pre><p>保留文件并重启PostgreSQL服务以使更改失效。</p><h4>2. 应用ALTER SYSTEM命令动静设置</h4><p>要动静地更改<code>statement_timeout</code>,能够应用<code>ALTER SYSTEM</code>命令。例如,要将超时工夫设置为30毫秒,能够执行以下命令:</p><pre><code class=“python”>ALTER SYSTEM SET statement_timeout = 30000;</code></pre><p>请留神,这种办法只会长期更改超时工夫,直到下次重启PostgreSQL服务。要永恒更改超时工夫,请参阅上一节中的配置文件办法。</p><h3>statement_timeout的利用场景</h3><p><code>statement_timeout</code>在许多场景下都十分有用,以下是一些常见的利用场景:</p><ul><li><strong>避免长时间运行的查问</strong>:有时,因为数据量过大或其余起因,查问可能会运行很长时间。通过设置适合的<code>statement_timeout</code>值,咱们能够确保查问不会无限度地运行,从而防止对数据库性能造成影响。</li><li><strong>爱护数据库免受歹意攻打</strong>:歹意用户可能会尝试执行大量计算密集型操作,以耗费数据库资源并使其无奈失常工作。通过设置<code>statement_timeout</code>,咱们能够限度单个查问的执行工夫,从而升高这种攻打的危险。</li><li><strong>优化查问性能</strong>:在某些状况下,咱们可能须要优化查问性能。通过观察查问的执行工夫,咱们能够确定是否须要调整<code>statement_timeout</code>值以进步整体性能。</li></ul><h3>statement_timeout的最佳实际</h3><p>在应用<code>statement_timeout</code>时,咱们须要遵循一些最佳实际以确保其有效性和安全性:</p><ul><li><strong>正当设置超时工夫</strong>:设置过短的超时工夫可能会导致频繁中断查问,而设置过长的超时工夫则可能无奈达到预期的爱护成果。因而,咱们须要依据理论需要和数据库性能来正当设置超时工夫。</li><li><strong>监控查问执行工夫</strong>:定期监控查问的执行工夫能够帮忙咱们理解数据库的性能情况,并及时发现潜在的问题。咱们能够应用各种工具(如pgBadger、pgAdmin等)来剖析查问执行工夫和性能瓶颈。</li><li><strong>为重要查问设置优先级</strong>:对于重要的查问,咱们能够通过设置较低的<code>statement_timeout</code>值来确保它们可能顺利完成。这样能够防止因超时而导致的重要查问失败。</li><li><strong>思考应用事务</strong>:在某些状况下,咱们能够思考将多个查问封装在一个事务中。这样,即便某个查问超时,其余查问依然能够继续执行。但请留神,这可能会减少事务提交的复杂性。</li></ul><p></p></article>

February 12, 2024 · 1 min · jiezi

关于python:水果识别系统PythonTensorFlow卷积神经网络算法

引言随着科技的倒退,咱们生存中的各种便当工具日益减少。例如,你有没有想过,当你在超市里看到一个生疏的水果,却不晓得它是什么名字时,有一个工具能够帮你辨认进去?明天,我要为大家介绍一种基于Python的水果识别系统。这个零碎不仅辨认精确,还具备敌对的用户界面。上面,让咱们一起摸索这个神奇的零碎吧! 筹备数据收集:知己知彼要辨认出各种各样的水果,首先咱们须要有一个齐备的数据集。咱们收集了大量的水果图片,比方苹果、香蕉等。 构建模型:弱小的ResNet50有了数据集,咱们的下一步是抉择一个适宜的算法模型。通过调研,咱们抉择了基于TensorFlow框架的ResNet50卷积神经网络模型。ResNet50是一个深度为50层的网络,可能捕捉到图像的细节特色,从而进步辨认的精度。 咱们将数据集分为训练集和测试集,通过多轮迭代训练,一直调整模型的参数,最终失去了一个精度较高的模型。为了不便后续应用,咱们将其保留为h5格局的本地文件。 用户界面:简略、好看、易用领有了弱小的模型,咱们还须要一个敌对的用户界面。为此,咱们抉择了基于Django框架开发的网页端平台。 前端界面应用HTML、CSS和BootStrap技术构建。简洁的设计,加上好看的色彩搭配,为用户提供了极佳的体验。用户只需上传一张水果图片,就能够失去辨认后果。 后端则应用Django框架解决逻辑。当用户上传图片时,Django会调用咱们之前保留的模型,对图片进行辨认,并返回后果。 为了实现前后端的数据通信,咱们应用了Ajax技术。这样,用户在上传图片后,无需刷新页面,就能够立刻看到辨认后果。 成果图片 残缺代码 and 演示视频代码+演示视频:https://s7bacwcxv4.feishu.cn/wiki/UKWcwc6u4i8MkZkxIYpc1cy4nPb 结语通过上述三大步骤,咱们胜利地实现了一个基于Python的水果识别系统。

September 27, 2023 · 1 min · jiezi

关于python:编译-pyav-成-wheel-并使用-auditwheel-固化动态链接库

python setup.py sdist bdist_wheelauditwheel repair dist/av*.whl --plat=manylinux_2_35_x86_64输入如下: (Linux.5.15.0-84-generic.cpython3.10) pon@T4GPU:~/code/me/github/PyAV$ auditwheel repair dist/av*.whl --plat=manylinux_2_35_x86_64INFO:auditwheel.main_repair:Repairing av-10.0.0-cp310-cp310-linux_x86_64.whlINFO:auditwheel.wheeltools:Previous filename tags: linux_x86_64INFO:auditwheel.wheeltools:New filename tags: manylinux_2_35_x86_64INFO:auditwheel.wheeltools:Previous WHEEL info tags: cp310-cp310-linux_x86_64INFO:auditwheel.wheeltools:New WHEEL info tags: cp310-cp310-manylinux_2_35_x86_64INFO:auditwheel.main_repair:Fixed-up wheel written to /home/pon/code/me/github/PyAV/wheelhouse/av-10.0.0-cp310-cp310-manylinux_2_35_x86_64.whl装置最新的 patchelf 参考:https://github.com/NixOS/patchelf 装置 patchelf 之前要装置 autoconf sudo apt install autoconf

September 26, 2023 · 1 min · jiezi

关于python:python-pywebio阿里云-云函数函数计算-搭建网站的注意点记录

因为以前用过阿里云的云函数,并且看着阿里云有个python selenium(undetected_chromedriver)运行环境,当前可能会钻研一下,而腾讯云没有,所以就用的阿里云 创立函数-应用自定义运行时创立-运行环境-Python3.9自定义运行时Debian9咱们将为您部署一个基于 Flask 框架的 Python 示例利用。这个示例利用会监听 9000 端口,示例利用的启动命令为 python app.py,您能够在函数创立胜利后,您能够依据本人的须要批改代码,监听端口和启动命令。这里目录下会有两个文件,一个HELP.md,里边意思是能够通过在线vscode ide的终端装置依赖包还有个app.py文件,里边即是flask代码 if __name__ == '__main__': app.run(host='0.0.0.0',port=9000)这里有个点我没明确,即这个host='0.0.0.0',pywebio不须要改这个0.0.0.0,只须要改端口号为9000(查了一下,大略是flask的机制,默认不指定host只能通过localhost 127地址拜访,须要设成0.0.0.0能力从192地址或公网地址拜访;而pywebio默认就相当于设置了flask的0.0.0.0了) pywebio.start_server(bmi, port=9000)而后就是 触发器治理(URL)公网拜访地址拜访会是下载网页html的行为,而测试地址并不能用,老是显示DNS_PROBE_FINISHED_NXDOMAIN所以不得不绑个域名,花一块钱在阿里云买了一年的top域名而后,就发现云函数对应到域名还须要备案,而后搜了搜,发现备案比拟麻烦,发现大陆外服务器不须要备案,于是切到香港从新建了个函数计算,就不须要备案了,只需实名。

September 24, 2023 · 1 min · jiezi

关于python:Python教程14Python函数的入门学习

函数是什么?在编程中,函数是一段可重用的代码块,用于实现特定工作或执行特定操作。它能够接输出参数并返回一个值或执行一系列操作。函数能够帮忙程序员将代码模块化,进步代码的可读性和可维护性。 函数通常包含以下组成部分: 函数名:用于标识函数,并能够通过函数名调用执行该函数。参数:输出给函数的值,在函数外部能够应用参数进行操作或计算。函数体:蕴含函数执行的代码块。在函数体中能够进行各种操作、计算、逻辑判断等工作。返回值:函数能够返回处理结果,供调用者应用。每种编程语言对于函数的语法标准可能所有不同,然而都是蕴含函数组成部分的。 Python函数组成Python函数的定义通包含以下几个局部: 函数头部:应用关键字 def 开始,后跟函数名和一对圆括号 ( )。圆括号内能够蕴含函数的参数,多个参数之间用逗号分隔,最初在右括号)之后要加个冒号:,无论是括号还是冒号肯定都要是英文状态下的。函数体:函数体是由函数的操作逻辑组成的代码块,函数体内的代码须要缩进,通常应用4个空格或制表符(Tab键)进行缩进。函数返回值:函数能够返回一个值应用关键字 return 后跟要返回的值。以下是一个简略的示例,展现了一个算两个数之和的函数: def add_numbers(num1, num2): sum = num1 + num2 return sumresult = add_numbers(5, 3)print(result) # 输入:8在这个示例中,函数 add_numbers 接管两个参数 num1 和 num2,计算它们的和并返回后果。通过调用 add_numbers(5, 3) 能够失去后果 8将后果赋值给变 result,最初打印 result 的值。 Python函数解释上述的add_numbers是个非常简单的函数,然而初学者敌人如果不留神相干规定的话,可能会造成狐疑人生的后果。 正如Python函数的语法组成那样,Python是用def结尾来定义一个函数的,而后空格后跟上函数名add_numbers,咱们业余一点的叫法的话,叫函数定义,在应用一个函数之前,必须先定义,否则就会报语法错误。 比方咱们像上面这样书写,就不行的,会一个NameError的谬误。NameError: name 'add_numbers' is not defined。 result = add_numbers(5, 3)def add_numbers(num1, num2): sum = num1 + num2 return sumprint(result) 接着加上括号,括号外面跟上参数名,这里的参数名咱们称之为形式参数,简称形参,这个在编程当中是一个比拟重要的概念,特地是在C语言当中。而后右括号前面加上一个冒号,前面就另起一行写函数体,当然在一些非常简单的函数体当中,可能间接跟在冒号前面,比方: if a == 1: return 1在leetcode编程中,这种写法也常常见到。 如果是超过一行的,个别都是另起一行写函数体。函数体内的代码须要缩进,通常应用4个空格或制表符进行缩进。这里要特地留神,在函数体中, 要不都用4个空格,要不就用制表符,千万不要混用 ,一个制表符又刚好等于4个空格,所以从外表上看的确是对齐了,对于没有编程教训的初学者来说,一旦混用,又不懂得利用搜索引擎的话,可能一个早晨你都会困在那里,百思不得其解。 ...

September 24, 2023 · 1 min · jiezi

关于python:python列表学习入门

Python是一个十分弱小且易于学习的编程语言,而列表(list)是Python中最罕用的数据结构之一。无论你是初学者还是经验丰富的开发者,了解和把握Python列表的应用都是十分重要的。 1. 什么是列表?列表是一个有序的元素汇合,能够包容多个值,这些值能够是任何数据类型。 # 定义一个空列表empty_list = []# 定义一个蕴含整数的列表numbers = [1, 2, 3, 4, 5]# 定义一个蕴含多种数据类型的列表mixed_list = [1, "hello", 3.14, True]2. 拜访列表中的元素列表中的元素能够通过索引进行拜访,索引从0开始。 fruits = ["apple", "banana", "cherry", "date"]# 获取第一个元素first_fruit = fruits[0] # "apple"# 获取最初一个元素last_fruit = fruits[-1] # "date"3. 批改、增加和删除元素列表是可变的,这意味着你能够批改、增加和删除列表中的元素。 fruits = ["apple", "banana", "cherry", "date"]# 批改元素fruits[0] = "avocado"# 增加元素到开端fruits.append("fig")# 在指定地位插入元素fruits.insert(1, "blueberry")# 删除指定元素fruits.remove("banana")# 依据索引删除元素del fruits[0]4. 列表切片除了拜访单个元素外,Python还反对应用切片从列表中获取子集。 numbers = [10, 20, 30, 40, 50, 60, 70, 80]# 获取前三个元素first_three = numbers[:3] # [10, 20, 30]# 获取两头的四个元素middle_four = numbers[2:6] # [30, 40, 50, 60]# 获取最初三个元素last_three = numbers[-3:] # [60, 70, 80]5. 列表的罕用办法列表对象提供了许多有用的办法。 ...

September 24, 2023 · 1 min · jiezi

关于python:Python-潮流周刊21如何提升及测量-Python-代码的性能

你好,我是猫哥。这里每周分享优质的 Python、AI 及通用技术内容,大部分为英文。题目取自其中三则分享,不代表全部内容都是该主题,特此申明。 本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你筛选最值得分享的文章、教程、开源我的项目、软件工具、播客和视频、热门话题等内容。愿景:帮忙所有读者精进 Python 技术,并增长职业和副业的支出。 微信 | 博客 | 邮件 | Github | Telegram | Twitter 原文☞:https://pythoncat.top/posts/2023-09-23-weekly 文章&教程1、在单核状况下放慢 Python 代码速度 文章应用弗洛伊德-斯坦伯格抖动算法为例,应用各种技巧来晋升代码性能,实现将耗时从 2339 微秒逐渐升高到 554 微秒。波及的一些概念:指令级并行 (ILP)、分支预测、单指令多数据(SIMD)、内存层次结构等。 2、应用 Radon 作 Python 的代码度量 一篇根底的入门教程,理解如何用 Radon 来掂量 Python 的代码复杂度,即计算圈复杂度等指标,介绍了相干命令的应用。 3、Python(大部分)由语法糖组成 Brett Cannon 写了一系列对于“语法糖”的博客,解析了 80 多个语法糖个性。文章基于他在 PyCon 的演讲及博客,介绍了其中的局部内容。 4、迎接新的 SymPy SymPy 是一个用于符号计算(symbolic computation)的库,能够解决代数、微积分、离散数学等畛域的问题。这是一个系列文章,介绍它将迎来的重大变动。文章形容了 SymPy 以后存在的速度问题、为减速它而作的工作、未来的提速打算。(附:系列第二篇:SymPy 多项式计算) 5、应用 import-linter 让你的 Python 我的项目架构更整洁 在依赖关系治理方面,import-linter 是一个十分有用的工具。它通过提供各种类型的“契约”,让咱们得以将我的项目内隐式的简单依赖关系,通过配置文件显式的表达出来。文章介绍了它的入门应用,以及 6 种修复依赖关系的技巧。 6、CPython 如何用布隆过滤器作字符串解决? CPython 在解决字符串时应用了布隆过滤器,比方 splitlines()、strip() 两个函数,文章介绍了它们的实现原理。文章还介绍了典型布隆过滤器的实现原理,以及 CPython 中布隆过滤器的实现(不到 50 行 C 代码)。 ...

September 24, 2023 · 2 min · jiezi

关于python:基于Python-SnowNLP实现一个文本情感分析系统

当你浏览社交媒体、新闻或任何数字内容时,你有没有想过背地的技术是如何剖析和了解这些文本的情感的?有没有想过在数百万条评论、帖子或文章中,如何疾速地辨认出其中的踊跃和消极情绪?在这篇文章中,咱们将揭示其中的神秘,并教你如何应用Python和SnowNLP来轻松地实现一个文本情感剖析零碎。 什么是文本情感剖析?文本情感剖析是自然语言解决(NLP)的一个分支,旨在确定作者对某一主题或总体情境的态度,是踊跃的、消极的还是中立的。设想一下,你能够疾速地浏览大量的用户评论,找出大多数人对产品或服务的认识,并据此做出决策。神奇吧! 为什么抉择SnowNLP?SnowNLP是一个为中文文本处理而设计的Python库。它不仅能够用于情感剖析,还提供了分词、词性标注、情感剖析等性能。与其余工具相比,它特地适宜中文内容。 如何搭建零碎?第一步:筹备工具和环境确保曾经装置Python,并通过pip装置Flask和snownlp库: pip install Flask snownlp第二步:创立后端咱们首先应用Flask搭建一个简略的Web利用,而后利用SnowNLP进行情感剖析。 以下是后端代码: from flask import Flask, render_template, request, jsonifyfrom snownlp import SnowNLPapp = Flask(__name__)@app.route('/')def index(): return render_template('index.html')@app.route('/analyze', methods=['POST'])def analyze(): text = request.json['text'] s = SnowNLP(text) sentiment = s.sentiments return jsonify({'sentiment': sentiment})if __name__ == '__main__': app.run(debug=True)第三步:创立前端界面为了使用户可能与咱们的利用互动,咱们须要一个界面。利用Bootstrap和Ajax,咱们能够疾速地搭建一个好看的界面。以下是前端代码: <!-- ...其余HTML标签... --><script src="https://code.jquery.com/jquery-3.5.1.min.js"></script><script> function analyzeText() { const text = $("#textInput").val(); $.ajax({ url: '/analyze', type: 'POST', contentType: 'application/json', data: JSON.stringify({ text: text }), success: function(response) { if (response.sentiment > 0.5) { $("#result").text('侧面情感,值为: ' + response.sentiment).addClass('text-success'); } else { $("#result").text('负面情感,值为: ' + response.sentiment).addClass('text-danger'); } } }); }</script><!-- ...其余HTML标签... -->演示视频 and 代码演示视频如下,篇幅所限,残缺代码收费获取地址:https://mp.weixin.qq.com/s/4itzHiCaVxeIjmEmdKwGBQ ...

September 24, 2023 · 1 min · jiezi

关于python:基于PythonPygame实现一个俄罗斯方块小游戏完整代码

俄罗斯方块,一款起源于上世纪80年代的经典电子游戏,凭借简略的规定和独特的魅力,一跃成为寰球妇孺皆知的经典。你晓得其实只须要一些根底的编程常识,就能够本人实现它吗?明天,咱们将应用Python的Pygame库,一步步带你构建属于本人的俄罗斯方块小游戏! 目录游戏初始化方块形态设计骨牌操作游戏逻辑游戏主循环游戏界面设计演示视频+残缺代码1. 游戏初始化首先,咱们须要导入pygame库,而后初始化pygame。设定一些基本参数,如屏幕尺寸、色彩等: import pygameimport randomimport ospygame.init()GRID_WIDTH = 20GRID_NUM_WIDTH = 15GRID_NUM_HEIGHT = 25...2. 方块形态设计游戏中的方块被称为"骨牌"。它们有7种根本形态,咱们能够用一个坐标零碎来示意它们: class CubeShape(object): SHAPES = ['I', 'J', 'L', 'O', 'S', 'T', 'Z'] I = [[(0, -1), (0, 0), (0, 1), (0, 2)], ... ] ...3. 骨牌操作玩家能够通过键盘管制骨牌的挪动和旋转,所以咱们须要定义一些函数,如rotate(), down(), left(), 和 right()来实现这些性能: def rotate(self): ...def down(self): ...def left(self): ...def right(self): ...4. 游戏逻辑每当骨牌着落到底部或与其余骨牌接触,它就会进行挪动。如果一行齐全被填满,它就会被打消,玩家得分。这就是remove_full_line()函数的作用: def remove_full_line(): ...5. 游戏主循环游戏的主循环是程序的外围。在这里,咱们监听玩家的输出,更新屏幕,查看游戏是否完结,等等: unning = Truegameover = True...while running: ... if gameover is False and counter % (FPS // level) == 0: ... counter += 1 screen.fill(BLACK) ...6. 游戏界面设计为了使游戏更具吸引力,咱们还设计了一些简略的图形界面元素,如网格、得分显示等。这些都通过draw_grids(), draw_matrix(), draw_score()等函数实现: ...

September 22, 2023 · 1 min · jiezi

关于python:基于PythonTkinter实现一个贪食蛇小游戏

你是否还记得那个时代,当咱们的手机还没有触摸屏,游戏也只有像“贪食蛇”这样的经典款?过后,许多人都沉迷于管制一条小蛇吃食物的乐趣中。而今,让咱们利用Python和Tkinter,一起重温那个时代,制作本人的贪食蛇小游戏! 1. 初始设定在开始之前,咱们须要对游戏进行根本的设定。例如,咱们的游戏界面是一个宽600像素、高400像素的矩形,食物和蛇的大小都是20像素。 2. 游戏的外围元素贪食蛇游戏的外围其实很简略:一个可能到处挪动的蛇,和它要追赶的食物。咱们用一个列表示意蛇,其中每个元素都是蛇的一个局部。而食物则是一个随机呈现在屏幕上的点。 3. 游戏逻辑蛇的挪动:每隔一段时间,蛇都会朝着以后的方向挪动。咱们能够监听键盘事件,让玩家决定蛇的方向。吃食物:当蛇的头部与食物的地位重合时,蛇就“吃”到了食物。这时,咱们须要减少蛇的长度,并随机生成一个新的食物地位。碰撞检测:游戏的挑战性在于,蛇不能触碰到屏幕边界和本人的身材。一旦这些碰撞产生,游戏就完结了。 4. 用Python和Tkinter实现首先,咱们须要应用Python的Tkinter库来创立游戏的图形界面。 a. 创立主窗口root = tk.Tk()root.title("贪食蛇")b. 设定游戏画布咱们的游戏须要一个画布(Canvas)来绘制蛇和食物: canvas = tk.Canvas(root, width=WIDTH, height=HEIGHT, bg="grey")canvas.pack()c. 游戏循环游戏循环是贪食蛇游戏的外围。在每次循环中,咱们须要: 查看蛇是否撞到了墙壁或本人的身材。挪动蛇。查看蛇是否吃到了食物。从新绘制蛇和食物。 d. 管制蛇的挪动咱们能够绑定键盘的方向键,使玩家能够管制蛇的挪动方向: root.bind("<Left>", turn_left)root.bind("<Right>", turn_right)root.bind("<Up>", turn_up)root.bind("<Down>", turn_down)e. 完结游戏当蛇撞到墙壁或本人的身材时,咱们须要完结游戏,并给出“游戏完结”的提醒。 5. 演示视频 and 残缺代码演示视频如下,篇幅所限,残缺代码收费获取地址:https://mp.weixin.qq.com/s/xthDlgsNZOrEHGvaEbby8w 6. 小结用Python和Tkinter制作贪食蛇游戏不仅简略,而且很乏味。这不仅是一个很好的编程练习,还能帮忙咱们回忆起那些经典的游戏时刻。对于初学者来说,这也是一个了解游戏逻辑和学习图形用户界面编程的好机会。心愿你能享受编程的乐趣。 这就是一个繁难版本的贪食蛇小游戏教程,你能够依据本人的趣味和创意进一步欠缺游戏,例如增加更多功能、进步难度或改良界面设计。心愿这篇文章能帮忙你入门,并激发你更多的创意和激情!

September 21, 2023 · 1 min · jiezi

关于python:基于PythonFlask实现一个简易网页验证码登录系统案例

在当今的互联网世界中,为了避免歹意拜访,许多网站在登录和注册表单中都采纳了验证码技术。验证码能够避免机器人主动提交表单,确保提交行为背地有一个实在的人类用户。本文将向您展现如何应用Python的Flask框架来创立一个简略的验证码登录零碎。 1. 开始之前首先,确保你曾经装置了以下所需的库: pip install flask PillowFlask: 一个轻量级的Web服务器和框架。Pillow: 解决图像操作,用于生成验证码图像。 2. 生成验证码图像咱们应用Pillow库来生成验证码图像。除了显示数字和字母,为了减少安全性,咱们还会在图像上增加一些烦扰线条和噪点。 from PIL import Image, ImageDraw, ImageFontimport randomimport stringdef generate_captcha_image(): # 定义图片大小及背景色彩 image = Image.new('RGB', (120, 30), color=(73, 109, 137)) # 应用零碎自带字体,或指定字体文件门路 font_path = "./arial.ttf" fnt = ImageFont.truetype(font_path, 15) d = ImageDraw.Draw(image) # 生成5位数的验证码文本 captcha_text = ''.join(random.choices(string.ascii_uppercase + string.digits, k=5)) d.text((10, 10), captcha_text, font=fnt, fill=(255, 255, 0)) # 增加烦扰线条和噪点 for _ in range(random.randint(3, 5)): start = (random.randint(0, image.width), random.randint(0, image.height)) end = (random.randint(0, image.width), random.randint(0, image.height)) d.line([start, end], fill=(random.randint(50, 200), random.randint(50, 200), random.randint(50, 200))) for _ in range(100): xy = (random.randrange(0, image.width), random.randrange(0, image.height)) d.point(xy, fill=(random.randint(50, 200), random.randint(50, 200), random.randint(50, 200))) return image, captcha_text3. 应用Flask建设Web利用当初,咱们应用Flask来创立一个Web利用,并展现登录页面与验证码图像。 ...

September 21, 2023 · 1 min · jiezi

关于python:Python图像处理初探Pillow库的基础使用

图像处理在许多畛域都有宽泛的利用,包含计算机视觉,机器学习,人工智能,网页开发等。Pillow库是Python中最风行的图像处理库之一,它是PIL(Python Imaging Library)的一个分支,提供了丰盛的图像处理性能,使图像处理变得简略而高效。 在这篇文章中,咱们将探讨Pillow库的一些基本功能,包含如何关上、显示和保留图像,如何调整图像的大小和旋转图像,以及如何进行一些简略的图像操作,例如裁剪和过滤。 一、关上、显示和保留图像Pillow库中的Image模块提供了一系列操作图像的函数。让咱们从最根底的开始,如何关上,显示和保留图像: from PIL import Image# 关上图像img = Image.open('example.jpg')# 显示图像img.show()# 保留图像img.save('new_example.jpg')二、图像操作:调整大小和旋转Pillow库也提供了一些根本的图像操作性能,例如调整图像大小和旋转图像: # 调整图像大小img_resized = img.resize((800, 800))# 旋转图像img_rotated = img.rotate(45)三、图像操作:裁剪和过滤除了上述操作外,Pillow还提供了更多的图像操作性能,例如裁剪和过滤图像: # 裁剪图像box = (100, 100, 400, 400)img_cropped = img.crop(box)# 应用过滤器from PIL import ImageFilterimg_blurred = img.filter(ImageFilter.BLUR)四、读取图像属性Pillow不仅能够用于图像操作,还能够用于读取图像的一些根本属性,例如图像的格局,大小等: # 读取图像格式print(img.format)# 读取图像大小print(img.size)# 读取图像模式print(img.mode)Pillow库为Python图像处理提供了弱小而简略的接口,它使得图像处理变得简略而高效。本篇文章只是对Pillow的高级用法进行了简略的介绍,但Pillow的性能远不止于此。在接下来的文章中,咱们将探讨更多高级的性能,包含色彩空间转换,直方图等。心愿你在Python的图像处理之路上一切顺利!

September 20, 2023 · 1 min · jiezi

关于python:亚马逊云科技-Amazon-Lightsail-一种在云服务器上运行容器的简单方法

当向开发人员介绍亚马逊云科技云服务时,通常会花一点工夫来介绍并演示 Amazon Lightsail 。它是迄今为止开始应用亚马逊云科技的最简略办法。应用它,您在几分钟内即可在本人的虚构服务器上运行您的应用程序。而后减少了在 Amazon Lightsail 上部署基于容器的工作负载的可能性。 Amazon Lightsail 是一项易于应用的云服务,可为您提供部署应用程序或网站所需的所有,从而实现经济高效且易于了解的月度打算。它是部署简略的工作负载、网站或开始应用亚马逊云科技的现实抉择。典型的 Amazon Lightsail 客户包含开发人员、小型企业或初创公司等,他们心愿疾速开始应用云和亚马逊云科技。 亚马逊云科技开发者社区为开发者们提供寰球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、流动与比赛等。帮忙中国开发者对接世界最前沿技术,观点,和我的项目,并将中国优良开发者或技术举荐给寰球云社区。如果你还没有关注/珍藏,看到这里请肯定不要匆匆划过,点这里让它成为你的技术宝库!部署到 Amazon Lightsail 时,您能够在六种操作系统(4 个 Linux 发行版、FreeBSD 或 Windows)、七种应用程序(例如 WordPress、Drupal、Joomla、Plesk…)和七种堆栈(例如 Node.js、Lamp、GitLab、Django…)之间抉择。然而 Docker 容器呢? Amazon Lightsail 为开发人员提供一种简略的形式来将其容器部署到云中。您只须要为您的容器提供一个 Docker 映像,亚马逊云科技将为您主动容器化该映像。Amazon Lightsail 为您提供了一个 HTTPS 终端节点,能够为在云容器中运行的应用程序提供服务。它会主动设置负载平衡的 TLS 终端节点,并解决 TLS 证书。它会为您主动替换无响应的容器,会为终端节点调配一个 DNS 名称,保护旧版本,直到新版本运行失常并筹备好上线等。 上面通过将简略的 Python Web 应用程序部署为容器来看看它是如何工作的。假如您的笔记本电脑上装置了亚马逊云科技命令行界面(CLI)和 Docker。不须要 Python,它将仅装置在容器中。 首先应用 Flask 简略应用程序框架创立一个 Python REST API。任何能够在容器内运行的编程语言和框架都能够工作。我抉择了 Python 和 Flask,因为它们简略又简洁。 您能够平安地复制/粘贴以下命令: 而后创立一个 Dockerfile,其中蕴含构建容器映像所需的步骤和信息: 当初能够构建容器了: build 命令在构建容器时会输入许多行,它最终以以下音讯完结(理论 ID 将不同): 能够通过在笔记本电脑上启动容器来测试它: ...

September 19, 2023 · 1 min · jiezi

关于python:pymilvus-的-offset-参数不生效

谬误写法 def search_vector(vector: list[float], offset: int = 0, limit: int = 10) -> list[SearchResult]: from pymilvus.orm.search import SearchResult as MilvusSearchResult from loggers import logger logger.debug(f'offset: {offset}, limit: {limit}') rows: MilvusSearchResult = collection.search( data=[vector], param={ "metric_type": 'L2', "nprobe": 32 }, anns_field='image_vector', output_fields=['id', 'hash_code'], limit=limit, offset=offset )正确的写法 def search_vector(vector: list[float], offset: int = 0, limit: int = 10) -> list[SearchResult]: from pymilvus.orm.search import SearchResult as MilvusSearchResult from loggers import logger logger.debug(f'offset: {offset}, limit: {limit}') rows: MilvusSearchResult = collection.search( data=[vector], param={ "metric_type": 'L2', "nprobe": 32, "offset": offset }, anns_field='image_vector', output_fields=['id', 'hash_code'], limit=limit, # offset=offset )

September 19, 2023 · 1 min · jiezi

关于python:基于PythonDjango实现一个电商购物网站系统

随着互联网的高速倒退,电子商务行业也正迎来了其黄金时代。如何搭建一个性能齐备、体验良好的电商网站成了许多开发者的关怀话题。明天,我将带大家应用Python语言和Django框架,疾速打造一个电商购物零碎。如果你有肯定的Python根底,那么追随我的脚步,你会发现这并没有你设想的那么难! 局部成果展现 1. 技术抉择首先,咱们先明确咱们的技术栈: 前端:咱们抉择应用HTML, CSS, JavaScript与BootStrap,四者组合能让咱们轻松构建好看、响应式的网页界面。后端:Django框架,它是Python的一大利器,能够让咱们高效地构建后盾逻辑。 2. 性能概述为了让网站操作简略、晦涩,咱们将实现以下性能: 管理员登录与治理:管理员能够登录后盾,对用户和商品进行增删改查的操作。用户零碎:普通用户能够进行注册和登录。购物车性能:用户在抉择商品后,能够增加到购物车,并随时调整商品数量。商品详情:用户点击商品,能够查看其详细描述、价格、库存等信息,并可进行评论。数据可视化:通过Echart,咱们能够生成直观的数据图表,例如销售统计、用户行为剖析等。3. 演示视频 and 残缺代码视频+代码:https://www.yuque.com/ziwu/yygu3z/vastp669hq5qekmr

September 12, 2023 · 1 min · jiezi

关于python:给-python-的爬虫-docker-镜像添加-nodejs-环境

过来会应用相似 curl -sL https://deb.nodesource.com/setup_16.x | bash - 这样的形式增加 source 源,而后在应用 apt 装置 nodejs 然而这个办法最近不行了,运行会有正告 root@f51e70203b5b:/# curl -sL https://deb.nodesource.com/setup_16.x | bash -================================================================================▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓================================================================================ SCRIPT DEPRECATION WARNING This script, located at https://deb.nodesource.com/setup_X, used to install Node.js is deprecated now and will eventually be made inactive. Please visit the NodeSource distributions Github and follow the instructions to migrate your repo. https://github.com/nodesource/distributions The NodeSource Node.js Linux distributions GitHub repository contains information about which versions of Node.js and which Linux distributions are supported and how to install it. https://github.com/nodesource/distributions SCRIPT DEPRECATION WARNING================================================================================▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓================================================================================TO AVOID THIS WAIT MIGRATE THE SCRIPTContinuing in 60 seconds (press Ctrl-C to abort) ...^C大略意思就是,这种形式曾经 out了,nodejs 叫你别这么用了 ...

September 11, 2023 · 2 min · jiezi

关于python:胡焕庸线我国东西地级市分布密度分界线

背景黑河—腾冲线,又名胡焕庸线,是我国人口密度散布的货色近似分界线。明天把地级市坐标散布密度做成热力求,并与胡焕庸线一起展现时,惊奇的发现,胡焕庸线貌似也是我车货色地级市散布密度的分界线。 生成folium地图以下30行代码,用于生成一个folium地图,并在地图上绘制一条黑河—腾冲线,同时绘制地级市坐标的散布密度热力求。 # -*- coding:UTF-8 -*-# region 引入必要依赖from selfPyTools.MapModule import *# endregion# 筹备一个地图类对象, 增加 智图GeoQ 的瓦片图地图 = 地图类(中心点=罕用坐标.上海市).增加瓦片.智图GeoQ().地图# 增加一行网页题目地图.增加网页题目(网页题目款式类(题目文本='感激智图GeoQ提供的根底瓦片资源', 文本字体='楷体', 文本色彩=色彩名.灰))# 生成一个折线对象(折线是由多段间接段组成的,所以一个直线段也能够看成一个折线,只是只有一段而已)折线 = 折线类(线条款式=线条款式类(透明度=0), 线上文本款式=线上文本款式类(文本=' ★ ', 文本色彩=色彩名.蓝))折线.增加门路点(罕用坐标.腾冲市)折线.增加门路点(罕用坐标.黑河市)# 将折线增加到图层上地图.增加标记(地图.增加图层('黑河-腾冲线, 胡焕庸线', 默认显示=True), 折线)热力层 = 地图.增加热力层()for 城市, 坐标 in 罕用坐标.罕用坐标字典.items(): if 坐标.无效: 地图.增加热力点(热力层, 坐标)# 将地图对象生成一个html的文档保留,并顺便打印这个文档地图.反对坐标拾取.生成html(文档名='黑河-腾冲线 胡焕庸线', 指标门路='.').关上()以上代码生成的html地图成果如下: 根据地市坐标散布密度热力求,能够大抵判断以黑河—腾冲线为货色分界,西侧地市散布密度显著稠密,而东侧地市散布密度显著浓密。 小结能够看出,黑河—腾冲线,不仅做为我国货色人口密度的分界线,也大抵是我国货色地市散布密度的分界线了。

September 11, 2023 · 1 min · jiezi

关于python:使用YOLOv8进行工业视觉缺陷检测基于Aidlux完成本地终端部署

1. 引言  工业视觉缺点检测零碎是一种利用计算机视觉技术,通过剖析生产过程中的图像和视频数据,来检测工业产品是否存在缺点或品质问题的零碎。有幸参加到Aidlux夏令营流动中,跟着东哥做了医疗注射器缺点检测零碎我的项目,在这个过程中我播种到了很多之前没有接触到的算法和实际。本我的项目旨在开发一种高效的工业视觉缺点检测零碎,利用YOLOv8模型进行指标检测,并基于AidLux平台实现本地终端部署推理,以满足工业生产中对产品质量管制的需要。 2. 我的项目背景  工业生产中,产品质量的保障是至关重要的,而传统的品质检测办法通常须要大量的人力和工夫老本,且容易受主观因素影响。因而,利用计算机视觉技术来自动化进行缺点检测已成为一种重要的解决方案。本我的项目旨在开发一种高效且易于部署的医疗注射器缺点检测零碎,以进步生产效率和产品质量。 3. 我的项目指标  本我的项目的次要指标是设计、开发和部署一种医疗注射器缺点检测零碎,具体指标如下:   应用YOLOv8模型进行指标检测,检测对象包含胶塞、推杆尾部、针尾部、针嘴、螺口、小胶塞,并且须要额定检测歪嘴状况。 (1)实现本地终端部署推理,以满足实时性要求。 (2)提供可扩展性,反对罕用模型的部署,同时可能灵便应答新模型的更新。 (3)提供简略的部署代码,反对Python和C++多语言开发,实用于更多的工业级产品。 (4)放弃零碎玲珑、装置不便,具备高环境耐受性。 (5)继续保护和迭代零碎,确保产品的品质和性能一直晋升。    在满足上述多样化需要的思考下,咱们抉择Aidlux平台作为我的项目的外围根底。Aidlux平台不仅简洁,而且功能完善,可能满足咱们这个我的项目的各项要求。此外,咱们还留神到,在应用Aidlux进行图片推理预测时,其速度体现也相当迅速,进一步确保了零碎的高效性。通过抉择Aidlux平台,咱们可能更好地实现我的项目指标,进步工业视觉缺点检测的效率和准确性。 4. 技术架构 4.1. YOLOv8模型抉择和改良   为了实现目标检测,本项目选择了YOLOv8模型,该模型集成了多种性能,包含分类、实例宰割、指标检测、关键点检测等。针对我的项目需要,咱们对YOLOv8模型进行了一些改良,其中包含slimNeck和VoVGSCSPC。其中为了进一步改良模型性能,咱们引入了SIou(Scale-Invariant Intersection over Union)作为一项要害的模型改良。SIou不仅保留了其余Iou(Intersection over Union)办法的长处,还退出了角度的计算,从而在多指标检测和缺点检测中带来了以下劣势:   (1)模型收敛速度更快:SIou的引入使得模型更容易学习指标的精确地位和角度,从而减速了训练过程。   (2)进步训练的速度:SIou的角度计算有助于模型更好地了解指标的方向,进而进步了检测速度。   (3)进步模型精度:SIou综合思考了指标的地位和角度信息,因而在缺点检测中可能更精确地辨认缺点,进步了模型的精度。  通过引入SIou,咱们进一步提高了YOLOv8模型的性能,使其更实用于工业视觉缺点检测工作。SIoU的综合性能劣势将有助于进步检测准确性,特地是在具备不同角度和方向的指标检测中,所以很适宜咱们这个医疗注射器缺点检测零碎。 class VoVGSCSP(nn.Module): # VoVGSCSP module with GSBottleneck def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5): super().__init__() c_ = int(c2 * e) # hidden channels self.cv1 = Conv(c1, c_, 1, 1) self.cv2 = Conv(c1, c_, 1, 1) self.gsb = nn.Sequential(*(GSBottleneck(c_, c_, e=1.0) for _ in range(n))) self.res = Conv(c_, c_, 3, 1, act=False) self.cv3 = Conv(2 * c_, c2, 1) def forward(self, x): x1 = self.gsb(self.cv1(x)) y = self.cv2(x) return self.cv3(torch.cat((y, x1), dim=1))class VoVGSCSPC(VoVGSCSP): # cheap VoVGSCSP module with GSBottleneck def __init__(self, c1, c2, n=1, shortcut=True, g=1, e=0.5): super().__init__(c1, c2) c_ = int(c2 * 0.5) # hidden channels self.gsb = GSBottleneckC(c_, c_, 1, 1) 4.2. 模型导出与部署 ...

September 11, 2023 · 5 min · jiezi

关于python:基于Flaskwebsocket实现一个在线聊天室网站系统

在明天的互联网时代,实时通信成为了许多利用和服务的外围特色。从社交媒体到在线游戏,无处不在的即时互动为用户带来了难以置信的沉迷体验。有了这种背景,为何不深刻理解如何构建本人的实时聊天利用呢?在本文中,咱们将介绍如何应用 Flask 和 Websockets 通过 Flask-SocketIO 框架创立一个简略的在线聊天室。 1. 什么是Flask?Flask 是一个轻量级的 Python web 开发框架,它为开发者提供了一个简略、直观的形式来创立 web 利用。因为其“微”个性,你能够从一个简略的单文件利用开始,而后依据须要减少更多功能。 2. Websockets 和 Flask-SocketIOWebsockets 是一个网络通信协定,容许服务器和客户端之间进行双向实时通信。与传统的 HTTP 申请相比,Websockets 提供了一个长久的连贯,使得数据可能实时、高效地在单方之间流动。Flask-SocketIO 则是一个 Flask 插件,它使得在 Flask 利用中集成 Websockets 变得非常简单。不仅如此,它还提供了一系列的高级性能,如播送、命名空间和房间反对,使得创立简单的实时利用变得轻而易举。 3. 创立在线聊天室首先,咱们须要装置必要的库: pip install Flask flask-socketio接下来,初始化 Flask 利用并集成 SocketIO: from flask import Flask, render_templatefrom flask_socketio import SocketIOapp = Flask(__name__)socketio = SocketIO(app)定义一个简略的路由以出现聊天室的前端界面: @app.route('/')def index(): return render_template('index.html')为聊天室事件(如退出、发送音讯和来到)增加 SocketIO 事件处理函数: from flask_socketio import join_room, leave_room, send@socketio.on('join')def join(data): join_room(data['room']) send({'msg': data['username'] + " 退出了聊天室."}, room=data['room'])@socketio.on('text')def text(data): send({'msg': data['username'] + ": " + data['msg']}, room=data['room'])@socketio.on('left')def left(data): leave_room(data['room']) send({'msg': data['username'] + " 来到了聊天室."}, room=data['room'])最初,启动你的 Flask 利用: ...

September 11, 2023 · 1 min · jiezi

关于python:python包管理神器Poetry

一、起因最近在逛一些当下比拟热的python开源代码(fastapi、langchain、redash)的时候,发现我的项目根目录都很难见到requirments.txt这个包依赖文件了,取而代之的是pyproject.toml文件和poetry.lock文件。而我,还只会应用requirments.txt,来自程序员的直觉是,我曾经掉队了,不由得一阵危机感,随之而来的是几个问题: pyproject.toml和poetry.lock这两个文件到底是啥?为啥一线的开源我的项目都曾经弃用requirments.txt?pyproject.toml和poetry.lock好在哪?去python官网逛了一下,发现了 PEP518标准,是这么说的: The build system dependencies will be stored in a file named pyproject.toml that is written in the TOML formatpyproject.toml是python官网举荐的新标准,用于形容python我的项目的依赖,取代了之前的requirments.txt,一个pyproject.toml文件大抵长这样 蕴含了代码库名称、版本、lisence等meta信息,还有python版本、依赖包的版本等信息,比原来干瘪瘪的requirments.txt是要丰盛不少poetry.lock则是用于治理python我的项目依赖关系的工具Poetry生成的文件。 它记录了我的项目所依赖的包的版本信息,帮忙开发者在不同的开发环境中放弃依赖的一致性,一个poetry.lock文件大抵长这样 形容了依赖包的版本、环境,以及依赖包的子依赖包的版本,甚至准确到了哈希值那么这个Poetry是何方神圣,竟然受到泛滥一线开源我的项目的青眼,应该不是花瓶,探一探到底先。 于是照着Poetry官网文档操作了一波之后, 不禁感叹:这才是正经的包治理! 二、Poetry VS 传统包治理1、主动生成、治理可能残缺形容我的项目依赖的toml文件传统包治理 以往常常会遇到一类状况,拿到一个我的项目,依据requirements.txt装置依赖的时候,因为requirements.txt不足对python版本的形容,导致接手的人不晓得python版本之前有个我的项目是基于python3.8开发的,我选了过后还算比拟新的python3.6,装置requirements.txt,而后运行报错,排查之后才发现是python版本不统一导致的问题Poetry 能解决以上问题,它会主动生成并治理pyproject.toml文件,生成代码库名称、版本、lisence等meta信息,还有python版本、依赖包的版本等信息2、为生产和开发环境提供独自的依赖传统包治理 一个场景是,开发、测试环境须要的包,生产环境不肯定须要,比方pytest、flake8、black、pycodestyle等等,传统的做法是,建设多个requirements.txt,比方:requirements-dev.txt、requirements-test.txt、requirements-pro.txt,这样文件繁多,不利于对立治理Poetry 能够把所有环境的依赖比拟好地区分,都放入pyproject.toml文件中对立治理3、更新包版本,主动在pyproject.toml中同步更新传统包治理 传统工具pip或者conda在更新或者增加包之后,须要手动或者pip freeze一下依赖,频繁更新容易遗记Poetry 将这个过程合二为一,只须要poetry add XXX,依赖信息会自动更新到pyproject.toml4、依赖关系的解决传统包治理 应用pip治理依赖比拟大的一个痛点场景是,装置pandas==2.0.2,须要依赖numpy>=1.20.3,而后,你又装置了numpy==1.20.2,只管产生了依赖抵触,pip仍然会将numpy版本更新到1.20.2(与pandas==2.0.2对于numpy版本的要求抵触),这样,默默地引入依赖抵触的包,会在后续的程序运行中导致潜在的抵触问题,而且不太好排查解决。Poetry 会立刻报错,并提醒正当的版本区间5、彻底删除已有依赖包以及子依赖包传统包治理 应用pip治理依赖另一个比拟大的痛点场景是,比方装置pandas==2.0.2的时候,顺带装置了包含numpy>=1.20.3在内的数十个子依赖,当你想要卸载pandas的时候,pip uninstall pandas,只会卸载pandas自身,而不会去卸载其下的数十个子依赖包,导致的问题就是,呈现大量不会应用到的【孤儿】子依赖包,长此以往,包占用的空间【虚胖】,节约存储空间,包治理也一团糟。Poetry 能够很好地治理依赖以及子依赖,删除依赖包的同时,一并删除子依赖,保护一个洁净高效的我的项目环境。三、总结Poetry提供了比pip和conda更多的劣势 统一的软件包装置:Poetry提供了一个统一的格局来装置任何软件包,确保整个我的项目有一个标准化的办法。高效的依赖性治理:Poetry只为指定的软件包装置必要的依赖性,缩小你环境中不相干的软件包的数量。简化的软件包移除:Poetry简化了软件包及其相干依赖关系的移除,使其易于保护一个洁净和高效的我的项目环境。依赖性解决:Poetry的确定性解析器无效地解决了依赖关系,及时辨认并解决任何不统一或抵触。尽管Poetry可能须要团队成员破费一些额定的工夫和精力来学习和适应,但从久远来看,应用Poetry这样的工具能够为你节省时间和精力。 给所有python开发安利这款神器。 四、号外看看隔壁,java(gradle.build)、前端开发(package.json),早都曾经用上了现代化的包管理工具及标准,不得不感叹,python在机器学习、深度学习上的确拿捏了,但在工程化这方面,还是落后于他人家的小孩不止一点半点,工程化比拟拉胯的另一个例子是,python直到最近一两年,随着fastapi的推广,才大范畴用上swagger,极大地促成了接口开发联调效率,用过之后,不得不说,真香。

September 10, 2023 · 1 min · jiezi

关于python:Python-潮流周刊第-19-期摘要

原文全文:https://pythoncat.top/posts/2023-09-09-weekly 文章&教程 1、Mojo 终于提供下载了! 2、咱们能从 PEP-703 中学到什么? 3、用 500 行 Python 代码写一个 C 语言编译器 4、简略介绍如何用 Python 作协定缓冲区编程 5、用 Python 和 matplotlib 创立丑陋的极坐标直方图 6、布隆过滤器图解与 Python 实现 7、Python 中的堆数据结构:最小和最大堆实现 8、Python 容器化部署教程 9、2023 年 Python 包治理的实际指南 10、记一次 Python 利用内存透露问题定位 11、介绍 flake8-logging 12、Falcon 180B 正式在 Hugging Face Hub 上公布 ️我的项目&资源 1、pkuseg-python:多畛域中文分词工具,比 jieba 准确性更高 2、pysentation:在 CLI 里显示演示文稿 3、compress:基于集体语料库的快捷输出工具 4、textbase:用于构建 AI 聊天机器人的简略框架 5、reader:Python 开发的 feed 阅读器库 6、Baichuan2:百川 53B 大模型在线对话平台 7、svcs:灵便的 Python 服务定位器 8、gpt_academic: 为 ChatGPT/GLM 提供实用化交互界面 ...

September 10, 2023 · 1 min · jiezi

关于python:Python教程13Python运算符详解算术运算符比较运算符逻辑运算符位运算符

Python的运算符是用于执行各种操作的符号或符号组合。它们用于操作数据并进行算术、比拟、逻辑和其余类型的运算。咱们所熟知的加减乘除也是运算符中的一种。Python提供了多种类型的运算符,有算术运算符,比拟运算符,赋值运算符,逻辑运算符,位算符等等。 算术运算符算术运算符是Python中比较简单的运算符,咱们小学所学习的加减乘除也是算术运算符中的一部分,用于执行数学运算,具体有以下算术运算符。 1、 加法运算符(+):将两个操作数相加。 a = 10b = 5c = a + bprint(c) # 输入:152、 减法运算符(-):从第一个操作数中减去第二个操作数。 a = 10b = 5c = a - bprint(c) # 输入:53、 乘法运算符(*):将两个操作数相乘。 a = 10b = 5c = a * bprint(c) # 输入:504、 除法运算符(/):将第一个操作数除以第二个操作数,后果为浮点数。 a = 10b = 5c = a / bprint(c) # 输入:2.05、 取余运算符(%):返回第一个操作数除以第二个操作数的余数。 a = 10b = 3c = a % bprint(c) # 输入:16、 幂运算符(**):将第一个操作数作为底数,第二个操作数作为指数进行幂运算。 a = 2b = 3c = a ** bprint(c) # 输入:87、 整除运算符(//):将第一个操作数除以第二个操作数并向下取整。 ...

September 10, 2023 · 2 min · jiezi

关于python:Python-pip-设置国内源清华大学源阿里源亲测可用

背景 因为 python 自带的源下载速度十分慢,特地是装置一些库的时候,甚至有时会失败。 因而,倡议将下载源替换成国内的,下载速度会快很多。总共有两种办法 代码替换 (举荐应用这一种)手动替换代码替换设置阿里源(举荐这个)pip config set global.index-url https://mirrors.aliyun.com/pypi/simple pip config set install.trusted-host mirrors.aliyun.com设置清华大学的pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple/pip config set install.trusted-host pypi.tuna.tsinghua.edu.cn手动替换windows 替换首先在 windows 以后用户家的目录下,创立一个 pip 文件夹,而后创立一个pip.ini文件,批改文件内容为如下; [global] index-url = http://mirrors.aliyun.com/pypi/simple/ [install] trusted-host=mirrors.aliyun.com 记得肯定是pip.ini,如果没有开后缀的同学,记得把文件后缀关上,再批改文件的后缀为ini即可。用户家目录为C:Users**** # **** 就是以后登录用户名, 比方登录用户名是Luke, 那么就是C:/Users/junxu Mac 替换会在目录下主动生成,不同零碎,目录可能不同,所以应用命令行最靠谱~/.config/pip/pip.conf [global]index-url = https://mirrors.aliyun.com/pypi/simple[install]trusted-host = mirrors.aliyun.com国内源列表(举荐用阿里云的)阿里云: http://mirrors.aliyun.com/pypi/simple/中国科技大学: https://pypi.mirrors.ustc.edu.cn/simple/豆瓣: http://pypi.douban.com/simple/清华大学: https://pypi.tuna.tsinghua.edu.cn/simple/中国科学技术大学: http://pypi.mirrors.ustc.edu.cn/simple/

September 9, 2023 · 1 min · jiezi

关于python:Daggerio尝鲜20行代码实现基于多操作系统多python版本兼容性测试并发

背景Dagger.io介绍能够参考这一篇 新兴却大牛星散的Dagger.io最近在用目前热度很高的提醒工程框架langchain,遇到一个bug,打算提一个Pull Request内容提交代码会波及大量本地测试工作:波及python版本向下兼容,多操作系统兼容,langchain我的项目依赖繁多、环境简单,应用传统的测试会有如下麻烦 待测试环境多 多python版本:python>=3.8.1,<4.0,小版本加起来有靠近60个,不过能够简化一下,每个大版本中只筛选一个小版本,3.8.1、3.9.1、3.10.1、3.11.1,一共4个。多操作系统:linux/amd64、darwin/amd64一共2个。依据下面python版本和操作系统版本的组合(笛卡尔乘积),就有种8种测试环境的可能,如果波及更多python版本和操作系统版本的兼容测试,只是做测试环境的筹备,就十分麻烦。测试效率问题 环境构建以及测试工作最好并发执行,减速测试过程。有没有一种可能,面对以上繁琐的测试,用一个脚本、大量代码,疾速、优雅地实现?Dagger.io能够做到上面介绍Dagger.io的具体操作 在我的项目根目录创立文件dagger_test_multi_versions.py,内容如下"""文件名:dagger_test_multi_versions.py形容:实现跨多操作系统、多python版本的测试"""import sysimport anyioimport daggerasync def test(): platforms = ["linux/amd64", "darwin/amd64"] versions = ["3.8.1", "3.9.1", "3.10.1", "3.11.1"] async with dagger.Connection(dagger.Config(log_output=sys.stderr)) as client: # 在本地我的项目根目录执行 src = client.host().directory(".") async def test_platform_version(platform:str, version: str): python = ( client.container(platform=dagger.Platform(platform)) .from_(f"python:{version}-slim") # 挂载我的项目代码 .with_directory("/src", src) # CWD .with_workdir("/src") # 装置依赖 .with_exec(["pip", "install", "-r", "requirements.txt"]) # 执行测试 .with_exec(["pytest", "tests"]) ) print(f"Starting tests for Python {version}") # 异步并发执行 await python.sync() print(f"Tests for Python {version} succeeded!") # 相当于join操作 async with anyio.create_task_group() as tg: for platform in platforms: for version in versions: tg.start_soon(test_platform_version, platform, version) print("All tasks have finished")anyio.run(test)执行 python dagger_test_multi_versions.py 即可开始测试思考Dagger.io的意义在于 ...

September 9, 2023 · 1 min · jiezi

关于python:python-第三方包安装路径-sitepackages-下面的以-libs-结尾的路径是干嘛的

python 第三方包装置门路 site-packages 上面的以 .libs 结尾的门路是干嘛的? (svddb_sdk) ╭─pon@amd5700g ~/.local/share/virtualenvs/svddb_sdk-oJGZEtXx/lib/python3.10/site-packages ╰─➤ ll | grep libs 17056431 drwxrwxr-x 2 - - pon pon 12 2月 23:56 av.libs17060238 drwxrwxr-x 2 - - pon pon 12 2月 23:56 numpy.libs17073792 drwxrwxr-x 2 - - pon pon 12 2月 23:56 opencv_python.libs17060002 drwxrwxr-x 2 - - pon pon 12 2月 23:56 Pillow.libs17182651 drwxrwxr-x 2 - - pon pon 12 2月 23:56 torchvision.libs

September 9, 2023 · 1 min · jiezi

关于python:一文搞懂Python深拷贝与浅拷贝使用和区别

欢送浏览本篇对于Python中深拷贝与浅拷贝的入门到精通指南。在Python开发中,了解拷贝是至关重要的,因为它波及到数据的复制和共享,对于防止潜在的bug和性能优化都有着重要作用。本文将为您深入浅出地介绍深拷贝和浅拷贝的概念、区别以及如何在不同场景下正确利用它们。 目录什么是拷贝浅拷贝 列表的浅拷贝字典的浅拷贝深拷贝深拷贝与浅拷贝的利用场景 防止副作用嵌套数据结构多线程环境应用copy模块实现拷贝总结与倡议 1. 什么是拷贝在Python中,拷贝是指创立一个新的对象,其中蕴含了原始对象的值,以便于在不扭转原始对象的状况下进行操作。拷贝在解决数据时十分有用,特地是当咱们须要对数据进行批改而又不想影响原始数据时。 2. 浅拷贝浅拷贝是指创立一个新的对象,该对象的内容是原始对象中各项的援用。换句话说,浅拷贝仅复制了原始对象中元素的援用,而不是元素自身的拷贝。在Python中,能够应用切片操作或copy模块的copy()办法来执行浅拷贝。 列表的浅拷贝思考以下代码: original_list = [1, 2, 3, [4, 5]]shallow_copy_list = original_list[:]在这个例子中,shallow_copy_list是original_list的浅拷贝。只管列表中的元素自身被复制,但嵌套列表内的援用依然是雷同的。这可能导致在批改嵌套列表时出现意外行为。 shallow_copy_list[3][0] = 99print(original_list) # 输入: [1, 2, 3, [99, 5]]字典的浅拷贝字典的浅拷贝能够通过dict()构造函数或copy模块的copy()办法实现。与列表相似,浅拷贝后的字典依然保留了原始字典中各项的援用。 original_dict = {'a': 1, 'b': [2, 3]}shallow_copy_dict = dict(original_dict)shallow_copy_dict['b'][0] = 99print(original_dict) # 输入: {'a': 1, 'b': [99, 3]}3. 深拷贝深拷贝是指创立一个新的对象,并递归地复制原始对象及其所有嵌套对象,从而实现齐全独立的拷贝。Python中的copy模块提供了deepcopy()函数来实现深拷贝。深拷贝确保了原始对象及其所有嵌套对象都是独立的,因而对深拷贝后的对象的批改不会影响原始对象。 import copyoriginal_list = [1, 2, 3, [4, 5]]deep_copy_list = copy.deepcopy(original_list)deep_copy_list[3][0] = 99print(original_list) # 输入: [1, 2, 3, [4, 5]]4. 深拷贝与浅拷贝的利用场景深拷贝和浅拷贝在不同的利用场景中有不同的用处。 防止副作用当您须要批改数据,但又不想影响原始数据时,深拷贝是更平安的抉择。浅拷贝可能导致意外的数据更改,特地是对于嵌套数据结构。 嵌套数据结构当数据具备嵌套构造,且您心愿独立解决每个嵌套层级时,深拷贝是必须的。浅拷贝无奈确保所有嵌套层级都是独立的。 ...

September 8, 2023 · 1 min · jiezi

关于python:Python爬虫进阶使用Scrapy库进行数据提取和处理

在咱们的初级教程中,咱们介绍了如何应用Scrapy创立和运行一个简略的爬虫。在这篇文章中,咱们将深刻理解Scrapy的弱小性能,学习如何应用Scrapy提取和解决数据。 一、数据提取:Selectors和Item在Scrapy中,提取数据次要通过Selectors来实现。Selectors基于XPath或CSS表达式的查询语言来选取HTML文档中的元素。你能够在你的爬虫中应用response对象的xpath或css办法来创立一个Selector对象。 例如,咱们能够批改咱们的QuotesSpider爬虫,应用Selectors来提取每个援用的文本和作者: import scrapyclass QuotesSpider(scrapy.Spider): name = "quotes" start_urls = [ 'http://quotes.toscrape.com/page/1/', ] def parse(self, response): for quote in response.css('div.quote'): text = quote.css('span.text::text').get() author = quote.css('span small::text').get() print(f'Text: {text}, Author: {author}')此外,Scrapy还提供了Item类,能够定义你想要收集的数据结构。Item类非常适合收集结构化数据,如咱们从quotes.toscrape.com中获取的援用: import scrapyclass QuoteItem(scrapy.Item): text = scrapy.Field() author = scrapy.Field()而后咱们能够批改QuotesSpider爬虫,使其生成和收集QuoteItem对象: class QuotesSpider(scrapy.Spider): name = "quotes" start_urls = [ 'http://quotes.toscrape.com/page/1/', ] def parse(self, response): for quote in response.css('div.quote'): item = QuoteItem() item['text'] = quote.css('span.text::text').get() item['author'] = quote.css('span small::text').get() yield item二、数据处理:PipelinesScrapy应用数据管道(pipelines)来解决爬虫从网页中抓取的Item。当爬虫生成一个Item,它将被发送到Item Pipeline进行解决。 ...

September 8, 2023 · 1 min · jiezi

关于python:效率提升手把手教你如何使用免费的-Amazon-Code-Whisperer

阐明GitHub copilot 尽管很强,然而一个月10美金的费用拿来吃个小火锅他不香吗?而身为云计算博主将向你举荐一款能够平替 GitHub copilot 并且收费的反对多种编程语言的 AI 编程助手 Amazon Code Whisperer。 亚马逊云科技开发者社区为开发者们提供寰球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、流动与比赛等。帮忙中国开发者对接世界最前沿技术,观点,和我的项目,并将中国优良开发者或技术举荐给寰球云社区。如果你还没有关注/珍藏,看到这里请肯定不要匆匆划过,点这里让它成为你的技术宝库!工具装置如果你曾经有 vscode 请疏忽本章节,以 python 为例哈,装置 python 环境,把这个链接复制到浏览器下载 python,留神操作系统 win7 以及之前的版本不反对哈 https://www.python.org/downloads/?trk=cndc-detail 双击安装包,装置 python 装置过程中弹进去的所有提醒都点批准,装置好了之后咱们装置工具 vscode 把网址复制到浏览器关上微软官网收费下载 https://code.visualstudio.com/?trk=cndc-detail 双击下载好的软件就能够装置了 装置的时候,装置界面可能有所不同。始终抉择批准,持续,就能够了 装置后,点击“实现”就装置胜利了。此时,桌面会呈现一个 vscode 的快捷键,当前用的时候,点击它就能够了。 在 vscode 外面装置中文 装置好之后点右下角重启 在 vscode 外面装置 python 扩大 工具装置完结,接下来咱们来晋升生产力 生产力晋升Amazon Code Whisperer 集成在 Amazon Toolkit 插件外面,所以我须要装置 Amazon Toolkit 插件 弹出来的提醒选容许 装置好之后就进去个亚马逊云科技的图标,点击图标,而后咱们点击 Code Whisperer ,而后登录亚马逊云科技,如果没有亚马逊云科技账号的话,点击这个的 第一章节注册亚马逊云科技 ...

September 7, 2023 · 1 min · jiezi

关于python:Python-pip-设置国内源阿里源清华大学源

背景 因为 python 自带的源下载速度十分慢,特地是装置一些库的时候,甚至有时会失败。 因而,倡议将下载源替换成国内的,下载速度会快很多。总共有两种办法 代码替换 (举荐应用这一种)手动替换代码替换设置阿里源(举荐这个)pip config set global.index-url https://mirrors.aliyun.com/pypi/simple pip config set install.trusted-host mirrors.aliyun.com设置清华大学的pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple/pip config set install.trusted-host pypi.tuna.tsinghua.edu.cn手动替换windows 替换首先在 windows 以后用户家的目录下,创立一个 pip 文件夹,而后创立一个pip.ini文件,批改文件内容为如下; [global] index-url = http://mirrors.aliyun.com/pypi/simple/ [install] trusted-host=mirrors.aliyun.com 记得肯定是pip.ini,如果没有开后缀的同学,记得把文件后缀关上,再批改文件的后缀为ini即可。用户家目录为C:Users**** # **** 就是以后登录用户名, 比方登录用户名是Luke, 那么就是C:/Users/junxu Mac 替换会在目录下主动生成,不同零碎,目录可能不同,所以应用命令行最靠谱~/.config/pip/pip.conf [global]index-url = https://mirrors.aliyun.com/pypi/simple[install]trusted-host = mirrors.aliyun.com国内源列表(举荐用阿里云的)阿里云: http://mirrors.aliyun.com/pypi/simple/中国科技大学: https://pypi.mirrors.ustc.edu.cn/simple/豆瓣: http://pypi.douban.com/simple/清华大学: https://pypi.tuna.tsinghua.edu.cn/simple/中国科学技术大学: http://pypi.mirrors.ustc.edu.cn/simple/

September 7, 2023 · 1 min · jiezi

关于python:cython-编译问题-和-chatGPT-QA-日志

Q: python setup.py build_ext --inplace --debug 会学生成 c 文件吗? A: 在执行 python setup.py build_ext --inplace --debug 命令时,会首先生成C文件,而后再将其编译为共享库(通常是扩大模块)。以下是该命令的工作流程: 生成C文件:当您运行 python setup.py build_ext 时,它会查找我的项目中的Cython或C扩大模块,而后应用Cython编译器将这些扩大模块的.pyx源文件转换为C代码(.c文件)。这些生成的C文件将会位于我的项目的构建目录中。编译C代码:一旦C代码生成结束,build_ext 命令将应用C编译器(通常是gcc或相似工具)将C代码编译为共享库(或扩大模块),以便它能够被Python导入和应用。生成共享库:生成的共享库文件(通常是.so、.dll等,具体取决于操作系统)会搁置在与源文件雷同的目录中,因为您应用了 --inplace 选项。这意味着不须要将共享库复制到其余中央,您能够间接从当前目录中导入和应用它。调试反对:如果您应用了 --debug 选项,编译过程中会包含调试信息,以便在调试Python代码时提供更多的信息。总之,python setup.py build_ext --inplace --debug 命令会在构建过程中生成C文件,并将它们编译为共享库或扩大模块,以便在Python中应用。 Q:如何指定「指定的构建目录」 A:要指定构建目录,您须要在您的我的项目的 setup.py 文件或者 pyproject.toml 文件中进行配置,具体取决于您应用的构建工具。以下是如何在两种状况下指定构建目录的办法: 在 setup.py 中指定构建目录(应用 setuptools): 如果您应用 setuptools 来构建我的项目,能够在我的项目的 setup.py 文件中指定构建目录。在 setup() 函数中,增加 ext_modules 参数并应用 cythonize() 函数来指定构建目录,如下所示: from setuptools import setupfrom Cython.Build import cythonizesetup( # ... ext_modules = cythonize("your_module.pyx", build_dir="build"), # ...)上述示例中,build_dir 参数设置了构建目录为 "build"。您能够将其替换为您想要的任何目录门路。 ...

September 7, 2023 · 2 min · jiezi

关于python:python技巧替换文件中的某几行

TOC 1. 背景形容最近在写一个后端我的项目,次要的操作就是依据用户的前端数据,在后端关上我的项目中的代码文件,批改对应地位的参数,因为在目前的后端我的项目中常常应用这个操作,所以简略总结一下。 1. 文件门路:./test.c2. 文件内容……case EPA: chan_desc->nb_taps = 7; chan_desc->Td = .410; chan_desc->channel_length = (int) (2*chan_desc->sampling_rate*chan_desc->Td + 1 + 2/(M_PI*M_PI)*log(4*M_PI*chan_desc->sampling_rate*chan_desc->Td)); sum_amps = 0; chan_desc->amps = (double *) malloc(chan_desc->nb_taps*sizeof(double)); chan_desc->free_flags=chan_desc->free_flags|CHANMODEL_FREE_AMPS ; for (i = 0; i<chan_desc->nb_taps; i++) { chan_desc->amps[i] = pow(10,.1*epa_amps_dB[i]); sum_amps += chan_desc->amps[i]; } for (i = 0; i<chan_desc->nb_taps; i++) chan_desc->amps[i] /= sum_amps; chan_desc->delays = epa_delays; chan_desc->ricean_factor = 1;//待批改地位 chan_desc->aoa = 0;//待批改地位 chan_desc->random_aoa = 0;//待批改地位 chan_desc->ch = (struct complexd **) malloc(nb_tx*nb_rx*sizeof(struct complexd *)); chan_desc->chF = (struct complexd **) malloc(nb_tx*nb_rx*sizeof(struct complexd *)); chan_desc->a = (struct complexd **) malloc(chan_desc->nb_taps*sizeof(struct complexd *));……2. 单行批改-操作步骤读取文件应用python中的open()函数进行文件读取,将数据存储在缓冲区。 ...

September 6, 2023 · 2 min · jiezi

关于python:Python全局变量和局部变量使用从入门到精通

目录介绍变量的作用域全局变量局部变量嵌套作用域防止命名抵触综合案例:全局变量和局部变量总结 介绍欢送来到本篇文章,咱们将一起深入探讨Python中的全局变量和局部变量的概念、作用以及应用办法。无论您是初学者还是有肯定编程教训的开发者,本文将从入门到精通地疏导您,帮忙您更好地了解如何在Python中治理变量的作用域。 变量的作用域在编程中,变量的作用域指的是变量在程序中无效的范畴。Python中有两种次要的变量作用域:全局作用域和部分作用域。全局作用域中定义的变量在整个程序中都可拜访,而部分作用域中定义的变量只能在特定的代码块外部拜访。 全局变量全局变量是在程序的最外层定义的变量,能够在整个程序中拜访。在函数外部也能够拜访全局变量,但如果要批改全局变量的值,须要应用global关键字申明。上面是一个示例,演示了全局变量的应用: # 定义全局变量global_var = 10def modify_global(): global global_var global_var += 1 print("函数外部批改后的全局变量值:", global_var)print("初始全局变量值:", global_var)modify_global()print("函数内部拜访批改后的全局变量值:", global_var)代码解释: global_var = 10:在全局作用域中定义了一个全局变量global_var。def modify_global()::定义了一个函数modify_global,在函数外部应用了global关键字批改全局变量的值。print("初始全局变量值:", global_var):打印初始全局变量值。modify_global():调用函数批改全局变量的值。print("函数内部拜访批改后的全局变量值:", global_var):打印函数内部拜访批改后的全局变量值。运行上述代码,您将看到全局变量在函数外部和内部的拜访和批改状况。 局部变量局部变量是在函数外部定义的变量,只能在函数外部拜访。局部变量的作用域仅限于蕴含它的代码块。上面是一个示例,展现了局部变量的应用: def local_variable_example(): local_var = 5 print("函数外部局部变量值:", local_var)local_variable_example()# print("函数内部尝试拜访局部变量:", local_var) # 这行代码会报错在这个例子中,local_var是在函数外部定义的局部变量。您能够看到,在函数内部无奈间接拜访局部变量。 嵌套作用域在Python中,函数外部能够定义另一个函数。在这种状况下,外部函数能够拜访内部函数的变量,造成嵌套作用域。上面是一个示例,展现了嵌套作用域的概念: def outer_function(): outer_var = 15 def inner_function(): print("外部函数拜访内部函数变量:", outer_var) inner_function()outer_function()# print("尝试拜访外部函数变量:", inner_var) # 这行代码会报错在这个例子中,inner_function能够拜访outer_function中定义的变量outer_var,但在内部无奈间接拜访inner_function中的变量。 防止命名抵触在程序中,变量名的命名是很重要的。为了防止全局变量和局部变量之间的命名抵触,最好将它们命名为不同的名称。当全局变量和局部变量具备雷同的名称时,局部变量会遮蔽全局变量,导致在函数外部无法访问全局变量。 综合案例:全局变量和局部变量让咱们通过一个综合案例,更加深刻地了解全局变量和局部变量的概念: global_var = 20 # 全局变量def variable_example(): local_var = 10 # 局部变量 print("函数外部局部变量值:", local_var) print("函数外部拜访全局变量值:", global_var)variable_example()print("函数内部拜访全局变量值:", global_var)# print("函数内部尝试拜访局部变量:", local_var) # 这行代码会报错在这个案例中,咱们定义了一个全局变量global_var和一个函数variable_example外部的局部变量local_var。通过运行上述代码,您将更分明地理解全局变量和局部变量的作用范畴和拜访形式。 ...

September 5, 2023 · 1 min · jiezi

关于python:Python中常见的30个内置函数使用讲解二

摘要: Python作为一种高级编程语言,内置了丰盛的函数来实现各种工作。本文将从根底到高级,具体介绍Python中常见的内置函数,通过代码示例和中文正文,帮忙您深刻了解如何在不同情景下灵便利用这些函数。 目录简介ascii() 函数enumerate() 函数input() 函数oct() 函数staticmethod() 函数bin() 函数eval() 函数int() 函数open() 函数str() 函数bool() 函数exec() 函数isinstance() 函数ord() 函数sum() 函数总结 1. 简介Python的内置函数提供了丰盛的性能,可能帮忙开发者更加高效地进行编程。本文将具体介绍常见的内置函数,包含数据类型转换、输入输出、迭代解决等方面的函数,通过代码示例帮忙您逐渐把握它们的用法。 2. ascii() 函数ascii() 函数用于生成示意对象的可打印字符串。对于非ASCII字符,会应用转义序列来示意。 character = 'ä'ascii_representation = ascii(character)print(ascii_representation) # 输入:'\xe4'3. enumerate() 函数enumerate() 函数用于将一个可迭代对象组合为一个索引序列,同时返回索引和值。 fruits = ['apple', 'banana', 'cherry']for index, fruit in enumerate(fruits): print(f"Index: {index}, Fruit: {fruit}")4. input() 函数input() 函数用于从用户获取输出,以字符串的模式返回用户输出的内容。 name = input("请输入您的姓名:")print(f"您好,{name}!")5. oct() 函数oct() 函数用于将整数转换为八进制字符串。 number = 10oct_string = oct(number)print(oct_string) # 输入:'0o12'6. staticmethod() 函数staticmethod() 函数用于定义静态方法,这是一个在类中定义的办法,不依赖于实例,也不能够拜访实例属性。 class MathUtil: @staticmethod def add(a, b): return a + bresult = MathUtil.add(5, 3)print(result) # 输入:87. bin() 函数bin() 函数用于将整数转换为二进制字符串。 ...

September 4, 2023 · 1 min · jiezi

关于python:如何编写一个带智能提示和历史记录的-python-命令行工具

「智能提醒」和「历史记录」就是相似 oh my zsh 的 zsh-autosuggestions 插件成果一样参考:Linux 装置 oh my zsh,并开启常见插件

September 3, 2023 · 1 min · jiezi

关于python:Python教程12Python数据结构集合set介绍

汇合是一种无序、可变的数据结构,它也是一种变量类型,汇合用于存储惟一的元素。汇合中的元素不能反复,并且没有固定的程序。在Python 提供了内置的 set 类型来示意汇合,所以关键字set就是汇合的意思。 你能够应用大括号 {} 或者 set() 函数来创立一个汇合。 my_set = {1, 2, 3} # 应用大括号创立汇合print(my_set) # 输入: {1, 2, 3}my_set = set([1, 2, 3]) # 应用 set() 函数创立汇合print(my_set) # 输入: {1,2, 3}须要留神的是,汇合是无序的,没有固定的程序。因而,汇合元素的程序可能与你创立或增加的程序不同。 汇合具备以下特点: 汇合中的元素是惟一的,不反复。如果反复雷同的元素,汇合将主动去重。汇合是无序的,没有固定的程序。因而,你无奈像列表或元组那样索引来拜访汇合中的元素。汇合是可迭代的,你能够应用 for 循环遍历汇合中的元素。汇合是可变的,你能够增加、删除和批改汇合中的元素 创立汇合要应用汇合,首先就必须要创立,那么在 Python 中,有哪些创立汇合的形式呢?你能够应用以下几种形式创立汇合。 1、 应用大括号 {} 或者 set() 函数创立一个汇合,将元素用逗号隔开: my_set = {1, 2, 3} # 应用大括号创立汇合print(my_set) # 输入: {1, 2, 3}my_set = set([1, 2, 3]) # 应用 set() 函数创立汇合print(my_set) # 输入: {1, 2, 3}留神,如果你应用空的大括号 {} 来创立一个对象,那么创立的将是一个空字典,而非空集合。因而,你必须应用 set() 函数来创立一个空集合: ...

September 3, 2023 · 2 min · jiezi

关于python:Python-潮流周刊18FlaskStreamlitPolars-的学习教程

你好,我是猫哥。这里每周分享优质的 Python、AI 及通用技术内容,大部分为英文。题目取自其中三则分享,不代表全部内容都是该主题,特此申明。 本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你筛选最值得分享的文章、教程、开源我的项目、软件工具、播客和视频、热门话题等内容。愿景:帮忙所有读者精进 Python 技术,并增长职业和副业的支出。 微信 | 博客 | 邮件 | Github | Telegram | Twitter 为了不便读者获取原始内容,我已将周刊的 Markdown 文件归档在 Github,请通过以下链接获取:https://github.com/chinesehuazhou/python-weekly 文章&教程1、一份深刻摸索 Flask 的指南 由系列文章组成的 Flask 学习指南,深刻理解 Flask 的内部结构、外围个性和性能,涵盖主题有程序和申请上下文、Werkzeug、会话、平安(防CSRF)、测试、2.0 版本的异步等。 2、应用 PyMuPDF 辨认与提取表格 辨认和解决 PDF 文件中的表格是件艰难的事,PyMuPDF 最新版本 1.23.0 提供了从 PDF 中提取表格的性能!能够将提取内容交给 pandas 解决,能够导出 Excel 和 CSV 格局的文件。 3、深刻介绍 Python 3.12 中的永生对象 周刊第 16 期分享了 Instagram 在 Python 3.12 引入永生对象的故事,而这里分享的文章深刻分析解释器源码,为咱们答复了以下问题:为什么要引入永生对象?它对性能有什么影响?它是如何实现的(如 None 对象和小整数),如何做到兼容旧版本的接口的? 4、Python 中下划线的十种用法 你晓得 Python 中的下划线有哪些用法么?这篇文章介绍了:REPL 中的用法、作变量名的前缀和后缀时的四种用法、作为赋值“接收器”的两种用法、新 match-case 语法中的用途、用作频繁调用的函数别名、大额数字中减少可读性。 ...

September 2, 2023 · 2 min · jiezi

关于python:python基础入门

Python根底python属于解释性的高级语言 6个规范数据类型1、Numbers(数字)int:整数 eg:1,2,-3,4,…… float:小数 eg:0.1,1.0,…… 2、String(字符串)用双引号、单引号、三引号界定。三引号界定能够跨行,个别用于阐明正文eg:'a','"python"',"根底" 3、List(列表)列表由方括号界定,元素间用逗号分隔eg:[0,'python','入门',['p','y','t']] 、 [1] 4、Tuple(元组)元组由圆括号界定,元素间用逗号分隔,当只有一个元素时元素后逗号必须加上。eg:(1,) 、(1,2,3) 5、Dictionary(字典)字典由大括号界定,元素是键值对模式,逗号分隔.eg:{'ID':'9527','name':'华安'} 6、Set(汇合)(因为之前接触较少,就略微写多了一点笔记)与数学上的汇合一样,汇合内每一个值都是惟一的。eg:{1, 2, 3, 4, 5} 6.1汇合的操作6.1.1汇合增加 汇合的增加有两种形式,别离是add和update。然而它们在增加元素时是由区别的: add()办法把要传入的元素作为一个整体增加到汇合中,如: >>> s=set('one')>>> s{'e', 'o', 'n'}>>> s.add('two')>>> s{'e', 'two', 'o', 'n'}update()办法是把要传入的元素拆分成单个字符,存于汇合中,并去掉反复的字符。能够一次增加多个值,如: >>> s=set('one')>>> s{'e', 'o', 'n'}>>> s.update('two')>>> s{'e', 'n', 't', 'w', 'o'}6.1.2汇合删除 汇合的删除操作应用的办法跟列表是一样的,应用的也是remove办法。如: setVar.remove(element)setVar :为一个set类型的变量element :示意要查找并删除的元素函数作用:在汇合setVar中查找element元素,如果存在则删除;如果没找到,则报错。 >>> s=set('one')>>> s{'e', 'o', 'n'}>>> s.remove('e')>>> s{'n', 'o'}setVar.discard(element)setVar :为一个set类型的变量element :示意要查找并删除的元素函数作用:在汇合setVar中查找element元素,如果存在则删除;如果没找到,则什么也不做。 >>> sListset([1, 2, 3, 4, 5])>>> sList.discard(1)>>> sListset([2, 3, 4, 5])s.pop()s:为set类型的变量函数作用:删除并返回set类型的s中的一个不确定的元素,如果为空引发KeyError谬误。 >>> sListset([2, 3, 4, 5])>>> sList.pop()2s.clear()s:set类型的变量函数作用:清空s汇合中的所有元素 ...

September 2, 2023 · 3 min · jiezi

关于python:从零基础开始学习Python有什么推荐的书

Python 是一门多功能的计算机高级编程语言,它简直能够利用于任何编程工作并疾速开发和调试,在许多不同畛域都有广泛应用,如数据分析、人工智能、大数据钻研、Web 开发等,并有较好的待业前景和高薪工作。 现如今市面上充斥着大量的教材书籍,咱们往往无奈找到适宜本人的,不知从何下手,所以 Mo 浏览了大量书籍,通过一系列书评,依照学习不同阶段筛选出学习 Python 的书籍,并介绍了每本书涵盖的主题以及章节内容。 如果你是 Python 老手,能够查阅根底初阶书籍,无需编程教训即可从零开始学习。如果你想要更深刻地开掘,进步代码的效率,中高阶 Python 书籍将帮忙你晋升 Python 技能,助你成为 Python 专家。 初阶书籍Python 编程:从入门到实际本书首先介绍了 Python 根本数据类型和构造,蕴含了变量、字符串、数字、列表、元组、字典等,并逐个介绍如何应用它们。接下来解说了用户输出、while 循环、if 判断、函数、类和文件解决,以及代码测试和调试办法。 在学习完这些基础知识之后,你将开发三个我的项目,创立一些乏味的、具备挑战性的应用程序: 第一个我的项目是应用 pygame 包开发的外星人入侵游戏。首先你须要应用类办法设计一艘船,通过代码来驾驶它并让它发射子弹。接下来你须要设计不同级别的外星人,让外星舰队动起来,并利用你的飞船击落他们。最初,你须要增加记分牌和高分列表来欠缺这个游戏。 第二个我的项目将应用 matplotlib、随机散步、掷骰子和一点统计分析进行数据可视化,并应用 pygal 包创立图形和图表。你将学习如何下载各种格局的数据,将其导入 Python,并将后果可视化,以及如何与 web API 交互,从 GitHub 和 HackerNews 检索和可视化数据。 第三个我的项目将疏导你创立一个残缺的 web 应用程序,应用 Django 设置一个学习日志来跟踪用户的学习状况。它涵盖了如何装置 Django、设置我的项目、设计模型、创立治理界面、设置用户帐户、按用户治理访问控制、应用 Bootstrap 设计整个应用程序,而后最终将其部署到 Heroku。 “笨办法”学 Python《“笨办法”学 Python 》是一本经典之作,这本书的平凡之处在于内容的出现形式,每一章都清晰出现,代码示例简洁明了,结构合理,切中要害。这些练习很有启发性,你遇到的任何问题都不是无奈克服的。心愿书名不会使你悲观并退缩,看完这本书,你相对不再是 Python 的初学者。 本书由50多个练习形成,每个练习都建设在前一个练习的根底上,每个练习都会解说 Python 语言的一些个性。你将理解变量、数据类型、函数、逻辑、循环、列表、调试、字典等内容,你甚至能够应用游戏引擎创立一个简略的游戏。 Python 教程 Notebook怎么样进步看书的效率?记笔记是一个传统的好办法,然而对于学编程来说,理解知识点的同时就能上手编写是适合的学习办法。 在 Notebook 环境中学习 Python 事倍功半,Python 教程(点击在线浏览)是 Mo 人工智能教学实训平台链接 针对零根底课程系列的第一本,是对所有 Python 根底、进阶常识的疾速而全面的概述。 ...

September 2, 2023 · 2 min · jiezi

关于python:Python教程11Python中的字典dict的用法介绍

列表尽管好,然而如果须要疾速的数据查找,就必须进行须要遍历,也就是最坏状况须要遍历完一遍能力找到须要的那个数据,工夫复杂度是O(n),显然这个速度是很难承受的,于是就必须要有新的数据结构呈现,于是字典就诞生了! 在Python中,字典(Dictionary)是一种无序的数据结构,用于存储键值对(key-value)。字典中的每个元素由一个键(key)和一个对应的值(value)组成,键和值之间应用冒号(:)进行分隔,每个键值对之间应用逗号(,)进行分隔。字典中的键必须是惟一的,而值能够是任意类型的对象。有点相似C++语言中的映射,工夫复杂度是O(1)。 Python中的字典次要有以下一些特点: 无序性:字典中的元素没有固定的程序,不能通过索引来拜访元素。可变性:能够向字典中增加、批改或删除元素。惟一键:字典中的键必须是惟一的,如果增加了雷同的键,则前面的键值对会笼罩后面的键值对。创立字典很显然,应用字典之前须要先创立。在Python中,能够应用花括号 {} 或者 dict() 函数来创立字典。字典由键值对组成,每个键值对之间应用逗号 , 分隔。键和值之间应用冒号 : 分隔。以下是几种创立字典的形式示例: 1、应用花括号 {} 创立字典: # 创立一个空字典my_dict = {}# 创立一个蕴含键值对的字典my_dict = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}2、应用 dict() 函数创立字典: # 创立一个空字典my_dict = dict()# 创立一个蕴含键值对的字典my_dict = dict(key1='value1', key2='value2', key3='value3')# 应用列表或元组创立字典my_dict = dict([('key1', 'value1'), ('key2', 'value2'), ('key3', 'value3')])3、应用字典推导式创立字典: # 创立一个蕴含键值对的字典my_dict = {key: value for key, value in [('key1', 'value1'), ('key2', 'value2'), ('key3', 'value3')]}print(my_dict)下面的第三种写法可能不少同学不容易了解,大家能够先记住就行,前面的教程咱们会讲到。 拜访字典创立字典,咱们必定须要进行拜访,不然创立的就没什么意义了。在Python中,能够通过键来拜访字典中的值。以下是几种常见的拜访字典的形式: 1、利用方括号和键的形式,能够间接拜访字典中对应键的值。 person = {"name": "John", "age": 25, "city": "New York"}print(person["name"]) # 输入: John2、应用get()办法拜访值,get()办法能够依据给定的键来获取对应的值,如果键不存在,会返回None。 ...

September 1, 2023 · 2 min · jiezi

关于python:中值滤波理解

import numpy as npimport cv2from copy import deepcopyfrom PIL import Imagefrom matplotlib import pyplot as plt"""制作噪声图像"""def add_salt_noise(img, snr=0.5): SNR = snr # 指定信噪比(默认0.5) size = img.size # 获取总共像素个数 # print(type(size)) noiseSize = int(size * (1 - SNR)) for i in range(0, noiseSize): # 随机获取 某个点 xi = int(np.random.uniform(0, img.shape[1])) xj = int(np.random.uniform(0, img.shape[0])) if img.ndim == 2: # 判断是否为2维图像(即灰度图像) img[xj, xi] = 0 # 设置值为黑点 elif img.ndim == 3: img[xj, xi] = 0 # 设置值为黑点,也能够设置为红色255 return img"""黑白图中值滤波"""def median_Blur(img, filiter_size=3): # 当输出的图像为彩色图像 image_copy = np.array(img, copy=True).astype(np.float32) processed = np.zeros_like(image_copy) middle = int(filiter_size / 2) r = np.zeros(filiter_size * filiter_size) g = np.zeros(filiter_size * filiter_size) b = np.zeros(filiter_size * filiter_size) for i in range(middle, image_copy.shape[0] - middle): for j in range(middle, image_copy.shape[1] - middle): count = 0 # 顺次取出模板中对应的像素值 for m in range(i - middle, i + middle + 1): for n in range(j - middle, j + middle + 1): r[count] = image_copy[m][n][0] g[count] = image_copy[m][n][1] b[count] = image_copy[m][n][2] count += 1 r.sort() g.sort() b.sort() processed[i][j][0] = r[int(filiter_size * filiter_size / 2)] processed[i][j][1] = g[int(filiter_size * filiter_size / 2)] processed[i][j][2] = b[int(filiter_size * filiter_size / 2)] processed = np.clip(processed, 0, 255).astype(np.uint8) return processed"""灰度图中值滤波"""def median_Blur_gray(img, filiter_size=3): # 当输出的图像为灰度图像 image_copy = np.array(img, copy=True).astype(np.float32) processed = np.zeros_like(image_copy) middle = int(filiter_size / 2) for i in range(middle, image_copy.shape[0] - middle): for j in range(middle, image_copy.shape[1] - middle): temp = [] for m in range(i - middle, i + middle + 1): for n in range(j - middle, j + middle + 1): if m - middle < 0 or m + middle + 1 > image_copy.shape[0] or n - middle < 0 or n + middle + 1 > \ image_copy.shape[1]: temp.append(0) else: temp.append(image_copy[m][n]) # count += 1 temp.sort() processed[i][j] = temp[(int(filiter_size * filiter_size / 2) + 1)] processed = np.clip(processed, 0, 255).astype(np.uint8) return processedif __name__ == "__main__": img = input("Please input name of image:") # 默认是string类型 img = cv2.imread(img) print("img.shape:", img.shape) # plt.imshow显示cv2.imread读取的图像蓝与红有区别 b, g, r = cv2.split(img) src_img = cv2.merge([r, g, b]) img_demo = deepcopy(src_img) #使得两图像不烦扰 snr = float(input("Please input signal noise ratio:")) img_salt = add_salt_noise(img_demo, snr) filiter_size = int(input("Please input size of filiter:")) median_blur = median_Blur(img_salt, filiter_size) plt.figure("Image processing---MedianBlur") # 图像窗口名称 plt.subplot(1, 3, 1) plt.imshow(src_img) plt.axis('off') # 关掉坐标轴 plt.title("src_img") plt.subplot(1, 3, 2) plt.imshow(img_salt) plt.axis('off') # 关掉坐标轴 plt.title("img_salt") plt.subplot(1, 3, 3) plt.imshow(median_blur) plt.axis('off') # 关掉坐标轴 plt.title("median_blur") plt.tight_layout() # 调整整体空白 plt.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=None) # 调整子图间距 plt.savefig("reult.png", dpi=1000) plt.show()信噪比为0.5,卷积核为3,进行中值滤波失去了这样的比照图:信噪比为0.9,卷积核为3,进行中值滤波失去了这样的比照图: ...

September 1, 2023 · 2 min · jiezi

关于python:python将pdf转换为图片pdf中有图片

能够应用Python的PyPDF2库和Pillow库来将PDF文件中的每一页转换为图片,如果PDF中有图片,那么图片也会被转换为相应的图片格式。 以下是一个示例代码,须要装置PyPDF2和Pillow库: import osfrom io import BytesIOimport PyPDF2from PIL import Imagedef pdf_to_images(file_path, output_folder): # 关上PDF文件 with open(file_path, 'rb') as file: reader = PyPDF2.PdfFileReader(file) # 遍历每一页 for page_num in range(reader.getNumPages()): page = reader.getPage(page_num) # 将PDF页转换为Pillow Image对象 img = page_to_image(page) # 保留图片到文件夹 save_image(img, page_num, output_folder)def page_to_image(page): # 获取PDF页的尺寸 page_size = page.mediaBox # 创立空白的Pillow Image对象 img = Image.new('RGB', (int(page_size.getWidth()), int(page_size.getHeight())), 'white') # 将PDF页渲染到Pillow Image对象中 img_draw = ImageDraw.Draw(img) img_draw.rectangle((0, 0, img.size[0], img.size[1]), fill='white') img_draw_img = ImageDraw.Draw(img) img_draw_img.drawImage(page, (0, 0)) return imgdef save_image(img, page_num, output_folder): # 创立输入文件夹 if not os.path.exists(output_folder): os.makedirs(output_folder, exist_ok=True) # 保留图片到输入文件夹 file_path = os.path.join(output_folder, f'{page_num}.png') img.save(file_path)# 应用示例pdf_to_images('example.pdf', 'output_folder')在下面的示例代码中,首先关上了PDF文件并遍历每一页,而后将每一页转换为Pillow Image对象。咱们最终将Pillow Image对象保留为PNG格局的图片文件,并将它们保留在指定的输入文件夹中。 ...

August 30, 2023 · 1 min · jiezi

关于python:Python爬虫基础使用Scrapy库初步探索

Scrapy是Python中最风行的网页爬虫框架之一,弱小且功能丰富。通过Scrapy,你能够疾速创立一个爬虫,高效地抓取和解决网络数据。在这篇文章中,咱们将介绍如何应用Scrapy构建一个根底的爬虫。 一、Scrapy简介及装置Scrapy是一个用Python实现的开源网页爬虫框架,次要用于网页数据抓取和剖析。它提供了所有的根底性能,包含解析HTML(或其余格局的数据)、解决HTTP申请、解决cookies和session、多线程抓取等等,还提供了多种类型的爬虫模型,实用于不同的需要。 装置Scrapy非常简单,只须要应用pip装置即可: pip install Scrapy二、创立一个Scrapy我的项目Scrapy应用一个独自的我的项目空间来组织每一个爬虫。你能够应用Scrapy的命令行工具来创立一个新的我的项目: scrapy startproject tutorial这会创立一个名为"tutorial"的Scrapy我的项目,我的项目构造如下: tutorial/ scrapy.cfg # 我的项目的配置文件 tutorial/ # 我的项目的Python模块 __init__.py items.py # 我的项目的数据模型文件 middlewares.py # 我的项目的中间件文件 pipelines.py # 我的项目的数据处理管道文件 settings.py # 我的项目的设置文件 spiders/ # 寄存爬虫代码的目录 __init__.py三、编写一个简略的爬虫在Scrapy中,爬虫是一类定义了如何爬取某个网站(或一组网站)的类,包含如何进行网页爬取(即初始URL)、如何跟踪链接、如何从网页的内容中提取数据等等。 上面咱们将创立一个简略的Scrapy爬虫,用于爬取quotes.toscrape.com网站的援用内容。首先,咱们须要在spiders目录下创立一个新的Python文件quotes_spider.py: import scrapyclass QuotesSpider(scrapy.Spider): name = "quotes" def start_requests(self): urls = [ 'http://quotes.toscrape.com/page/1/', ] for url in urls: yield scrapy.Request(url=url, callback=self.parse) def parse(self, response): page = response.url.split("/")[-2] filename = f'quotes-{page}.html' with open(filename, 'wb') as f: f.write(response.body) self.log(f'Saved file {filename}')在这个代码中,咱们定义了一个名为QuotesSpider的Scrapy爬虫。爬虫首先会申请URLs列表中的每个URL,而后对每个响应进行解决,将响应的内容保留到一个HTML文件中。 ...

August 30, 2023 · 1 min · jiezi

关于python:python如何开发一个电商进销存管理系统

治理公司的淘宝天猫平台,后端仓库,洽购进行数据同步。其中最次要的还是要对接淘宝API ,实现实时订单的告诉,同步淘宝订单,治理买家信息,发货,财务统计等等。总的来说就是要做到【客户、销售、洽购、库存、财务管理】这五个方面。 然而我不举荐你用Python,次要是因为它有以下毛病:1、不适宜开发底层零碎:Python对多线程程序有限度,无奈保障底层零碎对于实时性的要求。2、 难度较高:对于一些刚刚接触编程的老手来说,Python的语法可能绝对简单,学习曲线较陡。3、 不易加密爱护:Python代码是凋谢源代码,难以进行加密爱护,这会对一些商业或平安方面的利用造成肯定的困扰。4、 执行效率绝对较低,内存耗费较大其实当初国内的低代码平台发展势头也很猛,甚至能够做到无需编程就能实现题主的需要。 上面就以简道云为例,给大家示范一下如何零根底疾速搭建一个全流程自动化的进销存管理系统,非常简单,十分钟就能实现!参考模板>>https://www.jiandaoyun.com 在线工具,30人以下小团队是能够收费应用简道云除了能够本人搭建一个残缺的进销存利用之外,模板核心还提供了大量方便快捷的模板供大家应用。 那么,做好进销存治理,进销存零碎的对应节点及性能,咱们该如何设计?这一块,一起分享一下。进销存是指企业治理过程中洽购(进)——入库(存)——销售(销)的动静治理过程,又称为购销链。整个进销存流程是这样的: 依照模块划分,进销存治理分为三大块。咱们须要联合上述的业务流程进行功能设计: 1、进销存治理之——进进销存的“进”指的不仅仅是简略的进货,它蕴含了:洽购订单、洽购入库、洽购退货等一系列流程。 洽购订单:洽购下单后须要通过管理人员的审批,审批通过后主动生成洽购订单洽购入库:到货后零碎会发动洽购入库申请,由管理人员查货入库洽购退货:次要针对有碰撞导致产品瑕疵,可发动退货申请,走审批流程 2、进销存治理之——销这一流程次要包含查问报价、录入合同、发动发货流程、退货流程,所有合同、发货、退货状况生成报表剖析。 报价:统一标准在线查问货品价格,疾速给客户提供各类产品报价合同:销售和客户签订合同后在线上传合同并归档,依据合同申请发货退货:产品有瑕疵, 客户对接人可在线发动退货审批流程剖析:各个客户签订的合同内容、发货状况、退货明细清清楚楚 3、进销存治理之——存库存治理次要包含: 库存调拨:由A仓调至B仓,零碎须要在后盾生成数据,进行库存转移库存盘点:零碎须要在后盾主动更正库存数量虚构库存:1.已有销售订单还未发货,待发货数统计;2.已有洽购订单但还未入库,待入库数量统计理论库存:仓库里物品的理论入库出库的库存状况剖析 仓库治理这块,如果要挖深了做,空间也很大,以出入库为例——如果想要进步物品的出入库效率,咱们能够抉择在线填报出入库信息:在线录入商品信息,同时实现对入库数量、金额主动汇总,在出入库时物品的明细记录都能够主动计入、减去。1)在填写入库信息时,零碎给产品自动编码,省去了人工编码的繁琐步骤;依据编码,商品的库存状况和入库地位等信息都能够疾速查问到,十分不便。 2)在货品出入库时,库存实时关联变动:一旦库存低于设定值,零碎能够主动收回低库存预警并且揭示及时补货;而库存高于设定值时,能够收回货品畅销预警,揭示管理者尽快安顿促销。 3)扫码入库,这个能够自行在简道云中去设计除了以上进销存管理系统的根本流程之外,简道云还提供客户治理和和财务管理,正好合乎题主的要求。 4、进销存治理之——客户治理客户治理次要包含: 客户信息:记录所有客户相干数据信息,可快捷新建跟进记录、销售订单,主动填充数据;且能查看历史相干数据。跟进记录:记录销售对客户的跟进记录。客户剖析(仪表盘)客户RFM模型剖析;客户画像;客户跟进统计分析。 5、进销存治理之——财务管理财务管理次要包含: 应收账款明细:销售出库、销售退货,可主动新增并主动回填应收账款明细数据。应收账款对账:默认赊销模式,根据时间段进行节点对账,一键式实现对账流程收款单:记录客户收款数据及银行回单。应收账款统计 *由智能助手主动新增,对账、收款状态由后续对账单、付款单主动回填。 *对账单通过标签页,可一站式快捷实现财务侧“对账-收票-付款”流程。 *领有洽购付款财务指标、趋势统计分析,应付账款待执行明细治理(待对账、待付款)等性能。 可间接装置应用的模板>>https://www.jiandaoyun.com

August 30, 2023 · 1 min · jiezi

关于python:Python中30个常见的内置函数使用讲解一

摘要: Python作为一种弱小的编程语言,提供了丰盛的内置函数,用于各种常见操作,如数学运算、数据转换、迭代管制等。本文将从入门到精通,具体介绍Python中常见的内置函数的用法,通过代码示例和中文正文,帮忙您深刻了解如何灵便利用这些函数。 目录简介abs() 函数dict() 函数help() 函数min() 函数setattr() 函数all() 函数dir() 函数hex() 函数next() 函数slice() 函数any() 函数divmod() 函数id() 函数object() 函数sorted() 函数总结 1. 简介Python内置函数是一组在解释器中间接可用的函数,它们为开发者提供了丰盛的工具来解决各种工作,从数学计算到数据操作。本文将探讨一些常见的内置函数,通过代码示例具体演示其用法。 2. abs() 函数abs() 函数用于返回指定数字的绝对值。它能够解决整数、浮点数等各种数值类型。 number = -10abs_value = abs(number)print(abs_value) # 输入:103. dict() 函数dict() 函数用于创立一个字典对象,或者从其余可迭代对象创立字典。能够应用键值对模式传入参数,也能够应用关键字参数。 # 创立字典person = dict(name="Alice", age=25)# 从可迭代对象创立字典items = [("name", "Bob"), ("age", 30)]person_dict = dict(items)print(person) # 输入:{'name': 'Alice', 'age': 25}4. help() 函数help() 函数用于获取函数、模块、类等对象的帮忙信息。它会在控制台中显示相干的文档字符串。 help(print) # 获取 print 函数的帮忙信息5. min() 函数min() 函数用于返回给定可迭代对象的最小值。它能够承受多个参数。 numbers = [5, 2, 9, 1, 7]min_value = min(numbers)print(min_value) # 输入:16. setattr() 函数setattr() 函数用于设置对象的属性值。它承受对象、属性名和属性值作为参数。 ...

August 30, 2023 · 2 min · jiezi

关于python:Python协同过滤算法实现一个简单的图书推荐系统

背景介绍当咱们做一些举荐零碎网站时,通常须要适合的举荐算法,上面给大家介绍举荐零碎中经典的举荐算法——协同过滤算法。在本文中通过Python语言,以一个图书举荐零碎为案例,最终实现一个基于用户对图书的评分而对指定的用户个性化举荐的网站零碎。(ps:本文中介绍的是算法的简略示例,如需我的项目性能扩大,可在最下方分割我) 协同过滤算法协同过滤是一种罕用于举荐零碎中的算法,用于预测用户可能感兴趣的物品或内容。它的核心思想是基于用户行为和相似性来进行预测,而不依赖于物品或用户的内容特色。协同过滤算法依据用户和物品之间的交互历史,发现用户之间的相似性或物品之间的相似性,从而为用户生成个性化的举荐列表。协同过滤算法能够分为两种次要类型:基于用户的协同过滤和基于物品的协同过滤。 基于用户的协同过滤: 这种办法首先计算用户之间的相似性,而后利用与指标用户类似的其余用户的偏好来预测指标用户对物品的评分或爱好。基于用户的协同过滤通常包含以下步骤: 相似性计算: 应用一些相似性度量(如余弦类似度、皮尔逊相关系数等)来计算用户之间的相似性。街坊抉择: 选取与指标用户最类似的一些用户作为街坊。预测生成: 利用街坊用户对物品的评分来预测指标用户对尚未互动过的物品的评分。基于物品的协同过滤: 这种办法通过计算物品之间的相似性来预测用户对尚未互动过的物品的评分或爱好。基于物品的协同过滤个别包含以下步骤: 相似性计算: 计算物品之间的相似性,通常与用户的历史行为相干。街坊抉择: 选取与指标物品最类似的一些物品作为街坊。预测生成: 基于指标用户对邻近物品的评分,预测用户对尚未互动过的物品的评分。协同过滤算法的长处在于它可能捕获用户和物品之间的简单关系,从而提供个性化的举荐。然而,它也面临一些挑战,比方“冷启动”问题(新用户或新物品如何进行举荐)、数据稠密性(用户和物品之间的交互数据可能非常少)、举荐偏差(可能会漠视一些长尾物品)等。 代码示例在本文中通过应用Django框架作为网站开发的后端框架。其数据表模型构造如下: db_user_info:用户信息表db_book:书籍表db_rating:书籍评分表在本文中通过应用基于用户的协同过滤算法,在计算类似度时选用余弦类似度计算公式。余弦类似度掂量两个向量之间的方向统一水平。在这里,向量是用户对独特评估过的图书的评分。余弦类似度计算公式为: $$cosine_similarity = \frac{\sum_{i} user1\_scores[i] \times user2\_scores[i]}{\sqrt{\sum_{i} user1\_scores[i]^2} \times \sqrt{\sum_{i} user2\_scores[i]^2}}$$ 代码如下: def calculate_cosine_similarity(user_ratings1, user_ratings2): # 将用户1的图书评分存入字典,键为图书ID,值为评分 book_ratings1 = {rating.book_id: rating.score for rating in user_ratings1} # 将用户2的图书评分存入字典,键为图书ID,值为评分 book_ratings2 = {rating.book_id: rating.score for rating in user_ratings2} # 找出两个用户独特评估过的图书 common_books = set(book_ratings1.keys()) & set(book_ratings2.keys()) if len(common_books) == 0: return 0.0 # 无独特评估的图书,类似度为0 # 提取独特评估图书的评分,存入NumPy数组 user1_scores = np.array([book_ratings1[book_id] for book_id in common_books]) user2_scores = np.array([book_ratings2[book_id] for book_id in common_books]) # 计算余弦类似度 cosine_similarity = np.dot(user1_scores, user2_scores) / ( np.linalg.norm(user1_scores) * np.linalg.norm(user2_scores)) return cosine_similarity其中,user1_scores 和 user2_scores 是两个用户的评分向量,i 是独特评估过的图书的索引。实现步骤如下: ...

August 29, 2023 · 1 min · jiezi

关于python:灰度可视化补

灰度可视化前文:https://segmentfault.com/a/1190000044151630 1.灰度数值可视化img = np.zeros([800, 800, 3], dtype=np.uint8) for i in range(16): for j in range(16): x = i * 50 y = j * 50 s = j + i * 16 img[x: x + 47, y: y + 47] = s # 图片 增加的文字 地位 字体 字体大小 字体色彩 字体粗细 cv2.putText(img, str(s), (j * 50, 47 +i * 50), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2)文字的地位断定在左下角: 2.其余款式# h示意区域高度,w示意区域长度,l示意像素长度h, w, l = [10, 26, 50] img = np.zeros([h*l, w*l, 3], dtype=np.uint8) for i in range(h): for j in range(w): x = i * l y = j * l s = j + i * w img[x: x + l - 3, y: y + l - 3] = s % 256 cv2.putText(img, str(s), (j * l, (i + 1) * l - 3), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2) ...

August 28, 2023 · 1 min · jiezi

关于python:Python面试题100例2630题

二十六、请介绍下Django框架的生命周期Django是一个高级的Python Web框架,它遵循MVC设计模式(在Django中通常称为MTV,即模型(Model)、模板(Template)和视图(Views)),并且激励疾速开发和洁净、实用的设计。以下是一个简略的Django申请/响应生命周期: 用户发动申请:当用户通过Web浏览器拜访一个网站时,会向服务器发送一个HTTP申请。Django Web服务器接管申请:申请首先被Django的Web服务器(如Gunicorn,Uwsgi或Django自带的开发服务器)接管,而后传递给Django框架进行解决。URL解析:Django框架接管到申请后,会依据URLconf(URL配置文件,通常是urls.py文件)找到与申请URL匹配的函数(称为视图)。中间件解决:在Django中,还能够配置一些中间件(Middleware),这些中间件能够在申请被视图解决之前或之后进行一些解决,例如解决会话、验证用户等。视图解决申请:找到匹配的视图函数后,Django会创立一个HttpRequest对象,并将这个对象作为参数传递给视图函数。视图函数会解决这个申请,并返回一个HttpResponse对象。模板渲染:如果视图决定渲染一个模板,它会加载模板,而后将一个上下文(蕴含要在模板上显示的数据)传递给模板。模板会依据这个上下文生成HTML内容。响应返回给用户:最初,Django将HttpResponse对象返回给Web服务器,Web服务器将响应转换为一个HTTP响应,而后发送给用户的Web浏览器。 二十七、请介绍下Django是怎么操作数据库的Django通过它的ORM(Object-Relational Mapping,对象-关系映射)零碎来操作数据库。ORM容许开发者用Python代码来操作数据库,而不须要写SQL语句。这样,咱们就能够编写数据库独立的代码,而不必放心底层应用的是哪种数据库系统(MySQL,PostgreSQL,SQLite等)。以下是Django操作数据库的根本步骤: 定义模型:在Django中,每个数据库表由一个Python类来示意,这个类继承自django.db.models.Model。每个类的属性就示意数据库表的字段。 from django.db import modelsclass Book(models.Model): title = models.CharField(max_length=200) publication_date = models.DateField()迁徙:定义好模型之后,须要通过迁徙来在数据库中创立对应的表。Django提供了makemigrations命令来创立迁徙,而后用migrate命令来利用迁徙。 python manage.py makemigrationspython manage.py migrate应用模型:当初,咱们能够应用定义的模型来进行数据库操作了。例如,创立一个新的记录: from datetime import datebook = Book(title='The Pragmatic Programmer', publication_date=date(1999, 10, 30))book.save()也能够查问现有的记录: books = Book.objects.filter(title__contains='Django')批改和删除记录:咱们也能够批改或删除数据库中的记录。例如: # 批改记录book = Book.objects.get(id=1)book.title = 'New Title'book.save()# 删除记录book.delete()二十八、如何应用Django中间件在Django中,中间件是一个轻量级、底层的“插件”零碎,用来全局扭转Django的输出或输入。每次一个申请被解决,Django首先会依据你的MIDDLEWARE设置来利用每个中间件类的办法。以下是一个应用中间件的根本步骤: 创立中间件:中间件是一个Python类,须要实现特定的办法。例如,上面是一个简略的中间件,它会在每个申请被解决前打印一条音讯: class SimpleMiddleware: def __init__(self, get_response): self.get_response = get_response def __call__(self, request): print('在解决视图前') response = self.get_response(request) print('在解决视图后') return response下面的代码中,__init__办法接管一个get_response参数,并将其存储为实例变量。get_response是一个回调函数,用来获取视图的响应。__call__办法是真正解决申请和响应的中央。在调用get_response之前的代码会在申请被解决前执行,调用get_response之后的代码会在申请被解决后(视图函数被调用后)执行。 激活中间件:要启用中间件,须要将其增加到MIDDLEWARE设置中。MIDDLEWARE是一个Python列表,蕴含了所有激活的中间件的字符串门路。例如: MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'myapp.middleware.SimpleMiddleware', # 你的自定义中间件 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware',]留神,中间件的程序很重要。在申请阶段,Django会从上到下利用每个中间件,但在响应阶段,则会从下到上利用中间件。这意味着在申请列表中,越是在下面的中间件,它的响应解决代码会越后执行。 ...

August 28, 2023 · 1 min · jiezi

关于python:深度掌握Python-lxml库高级篇

在Python的世界中,lxml是解决XML和HTML的一款弱小且易用的库。在后面的高级和中级篇章中,咱们介绍了如何解析、创立、批改XML文档,如何应用XPath查问,以及如何解析大型XML文档。在这篇高级篇章中,咱们将持续深入研究lxml库,包含应用XSLT转换,应用XPath函数和命名空间,以及对HTML的高级解决。 一、应用XSLT转换XSLT(Extensible Stylesheet Language Transformations)是一种用于转换XML文档的语言。lxml库提供了对XSLT的反对,使咱们能够不便地对XML数据进行转换。上面的代码展现了如何应用lxml库进行XSLT转换: from lxml import etreexml_data = """<root> <element key="value">Text content</element> <element key="another_value">Another text content</element></root>"""xslt_data = """<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <new_root> <xsl:for-each select="root/element"> <new_element> <xsl:value-of select="."/> </new_element> </xsl:for-each> </new_root> </xsl:template></xsl:stylesheet>"""root = etree.fromstring(xml_data)xslt_root = etree.fromstring(xslt_data)transform = etree.XSLT(xslt_root)new_root = transform(root)print(str(new_root))在上述代码中,咱们首先加载了XML数据和XSLT样式表,而后创立了一个XSLT转换对象,而后利用了这个转换,并打印出了转换后的新XML数据。 二、应用XPath函数和命名空间XPath提供了一组函数,能够在XPath表达式中应用,以提供更简单的查问。另外,XPath还反对应用命名空间,以解决蕴含命名空间的XML文档。上面的代码展现了如何应用lxml库进行这些操作: from lxml import etreexml_data = """<root xmlns="http://example.com/"> <element key="value">Text content</element> <element key="another_value">Another text content</element></root>"""root = etree.fromstring(xml_data)# 应用XPath函数elements = root.xpath('//*[local-name() = "element"]')for element in elements: print('Tag:', element.tag) print('Attributes:', element.attrib) print('Text content:', element.text)# 应用命名空间nsmap = {'ns': 'http://example.com/'}elements = root.xpath('//ns:element', namespaces=nsmap)for element in elements: print('Tag:', element.tag) print('Attributes:', element.attrib) print('Text content:', element.text)在上述代码中,咱们首先加载了蕴含命名空间的XML数据,而后应用XPath函数local-name()找到所有的'element'元素,而后应用命名空间进行了同样的查问。 ...

August 27, 2023 · 1 min · jiezi

关于python:画出你的数据故事Python中Matplotlib使用从基础到高级

摘要: Matplotlib是Python中宽泛应用的数据可视化库,它提供了丰盛的绘图性能,用于创立各种类型的图表和图形。本文将从入门到精通,具体介绍Matplotlib的应用办法,通过代码示例和中文正文,帮忙您把握如何在不同场景下灵便绘制高质量的图表。 1. 简介Matplotlib是一个功能强大的Python数据可视化库,它能够用来绘制各种类型的图表,包含折线图、散点图、柱状图、饼图、3D图等。Matplotlib的灵活性和可定制性使得它成为数据科学家和分析师的首选工具。本文将带您从入门到精通,深刻摸索Matplotlib的各种绘图技巧。 2. 装置Matplotlib在开始之前,您须要装置Matplotlib库。如果您应用的是Anaconda发行版,通常曾经预装了Matplotlib。否则,能够应用以下命令装置: pip install matplotlib3. 根本绘图在Matplotlib中显示中文字体须要非凡的设置,因为默认状况下Matplotlib可能无奈正确显示中文字符。以下是一些步骤,让您能够在Matplotlib绘图中正确显示中文字体: 装置字体库: 首先,确保您的零碎上装置了适宜的中文字体库,比方微软雅黑、宋体、黑体等。您能够从一些开源字体库中抉择,如思源字体、文泉驿字体等。配置Matplotlib: 在绘图之前,须要在Matplotlib中设置中文字体。能够应用rcParams来设置字体,这样在整个Matplotlib会话中都会失效。以下是一个设置中文字体的示例代码:import matplotlib.pyplot as plt# 设置中文字体,批改为您零碎上曾经装置的中文字体plt.rcParams['font.sans-serif'] = ['SimHei']plt.rcParams['axes.unicode_minus'] = False # 解决负号显示为方块的问题折线图折线图是显示数据随工夫或某种程序变动的现实抉择。以下是一个简略的折线图示例: import matplotlib.pyplot as pltx = [1, 2, 3, 4, 5]y = [10, 8, 6, 4, 2]plt.plot(x, y, marker='o')plt.title('折线图示例')plt.xlabel('X轴')plt.ylabel('Y轴')plt.show() 散点图散点图用于显示两个变量之间的关系。以下是一个简略的散点图示例: import matplotlib.pyplot as pltx = [160, 170, 180, 165, 175]y = [60, 70, 80, 65, 75]plt.scatter(x, y)plt.title('散点图示例')plt.xlabel('身高(cm)')plt.ylabel('体重(kg)')plt.show() 柱状图柱状图实用于比拟不同类别的数据。以下是一个简略的柱状图示例: import matplotlib.pyplot as pltcategories = ['A', 'B', 'C', 'D', 'E']values = [25, 40, 60, 30, 50]plt.bar(categories, values)plt.title('柱状图示例')plt.xlabel('类别')plt.ylabel('值')plt.show() ...

August 27, 2023 · 2 min · jiezi

关于python:pltRGB模型

1.红加蓝img = np.zeros([256, 256, 3], dtype=np.uint8) for i in range(256): for j in range(256): img[i, j] = (255 - i, 0, j)在img[i, j]中,i意味着从上到下,j意味着从做到右。从左向右256个像素逐步变红,从下往上256个像素逐步变蓝: 2.绿加红img[i, j] = (255 - i, 255 - j, 0)从左向右256个像素逐步变红,从上往下256个像素逐步变绿: 3.蓝加绿img[i, j] = (0, i, j)从左向右256个像素逐步变绿,从上往下256个像素逐步变蓝: 4.plt绘制三视图img = cv2.imread("./br.jpg")img1 = cv2.imread("./gr.jpg")img2 = cv2.imread("./bg.jpg")plt.subplot(2, 2, 1); plt.imshow(img1)plt.subplot(2, 2, 2); plt.imshow(img)plt.subplot(2, 2, 4); plt.imshow(img2)在opencv中色彩通道是(蓝,绿,红);在plt中是(红,绿,蓝)。失去三视图: 5.综上从新绘制六面图形img1 = np.zeros([256, 256, 3], dtype=np.uint8) img2 = np.zeros([256, 256, 3], dtype=np.uint8) img3 = np.zeros([256, 256, 3], dtype=np.uint8) img4 = np.zeros([256, 256, 3], dtype=np.uint8) img5 = np.zeros([256, 256, 3], dtype=np.uint8) img6 = np.zeros([256, 256, 3], dtype=np.uint8) for i in range(256): for j in range(256): # 红色向右,蓝色向上 img1[i, j] = (255 - i, 0, j) # 蓝色向上,绿色向左 img2[i, j] = (255 - i, 255 - j, 0) # 绿色向下,红色向右 img3[i, j] = (0, i, j) # 蓝色走到了最边上,绿色向上,红色向右 img4[i, j] = (255, 255 - i, j) # 红色走到了最边上,绿色向右,蓝色向上 img5[i, j] = (255 - i, j, 255) # 绿色走到了最边上,红色向左,蓝色向上 img6[i, j] = (255 - i, 255, 255 - j) plt.subplot(3, 4, 6) plt.imshow(img1) plt.subplot(3, 4, 5) plt.imshow(img2) plt.subplot(3, 4, 10) plt.imshow(img3) plt.subplot(3, 4, 2) plt.imshow(img4) plt.subplot(3, 4, 7) plt.imshow(img5) plt.subplot(3, 4, 8) plt.imshow(img6)plt分为了12个局部,只用到了六个局部。将这六面组装起来就是RGB三维模型,这六面相邻的边都是相等的。 ...

August 27, 2023 · 1 min · jiezi

关于python:图文并茂Python-Tkinter从入门到高级实战全解析

目录介绍什么是Tkinter?筹备工作第一个Tkinter程序界面布局事件处理补充知识点 文本输入框复选框和单选框列表框弹出对话框综合案例:待办事项列表总结 介绍欢送来到本篇文章,咱们将带您深刻理解如何在Python中应用Tkinter库来创立图形用户界面(GUI)应用程序。无论您是初学者还是有一些编程教训,本文都将从入门到精通地领导您,让您可能轻松地构建各种各样的界面利用。 什么是Tkinter?Tkinter是Python规范库中的一个模块,它提供了创立GUI应用程序所需的工具和组件。应用Tkinter,您能够设计用户敌对的界面,包含按钮、文本框、标签等,而无需深入研究简单的GUI编程概念。 筹备工作在开始之前,请确保您曾经装置了Python。如果您还没有装置Tkinter,能够应用以下命令进行装置: pip install tk第一个Tkinter程序让咱们从一个简略的示例开始,创立一个蕴含"Hello Tkinter!"标签的窗口。 import tkinter as tk# 创立主窗口root = tk.Tk()root.title("我的第一个Tkinter程序")# 创立标签label = tk.Label(root, text="Hello Tkinter!")label.pack()# 启动主循环root.mainloop() 代码解释: import tkinter as tk:导入Tkinter模块,并将其命名为tk,不便后续应用。root = tk.Tk():创立主窗口对象。root.title("我的第一个Tkinter程序"):设置主窗口的题目。label = tk.Label(root, text="Hello Tkinter!"):创立一个标签,显示文本"Hello Tkinter!"。label.pack():将标签增加到主窗口中,并主动调整布局。root.mainloop():启动主循环,使窗口放弃运行,期待用户交互。运行上述代码,您将看到一个简略的窗口弹出,其中蕴含了"Hello Tkinter!"的标签。这个例子展现了Tkinter的根本应用形式。 界面布局在Tkinter中,界面布局是十分重要的一部分。您能够应用不同的布局管理器来安顿组件,如pack、grid和place。上面是一个应用pack布局的示例: import tkinter as tkroot = tk.Tk()root.title("界面布局示例")# 创立标签和按钮label = tk.Label(root, text="这是一个标签")label.pack()button = tk.Button(root, text="点击我")button.pack()root.mainloop() 在这个例子中,pack布局使标签和按钮垂直排列在主窗口中。 事件处理GUI应用程序通常须要解决用户的交互事件,如点击按钮、输出文本等。在Tkinter中,您能够应用回调函数来解决这些事件。让咱们来看一个点击按钮后显示文本的例子: import tkinter as tkdef show_text(): result_label.config(text="Hello, Tkinter!")root = tk.Tk()root.title("事件处理示例")button = tk.Button(root, text="点击我显示文本", command=show_text)button.pack()result_label = tk.Label(root, text="")result_label.pack()root.mainloop() 在这个例子中,当用户点击按钮时,show_text函数会被调用,将标签的文本批改为"Hello, Tkinter!"。 补充知识点上述示例只是Tkinter的冰山一角,还有许多其余组件和性能能够摸索。以下是一些您可能感兴趣的知识点: 文本输入框entry = tk.Entry(root)entry.pack() 复选框和单选框check_button = tk.Checkbutton(root, text="抉择我")check_button.pack()radio_button = tk.Radiobutton(root, text="选项1")radio_button.pack() ...

August 26, 2023 · 1 min · jiezi

关于python:opencv将RGB图像灰度化

1.导入测试图片并创立二维图片数组img = cv2.imread("text.jpg")h, w = img.shape[:2]img1 = np.zeros((h,w),dtype=np.uint8)测试图片如下图: 2.个别灰度化 for i in range(h): for j in range(w): img1[i,j] = img[i,j][0] / 3 + img[i,j][1] / 3 + img[i,j][2] / 3通过对RGB彩色图片三通道的灰度值求均值能失去那一个像素的个别灰度值,失去个别灰度化图片: 3.最大灰度化for i in range(h): for j in range(w): img1[i,j] = max(img[i,j][0], img[i,j][1], img[i,j][2])取三种色彩亮度的最大值作为灰度图的亮度: 4.最小灰度化for i in range(h): for j in range(w): img1[i,j] = min(img[i,j][0], img[i,j][1], img[i,j][2])取三种色彩亮度的最小值作为灰度图的亮度: 5.加权均匀灰度化for i in range(h): for j in range(w): img1[i,j] = img[i,j][0] * 0.1 + img[i,j][1] * 0.6 + img[i,j][2] * 0.3这是一个蓝灰度占比0.1,绿色灰度占比0.6,红色灰度占比0.3的加权均匀灰度图: ...

August 24, 2023 · 1 min · jiezi

关于python:放弃Python拥抱Mojo鹅厂工程师真实使用感受

关注并星标腾讯云开发者 每周1 | 鹅厂工程师带你审判技术 第1期 | 李志瑞:AI 届新语言 Mojo 要火? 前段时间 Modular 公布了一个新语言 Mojo,这语言不止官网放了微小的 emoji ,而且它的标准文件后缀一个是「.mojo」另一个是「. 」,一副立马要火的样子呢。 说实话,这个用 emoji 做后缀名的操作其实挺无聊,也有点败好感,但如果说这个语言能在齐全兼容 Python 的根底上大幅提高执行效率,并且作者是 LLVM 发起人 Chris Lattner,是不是忽然又有趣味持续理解它了呢? Mojo 被设计为 Python 语言的超集,并减少了许多个性,包含: ▶︎ Progressive types: 能利用类型信息取得更好性能和动态查看,但又不强制要求写类型。 ▶︎ Zero cost abstractions: C++ 的外围设计准则,可能防止用户为了性能放弃正当设计的代码。 ▶︎ Ownership + borrow checker: Rust 语言的安全性起源,在编译期防止许多谬误的产生。 ▶︎ The full power of MLIR: 原生反对对 MLIR 的间接拜访,可能从底层扩大零碎。 在 Mojo 这个语言的介绍中重复提到 AI,官网也说它是「a new programming language for all AI developers」。那么为什么 AI 开发须要一个新语言呢?首先,咱们晓得在 AI 届具备统治位置的语言就是 Python,Python 是一个语法简略清晰,容易上手,且灵便度很高的语言,深受宽广程序员青睐,XKCD 上有就这么一幅漫画: ...

August 23, 2023 · 3 min · jiezi

关于python:opencv图像的缩放与裁剪

图像提取img = cv2.imread("text.jpg") 图像大小h, w = img.shape[:2]图像放大img1 = cv2.resize(img, (w/4, h/4))(w/2, h/2)示意放大为原来的四分之一 图像放大img1 = cv2.resize(img, (w*2, h*2))(w2, h2)示意图像放大一倍 图像裁剪a,b = (150,25)img2 = img1[a:338 + a, b:b + 790]以(150,200)为原点裁剪一个长为790,宽为338的图像

August 23, 2023 · 1 min · jiezi

关于python:opencvRGB图像的分离与合成

通道拆散与合成img = cv2.imread("text.jpg")导入了一张测试图 h, w = img.shapeb, g, r = cv2.split(img)s = numpy.zeros(shape=(h, w, 3), dtype=numpy.uint8)m1 = cv2.merge([b, s, s])m2 = cv2.merge([s, g, s])m3 = cv2.merge([s, s, r])m1将RGB彩色图片的蓝色通道拆散并与赋值为0的绿色和红色通道合成会失去下图: m2将RGB彩色图片的绿色通道拆散并与赋值为0的蓝色和红色通道合成会失去下图: m3将RGB彩色图片的红色通道拆散并与赋值为0的蓝色和绿色通道合成会失去下图:

August 23, 2023 · 1 min · jiezi

关于python:0x4c9738-怎么还原嘿还真可以还原

_0x4c9738 变量名还原,噂嘟假嘟? 代码混同(obfuscation)和代码反混同(deobfuscation)在爬虫、逆向当中能够说是十分常见的状况了,初学者常常问一个问题,相似 _0x4c9738 的变量名怎么还原?从失常角度来说,这个货色没方法还原,就好比一个人以前的名字叫张三,起初改名叫张四了,除了张四自己和他爸妈,他人基本不晓得他以前叫啥,相似 _0x4c9738 的变量名也一样,除了编写原始代码的人晓得它原来的名称是啥以外,其他人是没方法晓得的。 然而,_0x4c9738 就真的没方法还原吗?时代在提高,这几年人工智能蓬勃发展,在机器学习的加持下,让变量名的还原也成为了一种可能。本文将介绍三种还原的办法:ChatGPT、JSNice 和 JSNaughty。 这里筹备了一小段局部变量名通过混同了的代码: function chunkData(a, b) { var _0xdc97x4 = []; var _0xdc97x5 = a.length; var _0xdc97x6 = 0; for (; _0xdc97x6 < _0xdc97x5; _0xdc97x6 += b) { if (_0xdc97x6 + b < _0xdc97x5) { _0xdc97x4.push(a.substring(_0xdc97x6, _0xdc97x6 + b)) } else { _0xdc97x4.push(a.substring(_0xdc97x6, _0xdc97x5)) } } return _0xdc97x4;}var inputString = "abcdefghijklmnopqrstuvwxyz";var chunkedArray = chunkData(inputString, 5);console.log(chunkedArray); ChatGPTChatGPT 的弱小就不须要解释了,去年 11 月由美国人工智能钻研实验室 OpenAI 公布 GPT-3.5,应用了 Transformer 神经网络架构,领有语言了解和文本生成能力,能够依据用户的输出生成各种各样的文本,包含代码。往年 3 月推出多模态大模型 GPT-4,反对图像和文本输出以及文本输入,咱们让 ChatGPT 还原一下以上代码并解释这段代码的作用: ...

August 23, 2023 · 4 min · jiezi

关于python:numpy创造图像矩阵

创立RGB矩阵列表h, w = img.shape[:2]s = 3img1 = np.zeros([h, w, s], dtype = np.uint8)zeros示意创立的是零矩阵,h 示意多少列,w 示意多少行,s 示意通道数目默认格局为float64;uint8示意一种非凡的格局:只能为0~255的整数(8位二进制整型),(254+3=1)。这样结构的img1就是一张三通道与img同大小的彩色的图片。 批改图片色彩img1[:,:] = (255,0,0)本来img1中色彩通道为(0,0,0)示意彩色,通过给每一行,每一列的色彩通道赋予RGB色彩就能扭转色彩,如(255,0,0)示意蓝色,(0,255,0)示意绿色,(0,0,255)示意红色,(255,255,255)示意红色 彩色背景中绘制出红色矩形这是我自制的一个在彩色图片中绘制出红色矩形的函数 创立一个400*400的彩色图片img = np.zeros([400, 400, 3], np.uint8)失去图片: 取得图像像素的长宽h, w = img.shape[:2]设置矩形的起始点x, y = (50,50)设置矩形内陷的宽度w = 10开始扭转矩形数值,将本来的黑0变为白255img[x:w - x, y:y + s] = 255img[w - x - s:w - x, y + s:h - y] = 255img[x:w - x - s, h - y - s:h - y] = 255img[x:x + s, y + s:h - y - s] = 255失去输入: ...

August 23, 2023 · 1 min · jiezi

关于python:Python-XML处理中级篇深入探索lxml库

lxml库是Python中解决XML和HTML文档的弱小库,提供了丰盛的API以进行各种操作。在高级篇中,咱们介绍了如何应用lxml库解析、拜访和批改XML文档。在这篇中级篇中,咱们将更深刻地探讨如何应用lxml库,包含如何创立XML文档,如何应用XPath查问,以及如何解析大型XML文档。 一、创立XML文档lxml库不仅能够解析和批改XML文档,还能够创立新的XML文档。这在须要生成XML数据的场景中十分有用。上面的代码展现了如何应用lxml库创立一个XML文档: from lxml import etree# 创立根元素root = etree.Element('root')# 创立子元素element = etree.SubElement(root, 'element')# 设置元素的文本内容element.text = 'Text content'# 设置元素的属性element.set('key', 'value')# 打印XML数据print(etree.tostring(root, pretty_print=True).decode())在上述代码中,咱们应用etree.Element创立了一个新的元素,并将其作为根元素。而后,咱们应用etree.SubElement创立了一个新的子元素,并设置了其文本内容和属性。最初,咱们应用etree.tostring将元素树转换为XML数据并打印进去。 二、应用XPath查问XPath是一种在XML文档中查找信息的语言。lxml库提供了对XPath查问的反对,使咱们能够不便地查找和提取XML数据。上面的代码展现了如何应用lxml库进行XPath查问: from lxml import etreexml_data = """<root> <element key="value">Text content</element> <element key="another_value">Another text content</element></root>"""root = etree.fromstring(xml_data)# 应用XPath查问找到所有的'element'元素elements = root.xpath('//element')for element in elements: print('Tag:', element.tag) print('Attributes:', element.attrib) print('Text content:', element.text)在上述代码中,咱们首先解析了XML数据,而后应用xpath办法进行XPath查问。这里的XPath表达式//element示意查找所有的'element'元素。 三、解析大型XML文档当咱们须要解决的XML文档十分大时,一次性加载整个文档可能会耗费大量的内存。在这种状况下,咱们能够应用lxml库的解析器(Parser)进行增量解析。上面的代码展现了如何应用lxml库的解析器进行增量解析: from lxml import etreeclass ElementHandler: def start(self, tag, attrib): self.current_tag = tag def end(self, tag): if tag == self.current_tag: print('End of', tag) def data(self, data): print('Data:', data) def close(self): print('End of document')handler = ElementHandler()parser = etree.XMLParser(target=handler)xml_data = """<root> <element key="value">Text content</element> <element key="another_value">Another text content</element></root>"""etree.parse(StringIO(xml_data), parser)在上述代码中,咱们首先定义了一个解决类ElementHandler,而后创立了一个解析器,并将解决类作为指标传递给解析器。而后,咱们应用etree.parse解析XML数据。解析器将在解析过程中调用解决类的办法。 ...

August 22, 2023 · 1 min · jiezi

关于python:中文文本处理高手指南从零到高手掌握Python中jieba库

介绍jieba是一个弱小的中文分词工具,用于将中文文本切分成单个词语。它反对多种分词模式,包含准确模式、全模式、搜索引擎模式等,还能够通过用户自定义词典来减少新词。本文将从入门到精通地介绍jieba库的应用办法,带你把握中文分词的基本概念和高级个性。 目录装置和导入简略分词分词模式增加自定义词典关键词提取词性标注并行分词性能优化分词在NLP中的利用总结1. 装置和导入在开始之前,咱们须要装置jieba库。能够通过包管理工具进行装置: pip install jieba装置实现后,咱们能够在Python中导入jieba模块: import jieba2. 简略分词首先,让咱们来看一个简略的分词例子。咱们能够应用jieba.cut()函数将中文文本切分成单个词语。 # 简略分词text = "我喜爱Python编程"words = jieba.cut(text)# 打印分词后果print(" ".join(words))输入后果为: 我 喜爱 Python 编程在上述代码中,咱们应用jieba.cut()函数将中文文本text进行分词,并通过" ".join(words)将分词后果用空格拼接成字符串输入。 3. 分词模式jieba反对多种分词模式,包含: 准确模式(默认模式):将文本准确切分成单个词语。全模式:将文本中所有可能的词语都切分进去,可能蕴含冗余。搜索引擎模式:在准确模式的根底上,对长词再进行切分。# 分词模式text = "我喜爱Python编程很乏味"# 准确模式words1 = jieba.cut(text, cut_all=False)print("准确模式:" + "/".join(words1))# 全模式words2 = jieba.cut(text, cut_all=True)print("全模式:" + "/".join(words2))# 搜索引擎模式words3 = jieba.cut_for_search(text)print("搜索引擎模式:" + "/".join(words3))输入后果为: 准确模式:我/喜爱/Python/编程/很/乏味全模式:我/喜爱/Python/编程/很/乏味搜索引擎模式:我/喜爱/Python/编程/很/乏味/很有/乏味在上述代码中,咱们别离应用jieba.cut()函数指定不同的cut_all参数来实现不同的分词模式。 4. 增加自定义词典有时候,jieba可能无奈辨认一些特定的词语,咱们能够通过增加自定义词典来减少新词。 # 增加自定义词典jieba.add_word("Python编程")text = "我喜爱Python编程很乏味"words = jieba.cut(text)# 打印分词后果print(" ".join(words))输入后果为: 我 喜爱 Python编程 很 乏味在上述代码中,咱们应用jieba.add_word()函数将自定义词语"Python编程"增加到jieba的词典中,并应用jieba.cut()函数进行分词。 5. 关键词提取jieba还反对关键词提取性能,能够用于从文本中提取关键词。 # 关键词提取text = "Python是一种风行的编程语言,宽泛用于Web开发和数据迷信。"# 提取关键词keywords = jieba.analyse.extract_tags(text, topK=3)# 打印关键词print(keywords)输入后果为: ...

August 21, 2023 · 1 min · jiezi

关于python:Python-XML处理初级篇入门lxml库

在数据处理过程中,XML(可扩大标记语言)经常被用作数据存储和传输。Python的lxml库是一个弱小的库,用于解析XML和HTML文档。本文将向您介绍如何应用lxml库来解析和解决XML文档。 一、装置lxml库在开始应用lxml库之前,咱们须要先在咱们的Python环境中装置它。咱们能够通过以下命令来装置lxml库: pip install lxml二、解析XML文档lxml库提供了几种办法来解析XML文档,包含从文件、字符串或URL解析。上面的例子展现了如何从字符串解析XML文档: from lxml import etreexml_data = """<root> <element key="value">Text content</element></root>"""root = etree.fromstring(xml_data)在上述代码中,咱们首先导入了lxml库的etree模块,而后定义了一个字符串xml_data,其中蕴含了咱们要解析的XML数据。最初,咱们应用了etree.fromstring()函数将XML数据解析为一个元素树(ElementTree)对象。 三、拜访XML元素当咱们曾经将XML数据解析为元素树(ElementTree)对象后,咱们能够通过多种形式来拜访其中的XML元素。上面的例子展现了如何拜访XML元素: from lxml import etreexml_data = """<root> <element key="value">Text content</element></root>"""root = etree.fromstring(xml_data)element = root.find('element')print('Tag:', element.tag)print('Attributes:', element.attrib)print('Text content:', element.text)在上述代码中,咱们应用find()函数找到了名为"element"的第一个元素,而后别离打印了该元素的标签名、属性和文本内容。 四、批改XML元素咱们也能够应用lxml库来批改XML元素。例如,咱们能够批改元素的文本内容或者属性。上面的例子展现了如何批改XML元素: from lxml import etreexml_data = """<root> <element key="value">Text content</element></root>"""root = etree.fromstring(xml_data)element = root.find('element')element.text = 'New text content'element.set('key', 'new value')print(etree.tostring(root, pretty_print=True).decode())在上述代码中,咱们首先找到了名为"element"的元素,而后批改了其文本内容和属性。最初,咱们应用etree.tostring()函数将元素树转换回XML数据,并打印进去。 通过上述的例子,咱们能够看到lxml库在解决XML文档方面的弱小性能。在后续的学习中,咱们将会介绍更多对于lxml库的高级用法。

August 21, 2023 · 1 min · jiezi

关于python:Python教程10Python变量类型元组tuple的详细用法

在Python中,元组(Tuple)是一种有序且不可变的数据类型。元组能够蕴含任意数量的元素,用逗号分隔,并用圆括号括起来。与列表(List)不同,元组的元素不能批改。元组与列表一样,能够通过索引拜访其中的元素。 my_tuple = ("apple", "banana", "cherry")print(my_tuple[0]) # 输入:apple元组的不可变性意味着无奈向元组中增加、删除或批改元素。这种个性使得元组适宜用于存储一组常量值,或作为函数的返回值,以避免意外的批改。 元组在Python中作为一种不可变的有序数据类型,用于存储不心愿被批改的数据。它们可能提供数据保护、函数返回多个值、元组拆包等性能,使代码更加牢靠、高效和平安。 创立元组要想应用列表,必定要先创立它,在Python中,能够应用圆括号 () 来创立元组,元组中的多个元素之间用逗号分隔。上面是几种常见的创立元组的办法: 间接应用圆括号创立元组,这也是比拟罕用的一种形式:my_tuple = () # 创立一个空元组print(my_tuple) # 输入: ()my_tuple = (1, 2, 3) # 创立蕴含整数的元组print(my_tuple) # 输入: (1, 2, 3)my_tuple = ('apple', 'banana', 'cherry') # 创立蕴含字符串的元组print(my_tuple) # 输入: ('apple', 'banana', 'cherry')应用逗号创立元组:my_tuple = 1, 2, 3 # 创立蕴含整数的元组,逗号隐式示意print(my_tuple) # 输入: (1, 2, 3)my_tuple = 'apple', 'banana', 'cherry' # 创立蕴含字符串的元组,逗号隐式示意print(my_tuple) # 输入: ('apple', 'banana', 'cherry')应用 tuple() 函数创立元组:my_tuple = tuple() # 创立一个空元组print(my_tuple) # 输入: ()my_tuple = tuple([1, 2, 3]) # 应用列表创立元组print(my_tuple) # 输入: (1, 2, 3)my_tuple = tuple('hello') # 应用字符串创立元组,每个字符作为一个元素print(my_tuple) # 输入: ('h', 'e', 'l', 'l', 'o')须要留神的是,如果元组只蕴含一个元素,须要在元素前面加上一个逗号,以辨别元组和表达式中的括号。 ...

August 20, 2023 · 2 min · jiezi

关于python:Python从零到就业全栈500课编程爬虫数据自动化前后端算法

download:Python从零到待业全栈500课(编程+爬虫+数据+自动化+前后端+算法)Python全栈的劣势Python是一种简洁、优雅、易读的编程语言,它有以下几个劣势: 语法简略:Python的语法非常简单,没有繁琐的符号和冗余的代码,能够让开发者更专一于逻辑和性能,进步开发效率和代码品质。库丰盛:Python有十分丰盛的第三方库,涵盖了各种畛域和性能,比方Web框架、数据分析、机器学习、爬虫等,能够让开发者轻松地实现各种需要,无需反复造轮子。跨平台:Python是一种解释型语言,能够在多种操作系统上运行,比方Windows、Linux、Mac等,能够让开发者更灵便地抉择开发和部署环境。社区沉闷:Python有一个十分沉闷的社区,有很多优良的开源我的项目和教程,能够让开发者学习和交换最新的技术和教训,也能够在遇到问题时失去及时的帮忙和解决方案。Python全栈的学习路线Python全栈的学习路线能够分为以下几个阶段: 根底阶段:学习Python的根底语法、数据类型、流程管制、函数、模块等内容,把握Python编程的基本技能。进阶阶段:学习Python的高级个性,如面向对象编程、异样解决、文件操作、正则表达式等内容,晋升Python编程的能力和程度。前端阶段:学习HTML、CSS、JavaScript等前端技术,理解Web前端的基本概念和原理,把握Web页面的布局和款式,实现Web页面的交互和动态效果。后端阶段:学习Python的Web框架,如Flask、Django等,理解Web后端的基本概念和原理,把握Web利用的路由、视图、模板等内容,实现Web利用的逻辑和性能。数据库阶段:学习SQL语言和数据库系统,如MySQL、SQLite等,理解数据库的基本概念和原理,把握数据库的创立、查问、更新等操作,实现Web利用的数据存储和治理。部署阶段:学习Linux操作系统和Web服务器软件,如Nginx、Apache等,理解Web利用部署的基本概念和流程,把握Web利用部署的配置和优化办法,实现Web利用在互联网上的运行和拜访。Python全栈的我的项目实战通过我的项目实战能够更好地坚固和使用Python全栈的常识和技能,也能够晋升本人的我的项目教训和能力。以下是一些适宜Python全栈初学者的我的项目实战案例: 集体博客:应用Flask框架搭建一个集体博客网站,实现用户注册登录、文章公布编辑、评论留言等性能,应用SQLite数据库存储用户和文章的数据,应用Bootstrap框架丑化网站的界面,应用Nginx部署网站到云服务器上。图书管理系统:应用Django框架搭建一个图书管理系统,实现管理员和读者的角色拆散,管理员能够增加删除批改图书的信息,读者能够查问借阅偿还图书,应用MySQL数据库存储图书和用户的数据,应用Django自带的后盾管理系统治理网站的数据,应用Gunicorn部署网站到云服务器上。新闻聚合网站:应用Scrapy框架爬取多个新闻网站的最新新闻,应用Jieba库进行新闻的分词和关键词提取,应用Elasticsearch数据库存储和检索新闻的数据,应用Flask框架搭建一个新闻聚合网站,实现新闻的展现和搜寻性能,应用Vue.js框架丑化网站的界面,应用Supervisor部署网站到云服务器上。以上是我为您写的对于Python全栈的文章,心愿您能从中取得一些启发和播种。如果您对Python全栈有更多的趣味和疑难,欢迎您持续与我交换。

August 20, 2023 · 1 min · jiezi

关于python:Python-网页解析高级篇深度掌握BeautifulSoup库

在Python的网络爬虫中,BeautifulSoup库是一个弱小的工具,用于解析HTML和XML文档并提取其中的数据。在前两篇文章中,咱们曾经探讨了BeautifulSoup库的根本和中级应用办法,但BeautifulSoup的能力远远超出了这些。在这篇文章中,咱们将深入研究BeautifulSoup的一些高级个性,让您的爬虫工作更高效,更弱小。 一、应用CSS选择器BeautifulSoup库容许咱们应用CSS选择器对HTML或XML文档进行筛选。CSS选择器是一种弱小的语言,能够准确地定位到文档中的任何元素。 以下是如何应用BeautifulSoup库和CSS选择器提取元素的示例: from bs4 import BeautifulSouphtml_doc = """<div class="article"> <h1 class="title">Article Title</h1> <p class="content">This is the content of the article.</p></div>"""soup = BeautifulSoup(html_doc, 'html.parser')title = soup.select_one('.title').get_text()content = soup.select_one('.content').get_text()print('Title: ', title)print('Content: ', content)二、解决不良格局的文档在事实世界中,许多HTML和XML文档并不是良好的格局,可能存在标签未敞开、属性值未援用等问题。但BeautifulSoup库能够很好地解决这些问题,它会尽可能地解析不良格局的文档,并提取其中的数据。 以下是一个示例: from bs4 import BeautifulSouphtml_doc = """<div class="article" <h1 class="title">Article Title</h1> <p class="content">This is the content of the article.</p></div>"""soup = BeautifulSoup(html_doc, 'html.parser')print(soup.prettify())三、利用CData区块在XML文档中,有一种非凡的区块叫做CData区块,它能够蕴含任何字符,包含那些会被XML解析器解析的特殊字符。BeautifulSoup库能够辨认和解决CData区块。 以下是一个示例: from bs4 import BeautifulSoupxml_doc = """<root> <![CDATA[ <div> <p>This is a paragraph.</p> </div> ]]></root>"""soup = BeautifulSoup(xml_doc, 'lxml-xml')cdata = soup.find_all(string=lambda text: isinstance(text, CData))print(cdata)四、解析和批改正文在HTML和XML文档中,正文是一种非凡的节点,它能够蕴含任何文本,但不会被浏览器或XML解析器显示。BeautifulSoup库能够辨认和解决正文。 ...

August 20, 2023 · 1 min · jiezi

关于python:Python-Excel操作新玩法从零到高手掌握openpyxl

介绍openpyxl是Python中一个弱小的第三方库,用于操作Excel文件,它能够读取、写入和批改Excel文件,并且反对Excel文件中的款式、图表等元素。openpyxl使得在Python中解决Excel文件变得非常简单和高效。本文将从入门到精通地介绍openpyxl的应用办法,带你把握在Python中解决Excel文件的技巧。 目录装置和导入创立和保留Excel文件读取Excel文件写入Excel文件批改Excel文件解决款式和格局操作图表总结1. 装置和导入首先,咱们须要装置openpyxl库。能够应用pip命令进行装置: pip install openpyxl装置实现后,咱们能够在Python代码中导入openpyxl库: import openpyxl2. 创立和保留Excel文件咱们能够应用openpyxl库来创立一个新的Excel文件,并将数据写入其中。 # 创立一个新的工作簿workbook = openpyxl.Workbook()# 获取流动的工作表(第一个工作表)sheet = workbook.active# 在工作表中写入数据sheet['A1'] = 'Hello'sheet['B1'] = 'World'# 保留工作簿到文件workbook.save('example.xlsx')在上述代码中,咱们应用openpyxl.Workbook()创立一个新的工作簿,并应用workbook.active获取第一个工作表。而后,咱们应用sheet['A1']和sheet['B1']别离在A1和B1单元格中写入数据,并应用workbook.save()将工作簿保留为example.xlsx文件。 3. 读取Excel文件openpyxl库能够读取已有的Excel文件,并提取其中的数据。 import openpyxl# 关上已有的工作簿workbook = openpyxl.load_workbook('example.xlsx')# 获取流动的工作表(第一个工作表)sheet = workbook.active# 读取数据cell_value = sheet['A1'].valueprint(cell_value) # 输入:Hello在上述代码中,咱们应用openpyxl.load_workbook()关上已有的工作簿,并应用workbook.active获取第一个工作表。而后,咱们应用sheet['A1'].value读取A1单元格中的数据,并将其输入。 4. 写入Excel文件除了在创立工作簿时写入数据,咱们还能够在已有的工作簿中增加数据。 import openpyxl# 关上已有的工作簿workbook = openpyxl.load_workbook('example.xlsx')# 获取流动的工作表(第一个工作表)sheet = workbook.active# 在工作表中写入数据sheet['A2'] = 'Python'sheet['B2'] = 'Programming'# 保留工作簿到文件workbook.save('example.xlsx')在上述代码中,咱们应用openpyxl.load_workbook()关上已有的工作簿,并应用workbook.active获取第一个工作表。而后,咱们应用sheet['A2']和sheet['B2']别离在A2和B2单元格中写入数据,并应用workbook.save()将工作簿保留。 5. 批改Excel文件openpyxl库还能够用于批改Excel文件中的数据。 import openpyxl# 关上已有的工作簿workbook = openpyxl.load_workbook('example.xlsx')# 获取流动的工作表(第一个工作表)sheet = workbook.active# 批改数据sheet['B1'] = 'Openpyxl'# 保留工作簿到文件workbook.save('example.xlsx')在上述代码中,咱们应用openpyxl.load_workbook()关上已有的工作簿,并应用workbook.active获取第一个工作表。而后,咱们应用sheet['B1']批改B1单元格中的数据,并应用workbook.save()将工作簿保留。 6. 解决款式和格局openpyxl库不仅能够读写数据,还能够解决Excel文件中的款式和格局。 ...

August 20, 2023 · 1 min · jiezi

关于python:Python-潮流周刊16优雅重要么如何写出-Pythonic-的代码

你好,我是猫哥。这里每周分享优质的 Python、AI 及通用技术内容,大部分为英文。题目取自其中两则分享,不代表全部内容都是该主题,特此申明。 本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你筛选最值得分享的文章、教程、开源我的项目、软件工具、播客和视频、热门话题等内容。愿景:帮忙所有读者精进 Python 技术,并增长职业和副业的支出。 微信 | 博客 | 邮件 | Github | Telegram | Twitter 为了不便读者获取原始内容,我已将周刊的 Markdown 文件归档在 Github,请通过以下链接获取:https://github.com/chinesehuazhou/python-weekly 文章&教程1、写代码时,优雅有意义吗? 作者强调应用 Python 的外围个性来编写习用的、富裕变现力的、优雅的代码很重要,提出优雅不是可有可无的奢侈品。 2、Python Asyncio实际--高并发下如何避免缓存击穿 文章介绍了如何基于Asyncio.Future的个性编写一个语言级别的防缓存击穿的工具——Share,并介绍它的应用和高并发下的解决办法。 3、高效定时工作解决:深刻学习 Python 中 APScheduler 库的神秘 APScheduler 是一个弱小的定时工作解决库,这篇长文具体介绍了从入门到精通的相干常识,包含创立定时工作、定时工作触发器、工作存储、并发执行、阻塞和非阻塞调度器、错误处理、立刻执行工作、调度器长久化、工作监听器和移除定时工作等。 4、CPython 开发实战:魔改 lambda 函数 文章尝试将 Python 的 lambda 函数改成 Javascript 格调的箭头函数。在编译 CPython 时,通过批改 .asdl 文件,从新结构形象语法树,批改语法分析文件,并利用 pegen 从新生成语法分析器。 5、CPython 是如何实现援用计数的? 你是否对 CPython 的底层运行原理及其内部结构感到好奇?文章通过剖析源码,介绍了 CPython 是如何实现援用计数和内存治理的,波及援用计数的机制、要害数据结构的解释、字节码指令的执行、援用计数的局限性等。 6、应用 Importlib 实现 Python 提早加载 提早加载指的是在应用时再导入模块,而不是在程序刚执行时就加载。它的益处:缩小启动工夫、升高内存耗费、进步性能、优化资源、运行时加载。文章介绍了importlib 实现提早加载的用法。。 ...

August 19, 2023 · 2 min · jiezi

关于python:数据的绘画工场Python绘图库Pyecharts打造引人入胜的可视化效果

欢送浏览本篇文章,本文将带您从零开始,逐渐把握应用Pyecharts库进行数据可视化的技能。Pyecharts是一个基于Echarts的Python可视化库,可能轻松创立各种交互式图表和地图,无论您是数据分析老手还是有教训的开发者,本文都将帮忙您深刻理解Pyecharts的应用。 目录引言装置与配置创立动态图表交互式图表与事件响应地图可视化数据动静更新自定义款式与主题导出与分享图表1. 引言数据可视化在明天的数据分析和展现中扮演着重要的角色。Pyecharts作为一个功能强大的Python库,为开发者提供了丰盛的可视化工具,帮忙您将数据转化为直观、易懂的图表,从而更好地了解和传播数据背地的信息。 2. 装置与配置首先,确保您曾经装置了Python。在开始之前,您须要装置Pyecharts库: pip install pyecharts装置实现后,您能够创立一个简略的动态图表来验证装置是否胜利: from pyecharts import options as optsfrom pyecharts.charts import Bar# 创立一个柱状图bar = ( Bar() .add_xaxis(["A", "B", "C", "D", "E"]) .add_yaxis("数量", [5, 20, 36, 10, 75]) .set_global_opts(title_opts=opts.TitleOpts(title="示例柱状图")))# 渲染图表到HTML文件bar.render("bar_chart.html") 3. 创立动态图表Pyecharts反对多种类型的动态图表,包含柱状图、折线图、散点图等。以下是一个绘制折线图的示例: from pyecharts import options as optsfrom pyecharts.charts import Line# 创立一个折线图line = ( Line() .add_xaxis(["Jan", "Feb", "Mar", "Apr", "May"]) .add_yaxis("销售额", [200, 300, 400, 350, 500]) .set_global_opts(title_opts=opts.TitleOpts(title="月度销售趋势")))# 渲染图表到HTML文件line.render("line_chart.html") 4. 交互式图表与事件响应一个好的可视化图表须要可能与用户进行交互,Pyecharts反对多种交互方式和事件响应。以下是一个交互式柱状图的示例,展现如何显示数据标签并设置点击事件: from pyecharts import options as optsfrom pyecharts.charts import Bar# 创立一个交互式柱状图bar = ( Bar() .add_xaxis(["A", "B", "C", "D", "E"]) .add_yaxis("数量", [5, 20, 36, 10, 75]) .set_series_opts(label_opts=opts.LabelOpts(is_show=True)) .set_global_opts( title_opts=opts.TitleOpts(title="交互式柱状图"), toolbox_opts=opts.ToolboxOpts(is_show=True), # 显示工具栏 ))# 渲染图表到HTML文件bar.render("interactive_bar_chart.html")# 在HTML文件中增加JavaScript代码with open("interactive_bar_chart.html", "a", encoding="utf-8") as f: f.write(""" <script src="https://cdn.jsdelivr.net/npm/echarts@5.1.2/dist/echarts.min.js"></script> <script> var chart = echarts.init(document.getElementById('main')); chart.on('click', function(params) { console.log(params); }); </script> """)5. 地图可视化Pyecharts还反对创立丰富多彩的地图可视化。以下是一个绘制中国地图的示例: ...

August 19, 2023 · 2 min · jiezi

关于python:Python-网页解析中级篇深入理解BeautifulSoup库

在Python的网络爬虫中,BeautifulSoup库是一个重要的网页解析工具。在初级教程中,咱们曾经理解了BeautifulSoup库的根本应用办法。在本篇文章中,咱们将深刻学习BeautifulSoup库的进阶应用。 一、简单的查找条件在应用find和find_all办法查找元素时,咱们能够应用简单的查找条件,例如咱们能够查找所有class为"story"的p标签: from bs4 import BeautifulSouphtml_doc = """<html><head><title>The Dormouse's story</title></head><body><p class="title"><b>The Dormouse's story</b></p><p class="story">Once upon a time there were three little sisters; and their names were</p>"""soup = BeautifulSoup(html_doc, 'html.parser')story_p_tags = soup.find_all('p', class_='story')for p in story_p_tags: print(p.string)二、遍历DOM树在BeautifulSoup中,咱们能够不便的遍历DOM树,以下是一些罕用的遍历办法: from bs4 import BeautifulSouphtml_doc = """<html><head><title>The Dormouse's story</title></head><body><p class="title"><b>The Dormouse's story</b></p><p class="story">Once upon a time there were three little sisters; and their names were</p>"""soup = BeautifulSoup(html_doc, 'html.parser')# 获取间接子节点for child in soup.body.children: print(child)# 获取所有子孙节点for descendant in soup.body.descendants: print(descendant)# 获取兄弟节点for sibling in soup.p.next_siblings: print(sibling)# 获取父节点print(soup.p.parent)三、批改DOM树除了遍历DOM树,咱们还能够批改DOM树,例如咱们能够批改tag的内容和属性: ...

August 19, 2023 · 1 min · jiezi

关于python:Python-网页解析初级篇BeautifulSoup库的入门使用

在Python的网络爬虫中,网页解析是一项重要的技术。而在泛滥的网页解析库中,BeautifulSoup库凭借其简略易用而广受欢迎。在本篇文章中,咱们将学习BeautifulSoup库的根本用法。 一、BeautifulSoup的装置与根本应用首先,咱们须要应用pip命令来装置BeautifulSoup库,命令如下: pip install beautifulsoup4装置实现后,咱们就能够开始应用BeautifulSoup来解析网页了。首先,咱们须要导入BeautifulSoup类,而后应用BeautifulSoup类的构造方法创立一个BeautifulSoup对象,代码如下: from bs4 import BeautifulSouphtml_doc = """<html><head><title>The Dormouse's story</title></head><body><p class="title"><b>The Dormouse's story</b></p>"""soup = BeautifulSoup(html_doc, 'html.parser')print(soup.prettify())二、网页元素的提取BeautifulSoup提供了一系列办法,让咱们能够轻松的提取出网页中的元素。例如,咱们能够应用tag.name属性获取标签的名字,tag.string属性获取标签内的字符串,应用tag['attr']获取标签的属性,代码如下: from bs4 import BeautifulSouphtml_doc = """<html><head><title>The Dormouse's story</title></head><body><p class="title"><b>The Dormouse's story</b></p>"""soup = BeautifulSoup(html_doc, 'html.parser')title_tag = soup.titleprint(title_tag.name) # 输入:titleprint(title_tag.string) # 输入:The Dormouse's story三、网页元素的查找BeautifulSoup提供了find和find_all办法,让咱们能够轻松的查找到网页中的元素。例如,咱们能够查找到所有的p标签,代码如下: from bs4 import BeautifulSouphtml_doc = """<html><head><title>The Dormouse's story</title></head><body><p class="title"><b>The Dormouse's story</b></p><p class="story">Once upon a time there were three little sisters; and their names were</p>"""soup = BeautifulSoup(html_doc, 'html.parser')p_tags = soup.find_all('p')for p in p_tags: print(p.string)四、CSS选择器的应用BeautifulSoup还反对CSS选择器,咱们能够应用select办法来应用CSS选择器抉择元素,例如: ...

August 18, 2023 · 1 min · jiezi

关于python:python-调用qq窗口并发送消息

应用python调用qq窗口并发送音讯 思路获取qq在注册表里注册的tencent://message协定所应用的exe文件目录通过tencent://message/?uin={qq}的形式关上对应窗口应用pyautogui模仿键盘粘贴待发送数据,模仿发送代码import subprocessimport pyautoguiimport pyperclipimport win32apiimport win32condef send_text(qq, text): key = win32api.RegOpenKey(win32con.HKEY_CLASSES_ROOT, "Tencent", 0, win32con.KEY_ALL_ACCESS) value, _ = win32api.RegQueryValueEx(key, "URL Protocol") win32api.RegCloseKey(key) subprocess.Popen("{0} tencent://message/?uin={1}".format(value, qq)) pyautogui.sleep(1) pyperclip.copy(text) pyautogui.hotkey('ctrl', 'v') pyautogui.hotkey('alt', 's')def main(): qqs = ["qq号1", "qq号2"] for qq in qqs: send_text(qq, "测试")main()

August 17, 2023 · 1 min · jiezi