python 什么是magic string

网上科普有关“python 什么是magic string”话题很是火热,小编也是针对python 什么是magic string寻找了一些与之相关的一些信息进行分析,如果能碰...

网上科普有关“python 什么是magic string”话题很是火热,小编也是针对python 什么是magic string寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。

无论是python还是其它的编程语言,都有magic string这类东西存在。它并不是phtyon专有的东西。类似的还有magic number这样的。

前两年有关linux一个版本的更新就有个关于魔法数字的小插曲:

linux一个版本更新出来后,对某个类型的显卡的驱动支持出现了问题,然后相关代码被修复,其中在代码中就直接对一个地址加了一个偏移量,类似python中addr_offset += 123这样的操作,这里,这个123就是一个魔法数:它为什么是123?为什么不可以是124或者别的什么值?没有说明,没有理由,它就这么神奇的出现,然后问题就神奇的被解决了。

为此,linux项目负责人员很恼火,在项目中都说了脏话。

无论是magic string还是magic number,统称为magic value,即,魔法值。

它们在代码中突然出现,直接使用,没有说明,无从追溯。

这对代码的可读性,可维护性都带来了负面效应。

拿个简单的例子来说,在python中,我们有时会使用zipfile来处理压缩文件,比如这样:

z_file.writestr(z_name,?data,?zipfile.ZIP_DEFLATED)

但如果写成:

z_file.writestr(z_name,?data,?8)

那么,这个8就是一个魔法值:它是什么?它哪里来的?为什么是8而不是9?除非你去读zlip的文档或源代码,否则不知道这个8是什么。而使用`zipfile.ZIP_DEFLATED`的话,即使你不了解zlip,看到这个常量名,也知道它是压缩(deflated)的zip选择了。

魔法值让我们需要了解相关很多内容时才能读懂一句代码,并且修改它的功能或修正它的bug需要同样多的精力。

再拿一个例子来说:

def?getfileencode(file):

"""测试得到文本类型文件可能使用的编码格式

它不一定就是正确的

>>>?getfileencode('errorlog.txt')

'utf_8_sig'

>>>?getfileencode('星.txt')

'gb18030'

>>>?getfileencode(r'D:/Python/baseweb\\app.py')

'utf_8'

"""

codes?=?['utf_8',?'utf_16',?'gb18030',?'big5']

with?open(file,?'rb')?as?f:

b?=?f.read()()

for?code?in?codes:

try:

b.decode(code)

if?code?==?'utf_8'?and?b.startswith(b'\xef\xbb\xbf'):

code?=?'utf_8_sig'

break

except?(Exception,):

continue

return?code

第17行中的b'\xef\xbb\xbf'就是一个魔法值,为什么是这个值?你只有了解到windows(MS)自作主张的在utf-8编码的文本文件最开始加了这么一段作为这种编码的标识时,才能理解为什么这么写。如果我们将它命名为一个常量:

UTF8_BOM?=?b'\xef\xbb\xbf'

然后在代码中的if这样写:

if?code?==?'utf_8'?and?b.startswith(UTF8_BOM)

你无需了解关于微软在utf-8文件前加了什么,就能知道这个判断的意思:如果它是utf-8编码,并且以BOM开始……

这是避免代码中出现魔法值的最常见的办法。

关于“python 什么是magic string”这个话题的介绍,今天小编就给大家分享完了,如果对你有所帮助请保持对本站的关注!

本文来自作者[吴斯羽]投稿,不代表小熊号立场,如若转载,请注明出处:https://xx-scm.com/cshi/202606-178589.html

(173)

文章推荐

  • 实操教程“大玩家十三水是否有挂”原来真实可以装挂

    实操教程“大玩家十三水是否有挂网上科普有关“实操教程“大玩家十三水是否有挂”话题很是火热,小编也是针对实操教程“大玩家十三水是否有挂寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。  您好,实操教程“大玩家十三水是否有挂这款游戏可以开挂的,确实

    2025年03月13日
    72
  • 3分钟学会“0759麻将来好牌几率”其实确实有挂

    网上科普有关“0759麻将来好牌几率”话题很是火热,小编也是针对同城衡阳字牌作弊开挂的方法寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。  您好,0759麻将来好牌几率这款游戏可以开挂的,确实是有挂的,通过微信【游戏】很多玩家在这款游戏中打牌都会

    2025年04月03日
    85
  • 6秒懂!开心麻将系统给你发好牌”其实确实有挂

    网上科普有关“开心麻将系统给你发好牌”话题很是火热,小编也是针对同城衡阳字牌作弊开挂的方法寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。  您好,开心麻将系统给你发好牌这款游戏可以开挂的,确实是有挂的,通过微信【游戏】很多玩家在这款游戏中打牌都会

    2025年06月09日
    72
  • 6秒懂!微乐安徽麻将怎么下载挂”(确实有挂)

    网上科普有关“微乐安徽麻将怎么下载挂”话题很是火热,小编也是针对同城衡阳字牌作弊开挂的方法寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。  您好,微乐安徽麻将怎么下载挂这款游戏可以开挂的,确实是有挂的,通过微信【游戏】很多玩家在这款游戏中打牌都会

    2025年06月10日
    44
  • 6秒懂!扣点麻将开挂器(开挂神器怎么用)

    网上科普有关“扣点麻将开挂器”话题很是火热,小编也是针对同城衡阳字牌作弊开挂的方法寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。  您好,扣点麻将开挂器这款游戏可以开挂的,确实是有挂的,通过微信【游戏】很多玩家在这款游戏中打牌都会发现很多用户的牌

    2025年06月23日
    42
  • 辅助开挂工具“摸一把麻将为啥一直输(真的有挂)

    网上科普有关“摸一把麻将为啥一直输”话题很是火热,小编也是针对同城衡阳字牌作弊开挂的方法寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。  您好,摸一把麻将为啥一直输这款游戏可以开挂的,确实是有挂的,通过微信【游戏】很多玩家在这款游戏中打牌都会发现

    2025年07月04日
    40
  • 辅助教程实测“划水麻将可以开挂多少钱”其实确实有挂

    网上科普有关“划水麻将可以开挂多少钱”话题很是火热,小编也是针对同城衡阳字牌作弊开挂的方法寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。  您好,划水麻将可以开挂多少钱这款游戏可以开挂的,确实是有挂的,通过微信【游戏】很多玩家在这款游戏中打牌都会

    2025年07月13日
    32
  • 辅助教程实测“欢乐途游麻将挂在哪购买”(其实是有挂)

    网上科普有关“欢乐途游麻将挂在哪购买”话题很是火热,小编也是针对同城衡阳字牌作弊开挂的方法寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。  您好,欢乐途游麻将挂在哪购买这款游戏可以开挂的,确实是有挂的,通过微信【游戏】很多玩家在这款游戏中打牌都会

    2025年07月17日
    31
  • 教程开挂辅助“台炮麻将挂怎么买(开挂神器怎么用)

    网上科普有关“台炮麻将挂怎么买”话题很是火热,小编也是针对同城衡阳字牌作弊开挂的方法寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。  您好,台炮麻将挂怎么买这款游戏可以开挂的,确实是有挂的,通过微信【游戏】很多玩家在这款游戏中打牌都会发现很多用户

    2025年08月04日
    28
  • 玩家必搜“大唐麻将要怎么开挂开挂”实测确实有挂

    大唐麻将要怎么开挂开挂网上科普有关“大唐麻将要怎么开挂开挂”话题很是火热,小编也是针对大唐麻将要怎么开挂开挂寻找了一些与之相关的一些信息进行分析,如果能碰巧解决你现在面临的问题,希望能够帮助到您。  您好,大唐麻将要怎么开挂开挂这款游戏可以开挂的,确实是有挂的,通过微信【】很多玩家在

    2025年08月25日
    22

发表回复

本站作者后才能评论

评论列表(4条)

  • 吴斯羽
    吴斯羽 2026年06月29日

    我是小熊号的签约作者“吴斯羽”!

  • 吴斯羽
    吴斯羽 2026年06月29日

    希望本篇文章《python 什么是magic string》能对你有所帮助!

  • 吴斯羽
    吴斯羽 2026年06月29日

    本站[小熊号]内容主要涵盖:国足,欧洲杯,世界杯,篮球,欧冠,亚冠,英超,足球,综合体育

  • 吴斯羽
    吴斯羽 2026年06月29日

    本文概览:网上科普有关“python 什么是magic string”话题很是火热,小编也是针对python 什么是magic string寻找了一些与之相关的一些信息进行分析,如果能碰...