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

news2024/11/26 14:25:54

在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/136687430

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 这些基本选项,某些类型(如数值类型)还支持额外的格式化选项,允许你指定类型精度、宽度、填充字符、对齐方式等。

例如


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的字符串格式化中,你可以通过指定格式说明符来强制类型限定。格式说明符是一个由感叹号或者冒号(!或者:)引入的字符串,它跟随在格式化字段名之后,用于指定如何格式化该字段。


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

    1、 s - 将值转换为字符串形式。
    2、 r - 将值转换为字符串形式,并使用repr()而不是str()
    3、 a - 将值转换为字符串形式,并使用ascii()函数进行ASCII编码。
    4、 b - 将整数转换为二进制表示形式。
    5、 d - 将整数转换为十进制表示形式。
    6、 o - 将整数转换为八进制表示形式。
    7、 x - 将整数转换为十六进制表示形式,其中小写字母用于a-f。
    8、 X - 将整数转换为十六进制表示形式,其中大写字母用于A-F。
    9、 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限定行宽,就消除了四个中文字符的捣乱行为。😀



回页目录


3、总结


  然而,在Python 3中,推荐使用str.format()方法和f-string( P y t h o n Python Python 3.6+)进行字符串格式化,这些方法提供了更加强大和灵活的格式化能力。

  需要注意的是,在Python的新式字符串格式化方法中,!并不是必须的,因为在格式规范微语言中已经通过其他方式提供了相同的功能。



回页目录


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规范(说明文档的规范写法)

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

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

相关文章

【C语言】联合体、枚举: 联合体与结构体区别,枚举的优点

目录 1、联合体 1.1、什么是联合体 1.2、联合体的声明 1.3、联合体的特点 1.4、联合体与结构体区别 1.5、联合体的大小 2、枚举 2.1、枚举类型的声明 2.2、枚举类型的优点 3、三种自定义类型&#xff1a;结构体、联合体、枚举 正文 1、联合体 1.1、什么是联合体 联…

OpenHarmony实战:命令行工具hdc安装应用指南

一、工具概述 hdc&#xff08;OpenHarmony Device Connector&#xff09;是为开发人员提供的用于设备连接调试的命令行工具&#xff0c;该工具需支持部署在 Windows/Linux/Mac 等系统上与 OpenHarmony 设备&#xff08;或模拟器&#xff09;进行连接调试通信。 简言之&#xf…

开启 Sora 知识免费课,探索文生视频大模型

4 月 1 日&#xff0c;中国网游先锋&#xff0c;火石控股董事长、风险投资人吴渔夫开启了“跟我学 Sora 知识”的免费课程。他表示&#xff0c;讲述的知识涵盖了 Sora 的产品、技术及未来走向。自 2 月 16 日 Sora 文生视频模型问世以来&#xff0c;我已查阅众多的 Sora 中英文…

记一次对Codis的无知引起的逻辑变更

先提前说明&#xff0c;对Codis的无知是因为Codis不支持一些Redis的命令&#xff0c;而这次的逻辑变更&#xff0c;就是因为使用了PUBLISH&#xff0c;而Codis又不支持PUBLISH导致的。 1. 前言 前段时间的一次需求中&#xff0c;因为设计到多个服务的注册问题&#xff0c;在项…

docker容器添加新端口映射的步骤及`wsl$`目录的作用

在Docker容器已经创建后&#xff0c;需要添加新的端口映射&#xff0c;即对已经存在的Docker容器添加新的端口映射&#xff0c;可以通过以下步骤来添加&#xff0c;即通过修改配置文件的方法。 如何新增端口映射&#xff1f; 查找容器的hash值 docker inspect [容器id或名称…

机器学习在智能音箱中的应用探索与实践:让声音更懂你

&#x1f9d1; 作者简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向的学习指导…

椋鸟数据结构笔记#5:树、二叉树基础

文章目录 树树的相关概念树的表示 二叉树基础二叉树分类满二叉树完全二叉树 二叉树的性质二叉树的存储结构顺序存储链式存储 萌新的学习笔记&#xff0c;写错了恳请斧正。 树 树是一种非线性的数据结构&#xff0c;它是由 n 个节点组成的一个具有层次关系的数据集合。其大概结…

算法学习——LeetCode力扣补充篇3(143. 重排链表、141. 环形链表、205. 同构字符串、1002. 查找共用字符、925. 长按键入)

算法学习——LeetCode力扣补充篇3 143. 重排链表 143. 重排链表 - 力扣&#xff08;LeetCode&#xff09; 描述 给定一个单链表 L 的头节点 head &#xff0c;单链表 L 表示为&#xff1a; L0 → L1 → … → Ln - 1 → Ln 请将其重新排列后变为&#xff1a; L0 → Ln → …

题目:小蓝的神秘行囊(蓝桥OJ 3937)

问题描述&#xff1a; 解题思路&#xff1a; 二维优化01背包模板题。与一维优化01背包不同在于多增加一维。 代码&#xff1a; #include <bits/stdc.h> using namespace std;const int N 1e2 9; int dp[N][N]; //二维的01背包&#xff0c;dp[i][j]&#xff1a;i是体…

【SpringCloud】一文详谈Nacos

&#x1f3e1;浩泽学编程&#xff1a;个人主页 &#x1f525; 推荐专栏&#xff1a;《深入浅出SpringBoot》《java对AI的调用开发》 《RabbitMQ》《Spring》《SpringMVC》《项目实战》 &#x1f6f8;学无止境&#xff0c;不骄不躁&#xff0c;知行合一 文章目录 …

metasploit使用及内网笔记

1 基本操作 Metasploit就是一个漏洞框架。它的全称叫做The Metasploit Framework&#xff0c;简称叫做MSF。Metasploit作为全球最受欢迎的工具&#xff0c;不仅仅是因为它的方便性和强大性&#xff0c;更重要的是它的框架。它允许使用者开发自己的漏洞脚本&#xff0c;从而进行…

Dockerfile和Docker-compose

一、概述 Dockerfile和Docker Compose是用于构建和管理 Docker 容器的两个工具&#xff0c;但它们的作用和使用方式不同。 Dockerfile Dockerfile 是一个文本文件&#xff0c;用于定义 Docker 镜像的构建规则。它包含一系列指令&#xff0c;如 FROM&#xff08;指定基础镜像…

RAG:检索增强生成系统如何工作

随着大型语言模型&#xff08;LLM&#xff09;的发展&#xff0c;人工智能世界取得了巨大的飞跃。经过大量数据的训练&#xff0c;LLM可以发现语言模式和关系&#xff0c;使人工智能工具能够生成更准确、与上下文相关的响应。 但LLM也给人工智能工程师带来了新的挑战&#xff…

System.gc 之后到底发生了什么 ?

本文基于 OpenJDK17 进行讨论 在 JDK NIO 针对堆外内存的分配场景中&#xff0c;我们经常会看到 System.gc 的身影&#xff0c;比如当我们通过 FileChannel#map 对文件进行内存映射的时候&#xff0c;如果 JVM 进程虚拟内存空间中的虚拟内存不足&#xff0c;JVM 在 native 层就…

将整数的二进制位的奇偶数位交换

✅博客主页:爆打维c-CSDN博客​​​​​​ &#x1f43e; &#x1f539;分享c语言知识及代码 以下是一个用于交换整数二进制位的宏&#xff1a; #define SWAP_BITS(num) (((num) & 0xAAAAAAAA) >> 1) | (((num) & 0x55555555) << 1)这个宏利用了二进制掩…

WordPress AutomaticPlugin SSRF漏洞复现(CVE-2024-27954)

0x01 产品简介 WordPress是一款免费开源的内容管理系统(CMS),最初是一个博客平台,但后来发展成为一个功能强大的网站建设工具,适用于各种类型的网站,包括个人博客、企业网站、电子商务网站等,并逐步演化成一款内容管理系统软件。 0x02 漏洞概述 WordPress AutomaticPlu…

让工作自动化起来!无所不能的Python

让工作自动化起来&#xff01;无所不能的Python 一、Python是办公自动化的重要工具二、Python是提升职场竞争力的利器三、Python是企业数字化的重要平台四、Python是AI发展的重要通道之一内容简介作者简介前言读者对象如何阅读本书购买链接参与方式 随着我国企业数字化和信息化…

Shell与Bash与POSIX与Linux间的关系

shell是什么&#xff1f; Shell的英语翻译是“壳”&#xff0c;其作用也跟名字差不多&#xff0c;为操作系统套个壳&#xff0c;人与操作系统的壳交互。与壳相对应的则是操作系统内核&#xff0c;一个“壳”一个“核”。核从1970年代开始就基本定型了&#xff0c;没什么大的改…

QA测试开发工程师面试题满分问答4: 如何测试购物车功能?

当测试一个购物车时&#xff0c;我们需要采用全面的测试策略&#xff0c;以确保购物车在各种情况下的功能正常、性能良好和用户体验优秀。以下是一个详细的测试计划&#xff0c;包含了各个方面的测试。 功能测试&#xff1a; 添加商品到购物车&#xff1a;验证能否将商品成功添…

基于深度学习的端到端自动驾驶的最新进展:调研综述

基于深度学习的端到端自动驾驶的最新进展&#xff1a;调研综述 附赠自动驾驶学习资料和量产经验&#xff1a;链接 论文链接&#xff1a;https://arxiv.org/pdf/2307.04370.pdf 调研链接&#xff1a;https://github.com/Pranav-chib/ 摘要 本文介绍了基于深度学习的端到端自…