成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

徹底摧毀Python的有趣方式,我更改了1的值

開發(fā) 后端
Python很棒,盡管下面這些交互很難看,但我仍然覺得它們很酷,希望您也這樣做。

我正在研究一篇文章,并且從Python文檔中發(fā)現(xiàn)了一個非常有趣的報價:

當(dāng)前的實現(xiàn)為-5到256之間的所有整數(shù)保留一個整數(shù)對象數(shù)組,當(dāng)您在該范圍內(nèi)創(chuàng)建int時,實際上實際上是返回對現(xiàn)有對象的引用。 因此應(yīng)該可以更改1的值。我懷疑在這種情況下Python的行為是不確定的。 

Python中的所有內(nèi)容都是一個對象-包括數(shù)字。 這很重要,因為數(shù)字-5 … 256是在運行時分配的,訪問它們會返回對該對象的引用,因此使您可以永久更改這些數(shù)字的值(在Python實例中)。 現(xiàn)在我還不知道它有多少實際用途,但確實很有趣。

[[333087]]

熱身

您需要一些基本的C知識和ctypes庫。 首先,更改一個相對未使用的數(shù)字的值,例如31:

  1. >>> import ctypes 
  2. >>> def changeNum(oldNum, newNum): 
  3.   ... ctypes.cast(id(oldNum), ctypes.POINTER(ctypes.c_int))[6] = newNum 
  4. >>> changeNum(31, 100)  
  5. # changes 31 to 100 
  6. >>> 31100 

讓我們嘗試一些基本的算法:

  1. >>> 31 + 31200  
  2. >>> 31 ** 0.510.0  
  3. >>> 31 ** 210000 

此輸出使我感到非常不舒服,如果您也有這種感覺,對即將發(fā)生的事情感到抱歉。 現(xiàn)在,讓我們真正運行該手套:

  1. >>> 31 == 100  
  2. True  
  3. >>> changeNum(100, 200)  
  4. >>> 31100  
  5. >>> 100200  
  6. >>> 31 == 100  
  7. False  
  8. >>> 31 == 200  
  9. False  
  10. >>> 31 * 2 == 200  
  11. True>>> 31 * 2 == 100  
  12. True 

更改值后,它就消失了。 您可以嘗試找回原始值,但已將其刪除。

  1. >>> changeNum(100, 500 // 5)  
  2. >>> 100200  
  3. >>> changeNum(100, 50 * 2)  
  4. >>> 100200 

絕對混亂

如果您尚未意識到,則對象本身會進(jìn)行全局更改。 這意味著與該數(shù)字的任何交互都是"未定義的"。 讓我們看看行為在for循環(huán)中是如何"定義"的:

  1. >>> changeNum(5, 100)  
  2. >>> for i in range(5):  
  3. ... print(i)  
  4. ...012  
  5. ...99 

相當(dāng)標(biāo)準(zhǔn); 作為一個不一致的數(shù)字系統(tǒng)可以得到的標(biāo)準(zhǔn)。 變得很奇怪:如果我更改5的值,則5在技術(shù)上不再存在。 這會導(dǎo)致基本操作中非常奇怪的交互:

  1. >>> changeNum(5, 20) 
  2. >>> 5 - 7 == 13 
  3. True 
  4. >>> 5 - 7 - 8 == 5 
  5. True 

如果您真的想傷害您的大腦,請弄亂另外幾個數(shù)字并做一些數(shù)學(xué)運算:

  1. >>> changeNum(29, 100) 
  2. >>> changeNum(5, 20) 
  3. >>> changeNum(120, 200) 
  4. >>> 5 + 9100 
  5. >>> 5 + 9 + 5200 
  6. >>> 5 + 9 + 5 + 5220 
  7. >>> (5 + 9) * 52000 

您還可以制作一個非常令人困惑的無限while循環(huán):

  1. >>> while 5 // 4 == 5: 
  2. ... pass 
  3. ... # Do loop stuff 

崩潰的Python

我們現(xiàn)在去釣大魚吧; 我們已經(jīng)解決了其他不重要的數(shù)字,但是如果我們改變1會發(fā)生什么?

  1. >>> changeNum(1, 2) 
  2. >>> 1 
  3. Segmentation fault (core dumped) 

它崩潰了。 這不足為奇,因為1是非常重要的計算中使用的非常重要的數(shù)字。 我不確定更改1是否會影響True,但如果確實如此,我會想像一下后果。

最后的話

Python很棒,盡管這些交互很難看,但我仍然覺得它們很酷,希望您也這樣做。 您可以用它來惡作劇的朋友或同事,讓他們發(fā)瘋,因為他們試圖找出5不是5的原因。

沒有這篇Reddit帖子和令人驚嘆的GitHub存儲庫,這篇文章是不可能的,我極力鼓勵將它們檢出。

感謝您與我共度這段時光。

 

責(zé)任編輯:趙寧寧 來源: 今日頭條
相關(guān)推薦

2019-04-09 16:30:56

MicrosoftWindows 10USB

2013-05-02 15:11:56

2025-04-07 08:25:01

React復(fù)合組件組件模式

2025-06-27 01:22:00

MCP工具服務(wù)器

2013-08-20 09:23:06

Scala遞歸

2021-11-26 11:07:14

cowsay命令Linux

2012-07-12 14:35:31

面試經(jīng)歷

2025-06-18 02:01:00

Agent產(chǎn)品模型

2017-02-15 08:15:36

自毀材料數(shù)據(jù)安全

2020-07-29 10:00:38

PythonEllipsis索引

2022-10-10 23:19:02

Python腳本語言工具庫

2017-08-08 16:04:30

Python圖片處理文章提取器

2022-10-20 18:43:32

C語言golang安全

2014-07-14 11:28:41

2013-05-08 10:31:29

網(wǎng)絡(luò)·安全技術(shù)周刊

2017-07-12 10:25:17

Python微信itchat 包

2017-07-17 09:27:09

Python 爬蟲編程

2020-03-29 20:27:51

Python函數(shù)開發(fā)

2022-01-23 14:08:52

PythonPygame
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 国产免费视频在线 | 亚洲乱码一区二区三区在线观看 | 亚洲色图综合 | 久久久久久久久99精品 | 2019天天干夜夜操 | 中文字幕亚洲一区 | 国产成人免费视频 | 国产免费一区二区三区免费视频 | 一区二区三区高清 | 丝袜 亚洲 欧美 日韩 综合 | 免费观看av网站 | 亚洲伊人精品酒店 | 亚洲国产成人精品久久久国产成人一区 | 国产精品一码二码三码在线 | 国产在线观看网站 | 日韩一区二区在线视频 | 黄色av网站在线观看 | 人人爽日日躁夜夜躁尤物 | av中文字幕网站 | 免费在线视频a | 精品日韩一区二区 | 国产区免费视频 | 精品成人| 青青草免费在线视频 | 中文字幕在线视频免费视频 | 97精品久久 | 啪视频在线 | 亚洲 中文 欧美 | 免费看一区二区三区 | 亚洲成人福利在线观看 | 中文字幕一区二区三区在线观看 | 午夜影院免费体验区 | 四虎永久免费影院 | 亚洲a视频| 日韩福利视频 | 精品一区二区三区av | 日本黄色免费大片 | 日韩欧美在线播放 | 操久久| www日| a级大片 |