插值字符串格式化代码中的感叹号(Python)

在csdn上读到,插值字符串格式化代码中有“!”,进行了一番探究,了解到其中的一点“隐秘”,在此共享。🤪


(笔记模板由python脚本于2024年03月31日 09:27:59创建,本篇笔记适合对Python字符串格式化有一定认知的coder翻阅)


【学习的细节是欢悦的历程】

  • Python 官网:https://www.python.org/

  • Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单……
    地址:https://lqpybook.readthedocs.io/


  自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
            —— 华罗庚


  • My CSDN主页、My HOT博、My Python 学习个人备忘录
  • 好文力荐、 老齐教室
等风来,不如追风去……


插值字符串格式化代码中有“!”
f-string代码中的“!”
(一番探究了解到一点“隐秘”,在此共享)


本文质量分:

97

本文地址: https://blog.csdn.net/m0_57158496/article/details/137244773

CSDN质量分查询入口:http://www.csdn.net/qc


目 录

  • ◆ f-string代码中的“!”
    • 1、代码解析
    • 2、`!`在f-string中的作用
      • 2.1 通用模式:!a、!r、!s
      • 2.2 数值类型的专属模式
      • 2.3 对齐和嵌套模式组合
    • 3、总结
    • 4、我关于“字符串格式化”的笔记和练习


◆ f-string代码中的“!”


1、代码解析


  我在csdn闲逛时,读到一行插值字符串格式化(f-string)代码中带了感叹号,给整不会了。🧐

代码


f'obj([{self.n!s}])'

  一番探究,却发现“大有乾坤”,是我漏学的知识点,值得“笔记”一下

  !是用于指定格式化选项的关键字, s将所引用对象强制转换为其字符串表达形式。这通常用于确保所作用对象self.n即使是非字符串类型也将会被强制转换为其字符串表示形式。

如:


pi = 3.1415926535
print(f"{pi!s}")

输出:3.1415926535



回页目录


2、!在f-string中的作用


  在 P y t h o n Python Python的格式化字符串字面值(f-strings)中,! 用于指定格式化选项。它后面可以跟一个或多个字符,用于改变值的格式化方式。这些选项可以用来控制数字的显示方式、字符串的引用等。


2.1 通用模式:!a、!r、!s


  • 以下是几个常用的格式化选项
  1. !s - 将值格式化为字符串。这通常用于确保即使是非字符串类型的值也会被强制转换为字符串表示形式。
  2. !r - 将值转换为“官方”字符串表示形式,即使用 repr() 函数。这通常会产生一个可以被Python解释器解析的字符串形式。
  3. !a - 将值转换为“可打印”的ASCII表示形式。这类似于 !r,但是会使用 ascii() 函数,确保所有非ASCII字符都被转换。

例如


class Example:
    def __init__(self, value):
        self.value = value

    def __str__(self):
        return str(self.value)
        
    def __repr__(self):
        return f"{self.value!r}"


obj = Example('梦幻精灵_cq')
print(f"\n!s参数:{obj!s}")  
print(f"!r参数:{obj!r}")  
print(f"!a参数:{obj!a}")  
obj = Example(3.1415926535)
print(f"\n!s参数:{obj!s}")  
print(f"!r参数:{obj!r}")  
print(f"!a参数:{obj!a}")  
obj = Example(True)
print(f"\n!s参数:{obj!s}")  
print(f"!r参数:{obj!r}")  
print(f"!a参数:{obj!a}") 
obj = Example(['梦幻精灵_cq', 6688])
print(f"\n!s参数:{obj!s}")  
print(f"!r参数:{obj!r}")  
print(f"!a参数:{obj!a}") 

  • 代码运行效果截屏图片
    在这里插入图片描述
      由图可鉴,!a参数对Ascii字符返回了它原本样子的 A S C I I ASCII ASCII码形态;对于非Ascii字符则返回了其 U n i c o d e Unicode Unicode编码(十六进制数)



回页目录


2.2 数值类型的专属模式


  除了前面的例子中的任意对象都可使用的!s!r!a 这些基本选项,还可以有对齐和填充字符串格式化操作。数值类型(intfloat)对象,甚至还支持更多的格式化选项,允许你指定精度、宽度、填充字符等。例如:


小数位数(数度)和位宽控制


number = 123.456789
# 指定小数点后两位精度
print(f"The number is {number:.2f}")  # 输出: The number is 123.46
# 指定宽度为8,左对齐
print(f"The number is {number:8}")    # 输出: The number is    123.456789


  在Python的字符串格式化中,你可以通过指定格式说明符来强制类型限定。格式说明符是一个由感叹号或者冒号(!或者:)引入的字符串,它跟随在格式化字段名之后,用于指定强制采用哪种模式格式化该对象。


  • 以下是一些常用的类型限定关键字

    01、 s - 将值转换为字符串形式。
    02、 r - 将值转换为字符串形式,并使用repr()而不是str()
    03、 a - 将值转换为字符串形式,并使用ascii()函数进行ASCII编码。
    04、 b - 将整数转换为二进制表示形式。
    05、 d - 将整数转换为十进制表示形式。
    06、 o - 将整数转换为八进制表示形式。
    07、 x - 将整数转换为十六进制表示形式,其中小写字母用于a-f。
    08、 X - 将整数转换为十六进制表示形式,其中大写字母用于A-F。
    09、 e - 将浮点数转换为科学计数法表示形式,其中小写字母e用于指数部分。
    10、 E - 将浮点数转换为科学计数法表示形式,其中大写字母E用于指数部分。
    11、 f - 将浮点数转换为固定点表示形式。
    12、 F - 将浮点数转换为固定点表示形式,并且如果存在,使用大写字母表示NaN和无穷大。
    13、 g - 自动选择在ef之间更紧凑的表示形式来表示浮点数。
    14、 G - 自动选择在EF之间更紧凑的表示形式来表示浮点数。
    15、 c - 将整数转换为对应的Unicode字符。
    16、 % - 将数值转换为百分比表示形式,相当于乘以100并显示为一个固定点数,后面跟有一个百分号。

下面是16个参数的一些使用示例


obj = input('\n输入:\nobj = ').strip() # 变量obj接收键盘录入字符串。
objs = set(map(str, range(10)))
obj = int(obj) if set(obj).issubset(objs) else float(obj) if set(obj.replace('.', '')) <= objs else int(obj) if set(obj) <= set(range(10)) else obj # 用三元操作语句转换输入字符为相应类型。

print(f"\n{f'{type(obj) = }':^40}\n{'':~^40}\n\n◇ 使用新式字符串格式化:str.format()")
print("!a -> {!a}".format(obj))
print("!r -> {!r}".format(obj))
print("!s -> {!s}".format(obj))

if type(obj) is float or type(obj) is int:
    print("\n:e -> {:e}".format(obj))
    print(":E -> {:E}".format(obj))
    print(":f -> {:f}".format(obj))
    print(":F -> {:F}".format(obj))
    print(":g -> {:g}".format(obj))
    print(":G -> {:G}".format(obj))
    print(":% -> {:%}".format(obj))
    print(":.2% -> {:.2%}".format(obj))
if type(obj) is int:
    print("\n:c -> {:c}".format(obj))
    print(":d -> {:d}".format(obj))
    print(":b -> {:b}".format(obj))
    print(":o -> {:o}".format(obj))
    print(":x -> {:x}".format(obj))
    print(":X -> {:X}".format(obj))


print('\n\n◇ 使用插值字符串格式化:f-string')
print(f"!a -> {obj!a}")
print(f"!r -> {obj!r}")
print(f"!s -> {obj!s}")

if type(obj) is float or type(obj) is int:
    print(f"\n:e -> {obj:e}")
    print(f":E -> {obj:E}")
    print(f":f -> {obj:f}")
    print(f":F -> {obj:F}")
    print(f":g -> {obj:g}")
    print(f":.3G -> {obj:.3G}")
    print(f":% -> {obj:%}")
    print(f":.2% -> {obj:.2%}")

if type(obj) is int:
    print(f"\n:b -> {int(obj):b}")
    print(f":c -> {int(obj):c}")
    print(f":d -> {int(obj):d}")
    print(f":o -> {int(obj):o}")
    print(f":x -> {int(obj):x}")
    print(f":X -> {int(obj):X}")

print('\n\n◇ 使用占位符:%')
print('a -> %a'%obj)
print('r -> %r'%obj)
print('s -> %s'%obj)

if type(obj) is float or type(obj) is int:
    print('\nd -> %d'%obj)
    print('e -> %e'%obj)
    print('E -> %E'%obj)
    print('f -> %f'%obj)
    print('F -> %F'%obj)
    print('.2g -> %.2g'%obj)
    print('.3G -> %.3G'%obj)

if type(obj) is int:
    print('\nc -> %c'%int(obj))
    print('o -> %o'%int(obj))
    print('x -> %x'%int(obj))
    print('X -> %X'%int(obj))


  • 代码运行效果截屏图片

    字符串 s t r str str
    在这里插入图片描述

    浮点数 f l o a t float float
    在这里插入图片描述

    整型 i n t int int
    在这里插入图片描述
      如图所鉴:在新式字符格式化和插值字符串格式化,参数的使用除a、 r、s是由!引导外,其它参数都是由:引导的(a, r, s可以对任意对象使用,其余只可以作用于数值型对象,其中b, c, d, o, x, X只能作用于浮点型对象);旧式占位符%字符串格式化,则全部直接紧跟在作用对象后面,(其b%参数不可用,d参数可以直接作用于少浮点型数值对象float,自动截取整数部分,相当于'%d'%int(float))

      python 3.x已不推荐使用%占位方式的旧式字符串格式化,但为了向下兼容代码,python 3.x还是对其提供支持的。虽然不在自己的代码中使用,对其“了解一下”还是必要的,方便对python 2.x相关代码的理解和阅读。



回页目录


2.3 对齐和嵌套模式组合


  在格式化字符串实际操作中,你可以自由地组合这些参数选项来得到你想要的输出格式。这些格式说明符提供了对字符串格式化的精细控制,使得创建格式化的输出变得非常灵活和强大。

(基于现在的 P y t h o n Python Python最推崇f-string,我也是对其极为 l i k e like like,所以这里仅对“插值字符串格式化”举例阐述。如果欲了解“新式字符格式化”和“%占位符字符串格式化”,请点击这里跳转我以前的复习笔记)


  • f-string对齐操作
    在这里插入图片描述
    字符填充
    在这里插入图片描述
    不同行宽设定
    在这里插入图片描述

      我没有找到数值对象的模式控制和对齐操作同时共存的用法,但两层f-string嵌套可以完美实现,代码语义也是易读易懂。如:

    代码
    在这里插入图片描述
    int整型
    在这里插入图片描述
    float浮点型
    在这里插入图片描述

Python代码


while 1:
    obj = input('\n输入:\nobj = ').strip() # 变量obj接收键盘录入字符串。
    if obj:
        break # 有输入才继续,无输入循环。

objs = set(map(str, range(10)))
obj = int(obj) if set(obj).issubset(objs) else float(obj) if set(obj.replace('.', '')) <= objs else int(obj) if set(obj) <= set(range(10)) else obj # 用三元操作语句转换输入字符为相应类型。

print(f"\n\n◇ 使用插值字符串格式化:f-string\n{f' 在40的宽度中对齐 ':=^33}\n")
print(f":^40 居中,:<40 靠左 :>40 靠右\n{obj:^40}\n{obj:<40}\n{obj:>40}")
print(f"\n:~^40 “~”即是填充字符位,默认空格,后两行填充字符为“.”、“,”。\n{obj:~^40}\n{obj:.<40}\n{obj:,>40}")
print(f"\n参数末的数字,即是设定格式化字符行宽:\n:~^20 20宽度居中。\n{obj:~^20}\n:~<30 30宽度靠左\n{obj:~<30}\n:~>18 18宽度靠右\n{obj:~>18}\n{'清晰行占用宽度,用“~”字符填充':.^27}")

if type(obj) is float or type(obj) is int:
    print(f'\n\n{"插值字符串嵌套对齐":=^30}\n{f":e -> {obj:e}":^40}')
    print(f'{f":E -> {obj:E}":*>40}')
    print(f'{f":f -> {obj:f}":^>33}')
    print(f'{f":F -> {obj:F}":#<21}')
    print(f"{f':g -> {obj:g}':a>24}")
    print(f"{f':.3G -> {obj:.3G}':^40}")
    print(f"{f':% -> {obj:%}':^19}")
    print(f"{f':.2% -> {obj:.2%}':^40}")

if type(obj) is int:
    print(f"\n{f':b -> {int(obj):b}':>36}")
    print(f"{f':c -> {int(obj):c}':.^22}")
    print(f"{f':d -> {int(obj):d}':@^33}")
    print(f"{f':o -> {int(obj):o}':o<12}")
    print(f"{f':x -> {int(obj):x}':x<16}")
    print(f"{f':X -> {int(obj):X}':X^24}")


注意

  如果对齐中有中文字符,代码中的宽度设定数值,是实际行宽数值-中文字符数。原因是, P y t h o n Python Python计算中文字符是按实际个数,而中文字符的显示却是占用两个英文字符位。f-string中的行宽数值是指的半角英文字符宽度。

  • 没考虑中文的f-string对齐操作
    在这里插入图片描述
      由图可鉴,设定的对齐,被四个中文字符挤乱了。😁😁

  • 中文对齐优化代码:print(f"\n{'':~^40}\n\n{' 梦幻精灵_cq ':.^36}\n\n{'':~^40}")

    输出:
    在这里插入图片描述
      减去四个中文字符,用 36 36 36限定行宽,就消除了四个中文字符的捣乱行为。😀

  关于字符串的对齐还有其自带的方法:str.center(), str.ljust(), str.rjust()。您可以点击这里查看我以前的学习笔记。



回页目录


3、总结


  在Python 3.x中,推荐使用str.format()方法和f-string( P y t h o n Python Python 3.6+)进行字符串格式化,这些方法提供了更加强大和灵活的格式化能力。f-strings通常是最快的方式,并且提供了最大的灵活性和易读性,因此通常是首选的字符串格式化方法。然而,对于Python 3.5及以下版本,str.format()是更好的选择,而旧式字符串格式化通常不再推荐使用

  需要注意的是,在Python的新式字符串格式化方法中,!并不是必须的,不加任何参数的缺省效果就是!s'。!r’倒是与!s没啥出入,!a倒是比较巧妙,有时候比ascii()方便。

  我个人是更喜欢 P y t h o n 3.6 Python 3.6 Python3.6极为推崇的插值字符串格式f-string,她几乎就是自然语言,易读易写,撰写代码非常舒适。😋



回页目录


4、我关于“字符串格式化”的笔记和练习


  • numpy和字符串格式化,用*画田字形状

  • str.replace()——Python的“第四”字符串格式

  • 复习:python中的字符串格式化

  • 插值字符串格式化定制程序结果输出(f‘{object}‘)

  • “文本界面”(Python插值字符串格式化打造)



回页首


上一篇:  代码行数的控制(Python)(同一段功能代码的行数,本应相对固定;但在灵活的Python中,她却是“变幻莫测”的)
下一篇: 



我的HOT博:

  本次共计收集 311 篇博文笔记信息,总阅读量43.82w。数据于2024年03月22日 00:50:22完成采集,用时6分2.71秒。阅读量不小于6.00k的有 7 7 7篇。

  • 001
    标题:让QQ群昵称色变的神奇代码
    (浏览阅读 5.9w )
    地址:https://blog.csdn.net/m0_57158496/article/details/122566500
    点赞:25 收藏:86 评论:17
    摘要:让QQ昵称色变的神奇代码。
    首发:2022-01-18 19:15:08
    最后编辑:2022-01-20 07:56:47

  • 002
    标题:Python列表(list)反序(降序)的7种实现方式
    (浏览阅读 1.1w )
    地址:https://blog.csdn.net/m0_57158496/article/details/128271700
    点赞:8 收藏:35 评论:8
    摘要:Python列表(list)反序(降序)的实现方式:原址反序,list.reverse()、list.sort();遍历,全数组遍历、1/2数组遍历;新生成列表,resersed()、sorted()、负步长切片[::-1]。
    首发:2022-12-11 23:54:15
    最后编辑:2023-03-20 18:13:55

  • 003
    标题:pandas 数据类型之 DataFrame
    (浏览阅读 9.7k )
    地址:https://blog.csdn.net/m0_57158496/article/details/124525814
    点赞:7 收藏:36 
    摘要:pandas 数据类型之 DataFrame_panda dataframe。
    首发:2022-05-01 13:20:17
    最后编辑:2022-05-08 08:46:13

  • 004
    标题:个人信息提取(字符串)
    (浏览阅读 8.2k )
    地址:https://blog.csdn.net/m0_57158496/article/details/124244618
    点赞:2 收藏:15 
    摘要:个人信息提取(字符串)_个人信息提取python。
    首发:2022-04-18 11:07:12
    最后编辑:2022-04-20 13:17:54

  • 005
    标题:Python字符串居中显示
    (浏览阅读 7.6k )
    地址:https://blog.csdn.net/m0_57158496/article/details/122163023
    评论:1

  • 006
    标题:罗马数字转换器|罗马数字生成器
    (浏览阅读 7.5k )
    地址:https://blog.csdn.net/m0_57158496/article/details/122592047
    摘要:罗马数字转换器|生成器。
    首发:2022-01-19 23:26:42
    最后编辑:2022-01-21 18:37:46

  • 007
    标题:回车符、换行符和回车换行符
    (浏览阅读 6.0k )
    地址:https://blog.csdn.net/m0_57158496/article/details/123109488
    点赞:2 收藏:3 
    摘要:回车符、换行符和回车换行符_命令行回车符。
    首发:2022-02-24 13:10:02
    最后编辑:2022-02-25 20:07:40


推荐条件 阅读量突破6.00k
(更多热博,请点击蓝色文字跳转翻阅)

  • 截屏图片
    在这里插入图片描述
      (此文涉及ChatPT,曾被csdn多次下架,前几日又因新发笔记被误杀而落马。躺“未过审”还不如回收站,回收站还不如永久不见。😪值此年底清扫,果断移除。留此截图,以识“曾经”。2023-12-31)



回页首


老齐漫画头像

精品文章:

  • 好文力荐:齐伟书稿 《python 完全自学教程》 Free连载(已完稿并集结成书,还有PDF版本百度网盘永久分享,点击跳转免费🆓下载。)
  • OPP三大特性:封装中的property
  • 通过内置对象理解python'
  • 正则表达式
  • python中“*”的作用
  • Python 完全自学手册
  • 海象运算符
  • Python中的 `!=`与`is not`不同
  • 学习编程的正确方法

来源:老齐教室


◆ Python 入门指南【Python 3.6.3】


好文力荐:

  • 全栈领域优质创作者——[寒佬](还是国内某高校学生)博文“非技术文—关于英语和如何正确的提问”,“英语”和“会提问”是编程学习的两大利器。
  • 【8大编程语言的适用领域】先别着急选语言学编程,先看它们能干嘛
  • 靠谱程序员的好习惯
  • 大佬帅地的优质好文“函数功能、结束条件、函数等价式”三大要素让您认清递归

CSDN实用技巧博文:

  • 8个好用到爆的Python实用技巧
  • python忽略警告
  • Python代码编写规范
  • Python的docstring规范(说明文档的规范写法)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

竞技之道-打造成功竞技游戏的实战指南【文末送书】

文章目录 理解竞技游戏的本质游戏力&#xff1a;竞技游戏设计实战教程【文末送书】 在当今数字化时代&#xff0c;游戏已经不再是一种单纯的娱乐方式&#xff0c;而是成为了一门具有巨大商业潜力的产业。特别是竞技游戏&#xff0c;它们引领着全球数十亿玩家的潮流&#xff0c;…

书生·浦语训练营二期第二次笔记

1. 部署 InternLM2-Chat-1.8B 模型进行智能对话 1.1 配置环境 创建conda环境&#xff0c;安装必要的库 studio-conda -o internlm-base -t demo # 与 studio-conda 等效的配置方案 # conda create -n demo python3.10 -y # conda activate demo # conda install pytorch2.0.…

智能文档合规检测系统:在央企国企招标采购领域的应用

一、背景介绍 在央企国企采购过程中&#xff0c;合规性是一个不可忽视的重要方面。采购方需要确保供应商的资质、业绩、规模等条件符合采购要求&#xff0c;同时避免设置不合理的条件限制或排斥潜在供应商。为了提高采购效率和确保合规性&#xff0c;智能文档合规检测系统应运…

ZKFair 步入Dargon Slayer 新阶段,未来还有哪些财富效应?

在当前区块链技术的发展中&#xff0c;Layer 2&#xff08;L2&#xff09;解决方案已成为提高区块链扩容性、降低交易成本和提升交易速度的关键技术&#xff0c;但它仍面临一些关键问题和挑战&#xff0c;例如用户体验的改进、跨链互操作性、安全性以及去中心化程度。在这些背景…

十四.PyEcharts基础学习

目录 1-PyEcharts介绍 优点&#xff1a; 安装: 官方文档&#xff1a; 2-PyEcharts快速入门 2.1 第一个图表绘制 2.2 链式调用 2.3 opeions配置项 2.4 渲染图片文件 2.5 使用主题 3-PyEcharts配置项 3.1 初始化配置项InitOpts InitOpts 3.2 全局配置项set_global_o…

非关系型数据库——Redis配置与优化

目录 一、关系型数据库和非关系型数据库 1.定义 1.1关系型数据库 1.2非关系型数据库 2.非关系型数据库产生的背景 3.关系型数据库和非关系型数据库区别 3.1适用性不同 3.2数据一致性要求不同 3.3数据模型不同 3.4数据查询语言不同 3.5数据存储方式不同 3.6扩展方式…

教育信创,重磅发布 |易安联联合飞腾发布全场景教育信创白皮书

教育信创正当时&#xff0c;科技飞扬腾风起&#xff01; 3月28日&#xff0c;《教育行业数字化自主创新 飞腾生态解决方案白皮书》重磅发布&#xff01;白皮书历时一年&#xff0c;由国产芯片龙头飞腾信息技术有限公司主持&#xff0c;易安联与25所代表院校、66位专家&#xf…

Leetcode - 391周赛

目录 一&#xff0c;3099. 哈沙德数 二&#xff0c;3100. 换水问题 II 三&#xff0c;3101. 交替子数组计数 四&#xff0c;3102. 最小化曼哈顿距离 一&#xff0c;3099. 哈沙德数 本题计算一个整数能否被它各个位数上的数字之和整除&#xff0c;如果能整除&#xff0c;返回…

本地镜像推送到harbor

1.登录已安装docker容器的服务器绑定hosts 输入&#xff1a;vi /etc/hosts 添加&#xff1a;10.128.XXX.27 harbor.com 2.将https请求更改为http请求 vi /etc/docker/daemon.json 添加&#xff1a; { "insecure-registries":["http://harbor.com:80"]…

从永远到永远-Git中tag的使用

Git中tag的使用 1.tag的作用2.使用背景3.tag的使用1.种类2.创建标签3.查看标签3.推送标签4. 删除标签: 4.idea可视化操作1.创建标签2.推送标签 999 删除、指定commit、验证暂时不表 1.tag的作用 Tag(标签)用来记录某个特定的提交(commit)。一个 Tag 被用来标记重要的历史节点&…

Nacos的搭建和使用——SpringCloud Alibaba

1. 概要说明 在使用Nacos之前&#xff0c;请在你的虚拟机中下载好Nacos,再进行连接本机使用 port&#xff1a;8848 本机访问地址&#xff1a;http://{虚拟机ip}:8848/nacos/ 访问账号密码&#xff1a;nacos/nacos 2. Nacos的作用 2.1 服务发现中心 微服务将自身注册至Nacos&am…

没想到?React 编译器还可以玩这个?!

&#x1f525;&#x1f525;&#x1f525; 前方高能&#xff0c;干货满满&#xff0c;建议点赞➕关注➕收藏&#xff1b; React 19 和 React 编译器&#xff08;此前称作React Forget&#xff09;最近一个月成为了 React 社区热议的焦点。大家都对于可能很快就不必再在 React …

备战蓝桥杯Day36 - 动态规划 - 三角形最小路径和问题

一、什么是动态规划 通过拆分问题&#xff0c;定义问题状态和状态之间的关系&#xff0c;使得问题能够以递推的方式解决。 哪些问题可以使用动态规划&#xff1f; 1、具有最优子结构&#xff1a;问题的最优解所包含的子结构的解也是最优的 2、具有无后效性&#xff1a;未来…

爬取BOSS直聘招聘数据(详情页数据+__zp_stoken__逆向)

这里携带逆向方法进行请求 获得数据 需要逆向方法请私聊 , 下面部分只展示爬取思路 对网页进行分析抓包 设置参数 – 城市/薪资范围/职业 对网页进行请求获得数据集 利用xpath,soup等进行进行数据清洗 将数据一csv的格式保存

稳定性生产总结

本期我们来谈下稳定性生产这个话题&#xff0c;稳定性建设目标有两个&#xff1a;降发生、降影响&#xff0c; 在降发生中的措施是做到三点&#xff1a;系统高可用、 高性能、 高质量&#xff0c;三高问题确实是一个很热的话题&#xff0c;里面涉及很多点。 在降影响中要做到…

Express.js项目实战(1)—— 我的藏书馆

首先新建文件夹——myLibrary 在vscode中点击文件>点击 Duplicate Workspace(以工作区的方式打开文件夹myLibrary) 点击duplicate Workspace&#xff08;打开工作区&#xff09; 之后&#xff0c;会出现以下界面 点击打开文件夹&#xff0c;选择新建的文件夹&#xff0c;会出…

小黑逆向爬虫探索与成长之路:小黑独立破解毛毛租数据加密与解密

前言 有道和招标网的加密入口定位在前面两期做了详细的介绍&#xff0c;本小结将通过简单的关键词搜索定位到加密与解密入口 数据接口寻找与请求 根据响应数据长度&#xff0c;确定数据接口&#xff0c;发现传入的参数需要加密&#xff0c;响应的结果需要解密&#xff0c;后…

为什么鸿蒙系统那么火,就业岗位却很少?而且很少有公司愿意培养新人?

近期某乎上有这么一则问答提问&#xff1a;“为什么鸿蒙系统那么火,就业岗位却很少?而且很少有公司愿意培养新人?” 都说2024是原生鸿蒙的关键一年&#xff0c;华为鸿蒙各种大动作也没有停过。根据智联招聘数据显示&#xff0c;2023年9月-12月&#xff0c;鸿蒙相关职位数同比…

【Linux入门】Linux简史

Linux 是什么&#xff1f;Linux 是一款叫做操作系统的软件。 操作系统这款软件有什么样的意义呢&#xff1f;简单来说&#xff0c;比如有顾客买了一台笔记本电脑&#xff0c;这台笔记本电脑由电脑硬件组成&#xff0c;在这堆硬件上一定搭载了一款操作系统。正因为操作系统存在&…

【Unity每日一记】这些时间成员变量你是否清楚(Timescale,Time.deltaTime,Time.unscaledDeltaTime等)

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;uni…