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

合肥网站建设模板app推广接单渠道

合肥网站建设模板,app推广接单渠道,天猫网站建设论文,全景网站制作随着每个 Python 版本的发布#xff0c;都会添加新模块#xff0c;并引入新的更好的做事方式#xff0c;虽然我们都习惯了使用好的旧 Python 库和某些做事方式#xff0c;但现在也时候升级并利用新的和改进的模块及其特性了。 文章目录技术提升PathlibSecretsZoneinfoDatac…随着每个 Python 版本的发布都会添加新模块并引入新的更好的做事方式虽然我们都习惯了使用好的旧 Python 库和某些做事方式但现在也时候升级并利用新的和改进的模块及其特性了。 文章目录技术提升PathlibSecretsZoneinfoDataclassesProper Loggingf-stringsTomllibSetuptools总结技术提升 技术要学会分享、交流不建议闭门造车。一个人走的很快、一堆人可以走的更远。 本文来自技术群粉丝的分享、推荐资料、代码、数据、技术交流提升均可加交流群获取群友已超过2000人添加时切记的备注方式为来源兴趣方向方便找到志同道合的朋友。 方式①、添加微信号pythoner666备注来自 CSDN python 方式②、微信搜索公众号Python学习与数据挖掘后台回复加群 Pathlib pathlib 绝对是 Python 标准库中最近添加的更大的内容之一 自 Python 3.4 以来它一直是标准库的一部分但很多人仍然使用 os 模块进行文件系统操作。 然而pathlib 与旧的 os.path 相比具有许多优点 - 虽然 os 模块以原始字符串格式表示路径但 pathlib 使用面向对象的样式这使得它更具可读性和编写自然 from pathlib import Path import os.path # 老方式 two_dirs_up os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # 新方式可读性强 two_dirs_up Path(__file__).resolve().parent.parent 路径被视为对象而不是字符串这一事实也使得可以创建一次对象然后查找其属性或对其进行操作 readme Path(README.md).resolve() print(fAbsolute path: {readme.absolute()}) # Absolute path: /home/martin/some/path/README.md print(fFile name: {readme.name}) # File name: README.md print(fPath root: {readme.root}) # Path root: / print(fParent directory: {readme.parent}) # Parent directory: /home/martin/some/path print(fFile extension: {readme.suffix}) # File extension: .md print(fIs it absolute: {readme.is_absolute()}) # Is it absolute: True 我最喜欢 pathlib 的一个特性是可以使用 /“除法”运算符来连接路径 # Operators: etc Path(/etc) joined etc / cron.d / anacron print(fExists? - {joined.exists()}) # Exists? - True 重要的是要注意 pathlib 只是替代 os.path 而不是整个 os 模块 它还包括 glob 模块的功能因此如果你习惯于将 os.path 与 glob.glob 结合使用那么你可以完全用pathlib替代它们。 在上面的片段中我们展示了一些方便的路径操作和对象属性但 pathlib 还包括你习惯于 os.path 的所有方法例如 print(fWorking directory: {Path.cwd()}) # same as os.getcwd() # Working directory: /home/martin/some/path Path.mkdir(Path.cwd() / new_dir, exist_okTrue) # same as os.makedirs() print(Path(README.md).resolve()) # same as os.path.abspath() # /home/martin/some/path/README.md print(Path.home()) # same as os.path.expanduser() # /home/martin 有关 os.path 函数到 pathlib 中新函数的完整映射请参阅 官方文档。 Secrets 说到 os 模块你应该停止使用的另一部分是 os.urandom。相反你应该使用自 Python 3.6 以来可用的新秘密模块 # 老方式: import os length 64 value os.urandom(length) print(fBytes: {value}) # Bytes: b\xfa\xf3...\xf2\x1b\xf5\xb6 print(fHex: {value.hex()}) # Hex: faf3cc656370e31a938e7...33d9b023c3c24f1bf5 # 新方式: import secrets value secrets.token_bytes(length) print(fBytes: {value}) # Bytes: bU\xe9n\x87...\x85\x04j:\xb0 value secrets.token_hex(length) print(fHex: {value}) # Hex: fb5dd85e7d73f7a08b8e3...4fd9f95beb08d77391 使用 os.urandom 实际上并不是这里的问题引入secrets模块的原因是因为人们使用随机模块来生成密码等即使随机模块不产生密码安全令牌。 根据文档随机模块不应用于安全目的 你应该使用 secrets 或 os.urandom但 secrets 模块绝对更可取因为它比较新并且包含一些用于十六进制令牌的实用程序/便利方法以及 URL 安全令牌。 Zoneinfo 在 Python 3.9 之前没有用于时区操作的内置库所以每个人都在使用 pytz但现在我们在标准库中有 zoneinfo所以是时候切换了。 from datetime import datetime import pytz # pip install pytz dt datetime(2022, 6, 4) nyc pytz.timezone(America/New_York) localized nyc.localize(dt) print(fDatetime: {localized}, Timezone: {localized.tzname()}, TZ Info: {localized.tzinfo}) # 新方式: from zoneinfo import ZoneInfo nyc ZoneInfo(America/New_York) localized datetime(2022, 6, 4, tzinfonyc) print(fDatetime: {localized}, Timezone: {localized.tzname()}, TZ Info: {localized.tzinfo}) # Datetime: 2022-06-04 00:00:00-04:00, Timezone: EDT, TZ Info: America/New_York datetime 模块将所有时区操作委托给抽象基类 datetime.tzinfo 这个抽象基类需要一个具体的实现——在引入这个很可能来自 pytz 的模块之前。现在我们在标准库中有 zoneinfo我们可以使用它。 然而使用 zoneinfo 有一个警告——它假定系统上有可用的时区数据UNIX 系统就是这种情况 如果你的系统没有时区数据那么你应该使用 tzdata 包它是由 CPython 核心开发人员维护的第一方库其中包含 IANA 时区数据库。 Dataclasses Python 3.7 的一个重要补充是 dataclasses 包它是 namedtuple 的替代品。 你可能想知道为什么需要替换 namedtuple以下是你应该考虑切换到数据类的一些原因 它可以是可变的 默认提供 repr、eq、init、hash 魔术方法 允许指定默认值 支持继承。 此外数据类还支持 frozen 和 slots从 3.10 开始属性以提供与命名元组的特征奇偶校验。 切换真的不应该太难因为你只需要更改定义 # 老方式: # from collections import namedtuple from typing import NamedTuple import sys User NamedTuple(User, [(name, str), (surname, str), (password, bytes)]) u User(John, Doe, btfeLuD...\xd2) print(fSize: {sys.getsizeof(u)}) # Size: 64 # 新方式: from dataclasses import dataclass dataclass() class User: name: str surname: str password: bytes u User(John, Doe, btfeLuD...\xd2) print(u) # User(nameJohn, surnameDoe, passwordbtfeLuD...\xd2) print(fSize: {sys.getsizeof(u)}, {sys.getsizeof(u) sys.getsizeof(vars(u))}) # Size: 48, 152 在上面的代码中我们还包含了大小比较因为这是 namedtuple 和数据类之间的较大差异之一如上所见命名元组的大小要小得多这是由于数据类使用 dict 来表示属性。 至于速度比较除非你计划创建数百万个实例否则属性的访问时间应该基本相同或者不够重要 import timeit setup from typing import NamedTuple User NamedTuple(User, [(name, str), (surname, str), (password, bytes)]) u User(John, Doe, b) print(fAccess speed: {min(timeit.repeat(u.name, setupsetup, number10000000))}) # Access speed: 0.16838401100540068 setup from dataclasses import dataclass dataclass(slotsTrue) class User: name: str surname: str password: bytes u User(John, Doe, b) print(fAccess speed: {min(timeit.repeat(u.name, setupsetup, number10000000))}) # Access speed: 0.17728697300481144 如果以上内容说服了你打算切换到数据类请尽快尝试吧 相反如果你不想切换并且出于某种原因真的想使用命名元组那么你至少应该使用键入模块而不是collections中的 NamedTuple # 不好方式的: from collections import namedtuple Point namedtuple(Point, [x, y]) # 更好的方式: from typing import NamedTuple class Point(NamedTuple): x: float y: float 最后如果你既不使用 namedtuple 也不使用数据类你可能需要考虑直接使用 Pydantic。 Proper Logging 这不是标准库的最新添加但值得使用 - 你应该使用正确的日志记录而不是打印语句 如果你在本地调试问题则可以使用 print但对于任何无需用户干预即可运行的生产就绪程序正确的日志记录是必须的。 特别是考虑到设置 Python 日志记录非常简单 import logging logging.basicConfig( filenameapplication.log, levellogging.WARNING, format[%(asctime)s] {%(pathname)s:%(lineno)d} %(levelname)s - %(message)s, datefmt%H:%M:%S ) logging.error(Some serious error occurred.) # [12:52:35] {stdin:1} ERROR - Some serious error occurred. logging.warning(Some warning.) # [12:52:35] {stdin:1} WARNING - Some warning. 与打印语句相比上面的简单配置将为你提供卓越的调试体验 最重要的是你可以进一步自定义日志库以记录到不同的位置、更改日志级别、自动轮换日志等。 f-strings Python 包含很多格式化字符串的方法包括 C 样式格式化、f 字符串、模板字符串或 .format 函数 不过其中之一 - f-strings - 格式化的字符串文字 它们写起来更自然可读性更强并且是前面提到的选项中最快的。 因此我认为没有必要争论或解释为什么要使用它们然而在某些情况下不能使用 f 字符串 使用 % 格式的唯一原因是用于记录 import logging things something happened... logger logging.getLogger(__name__) logger.error(Message: %s, things) # 评估内部记录器方法 logger.error(fMessage: {things}) # 立即评估 在上面的示例中如果你使用 f 字符串则表达式将立即计算而使用 C 样式格式替换将被推迟到实际需要时这对于消息分组很重要其中具有相同模板的所有消息都可以记录为一个 这不适用于 f 字符串因为模板在传递给记录器之前填充了数据。 此外有些事情是 f-strings 根本无法做到的 例如在运行时填充模板 - 即动态格式 - 这就是 f-strings 被称为文字字符串格式的原因 # 动态设置模板及其参数 def func(tpl: str, param1: str, param2: str) - str: return tpl.format(paramparam1, param2param2) some_template First template: {param1}, {param2} another_template Other template: {param1} and {param2} print(func(some_template, Hello, World)) print(func(another_template, Hello, Python)) # 动态重用具有不同参数的相同模板. inputs [Hello, World, !] template Heres some dynamic value: {value} for value in inputs: print(template.format(valuevalue)) 最重要的是尽可能使用 f 字符串因为它们更具可读性和更高性能但请注意在某些情况下仍然首选和/或需要其他格式样式。 Tomllib TOML 是一种广泛使用的配置格式对于 Python 的工具和生态系统尤其重要因为它用于 pyproject.toml 配置文件 到目前为止你必须使用外部库来管理 TOML 文件但是从 Python 3.11 开始将有一个名为 tomllib 的内置库它基于 toml 包。 所以一旦你切换到 Python 3.11你应该养成使用 import tomllib 而不是 import tomli 的习惯。少了一种需要担心的依赖 # import tomli as tomllib import tomllib with open(pyproject.toml, rb) as f: config tomllib.load(f) print(config) # {project: {authors: [{email: contactmartinheinz.dev, # name: Martin Heinz}], # dependencies: [flask, requests], # description: Example Package, # name: some-app, # version: 0.1.0}} toml_string [project] name another-app description Example Package version 0.1.1 config tomllib.loads(toml_string) print(config) # {project: {name: another-app, description: Example Package, version: 0.1.1}} Setuptools 最后一个更像是弃用通知 由于 Distutils 已弃用因此同样不鼓励使用任何来自 distutils 的函数或对象Setuptools 旨在替换或弃用所有此类用途。 是时候告别 distutils 包并切换到 setuptools 了setuptools 文档提供了有关如何替换 distutils 用法的指导 除此之外PEP 632 还为 setuptools 未涵盖的部分 distutils 提供迁移建议。 总结 每个新的 Python 版本都会带来新的特性因此我建议你查看 Python 发行说明中的“新模块”、“不推荐使用的模块”和“已删除的模块”部分这是了解 Python 标准重大变化的好方法 通过这种方式你可以不断地将新功能和最佳实践整合到你的项目中。
http://www.w-s-a.com/news/385975/

相关文章:

  • 那个网站是做房产中介的网站制作软件小学
  • 做网页怎么建站点视频解析网站
  • 做网站的系统设计网站设计论文前言
  • 做外贸网站多久更新汕头市建设局网站首页
  • 如何建设专业化的网站手机管理网站模板
  • 花生壳做网站如何用腾讯云做网站
  • 搭建集团网站开发app需要哪些软件
  • 网站建设 中企动力福州阀门wordpress 多说评论
  • php网站集成支付宝接口下载免费网络软件
  • 卡盟网站是怎么建设的用花生壳做网站速度可以吗
  • 杭州物联网前十名公司优秀seo平台
  • 网新中英企业网站管理系统wordpress 登录 缓存
  • wordpress模板建站教程wordpress添加广告位手机自适应
  • h5游戏平台入口优化是什么梗
  • 建设银行对公网站打不开网络推广活动方案主题和思路
  • 茶叶网站开发目的和意义网页设计需要考什么证
  • 高端企业网站建设公司怎么做实用性建设网站都需要哪些
  • 网站备案必须要幕布吗易企秀网站怎么做轮播图
  • 南昌网站排名优化四线城市网站建设方向及营利点
  • 做网站需要钱吗unity 做网站
  • 呼伦贝尔市规划建设局网站wordpress怎么考别人的
  • 免备案自助建站网站成都神速建站
  • 怎样编写app软件快速刷排名seo软件
  • 江苏做家纺的公司网站宣传型企业网站
  • 网站网上商城建设外国一些做环保袋的网站
  • 做空气开关那个网站推广比较好建站技术有哪些
  • 做网站前需要做什么准备wordpress图片云储存
  • 查楼盘剩余房源的网站地方网站推广
  • 农家乐网站建设方案创意平面设计公司简介
  • 信息化建设 网站作用网络营销的形式网站营销