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

一日一技:怎么你的字符串跟我不一樣

開發(fā) 前端
首先定義一個(gè)變量a,它的值為字符串test。現(xiàn)在,當(dāng)你在命令行交互環(huán)境直接輸入變量名再回車的時(shí)候,你看到的是'test',當(dāng)你輸入print(a)的時(shí)候,你看到的卻是test。

[[430121]]

如果你經(jīng)常使用Python的命令行交互環(huán)境,你一定遇到過下面這個(gè)現(xiàn)象:

  1. >>> a = 'test'  
  2. >>> a  
  3. 'test'  
  4. >>> print(a)  
  5. test  

首先定義一個(gè)變量a,它的值為字符串test。現(xiàn)在,當(dāng)你在命令行交互環(huán)境直接輸入變量名再回車的時(shí)候,你看到的是'test',當(dāng)你輸入print(a)的時(shí)候,你看到的卻是test。

直接輸入變量名回車,字符串會(huì)被單引號(hào)包起來。而使用print函數(shù)打印變量,字符串又沒有引號(hào)。

如果說引號(hào)只是一個(gè)小問題的話,再來看看反斜杠會(huì)怎么樣:

  1. >>> b = 'D:\game\pal4'  
  2. >>> b  
  3. 'D:\\game\\pal4'  
  4. >>> print(b)  
  5. D:\game\pal4  

在這里,b變量的值為Windows下面的一個(gè)文件夾路徑。在定義的時(shí)候,我使用的是單根反斜杠。

當(dāng)我輸入變量名,然后回車時(shí),看到的結(jié)果是'D:\\game\\pal4',不僅有最外層的引號(hào),而且反斜杠全部變成了兩根。

但是當(dāng)我使用print函數(shù)打印出來的時(shí)候,一切又正常了。

覺得很詭異嗎?

實(shí)際上,輸入變量名,回車以后,你看到的才是這個(gè)字符串真正的樣子,因?yàn)樵赑ython里面是不存在單根反斜杠的。當(dāng)你要表示反斜杠本身的時(shí)候,就應(yīng)該是\\這種寫法。

當(dāng)然在定義的時(shí)候你可以只寫單根反斜杠,在大多數(shù)情況下,Python會(huì)理解你的意圖,所以它會(huì)自動(dòng)把單根反斜杠轉(zhuǎn)換為兩個(gè)反斜杠。

而使用print關(guān)鍵字打印出來的,是經(jīng)過Python優(yōu)化,更便于人類閱讀的樣子。

當(dāng)然,使用print函數(shù)也能看到字符串真正的樣子,不過需要修改一下:

  1. >>> b = 'D:\game\pal4'  
  2. >>> b  
  3. 'D:\\game\\pal4'  
  4. >>> print(repr(b))  
  5. 'D:\\game\\pal4'  

當(dāng)你使用repr函數(shù)先處理字符串,再打印時(shí),它的效果就和直接輸入變量名回車是一樣的了。

在Python中,repr(對(duì)象)本質(zhì)上是調(diào)用了對(duì)象的__repr__這個(gè)方法。而如果直接print(對(duì)象),實(shí)際上是打印了對(duì)象__str__方法返回的內(nèi)容。我們來做一個(gè)實(shí)驗(yàn):

  1. class Test:  
  2.     def __repr__(self):  
  3.         return 'hello world!'  
  4.     def __str__(self):  
  5.         return '為什么我總是對(duì)你說你好,因?yàn)槟闶俏业氖澜绨。倒?  
  6. you = Test()  

動(dòng)手測試一下,輸入you然后直接回車顯示的是什么內(nèi)容。輸入print(you)顯示的又是什么內(nèi)容。

運(yùn)行效果如下圖所示:

從上面的例子可以看出,直接輸入變量名回車和直接用print函數(shù)打印調(diào)用的是對(duì)象的不同方法。所以他們當(dāng)然可以不一樣。

回到昨天的問題上來。在PyCharm的調(diào)試模式中,你看到的內(nèi)容實(shí)際上是變量對(duì)象的__repr__方法返回的內(nèi)容,這里的內(nèi)容是字符串在Python里面的真正的樣子,所以斜杠會(huì)變多。

上面說到,當(dāng)你輸入Windows路徑的時(shí)候,大多數(shù)情況下,Python能夠理解你的意圖,把單根反斜杠轉(zhuǎn)成雙反斜杠。不過也有例外的情況,例如:假設(shè)有一個(gè)文件夾的名字叫做u6211。它在pal4文件夾里面。那么,路徑應(yīng)該是:D:\game\pal4\u6211 如果在Python里面執(zhí)行,會(huì)出現(xiàn)什么問題?

  1. >>> c = 'D:\game\pal4\u6211'  
  2. >>> c  
  3. 'D:\\game\\pal4我'  
  4. >>> print(c)  
  5. D:\game\pal4我  

怎么和前面的pal4拼在一起了?因?yàn)閈u6211是一個(gè)Unicode編碼,表示中文我。

這種情況下,你有兩種解決方式:

  • 手動(dòng)使用雙反斜杠:
  1. >>> b = 'D:\game\pal4\\u6211'  
  2. >>> b  
  3. 'D:\\game\\pal4\\u6211'  
  4. >>> print(b)  
  5. D:\game\pal4\u6211  

在定義變量的時(shí)候,字符串左側(cè)引號(hào)的左邊加上字母r:

  1. >>> b = r'D:\game\pal4\u6211'  
  2. >>> b  
  3. 'D:\\game\\pal4\\u6211'  
  4. >>> print(b)  
  5. D:\game\pal4\u6211  

本文轉(zhuǎn)載自微信公眾號(hào)「未聞Code」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系未聞Code公眾號(hào)。

 

責(zé)任編輯:武曉燕 來源: 未聞Code
相關(guān)推薦

2022-11-06 21:04:49

字符串字段參數(shù)

2022-06-20 19:37:59

Python字符串HTML

2024-05-29 00:00:01

字符串Python縮進(jìn)

2012-03-07 17:24:10

戴爾咨詢

2012-12-20 10:17:32

IT運(yùn)維

2021-05-08 19:33:51

移除字符零寬

2021-03-18 23:28:45

Python反斜杠字符串

2021-04-27 22:15:02

Selenium瀏覽器爬蟲

2025-06-13 01:15:00

正則表達(dá)式大模型

2010-01-05 10:40:07

.NET Framew

2021-10-15 21:08:31

PandasExcel對(duì)象

2025-05-28 03:15:00

Scrapy數(shù)據(jù)sleep

2021-04-12 21:19:01

PythonMakefile項(xiàng)目

2022-06-28 09:31:44

LinuxmacOS系統(tǒng)

2024-11-13 09:18:09

2021-04-05 14:47:55

Python多線程事件監(jiān)控

2022-03-12 20:38:14

網(wǎng)頁Python測試

2021-07-08 21:49:13

前端后端Cookies

2021-05-10 19:07:18

冗余代碼Python

2021-02-14 22:22:18

格式圖片 HTTP
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 国产在线一区观看 | 九九导航| 国产91视频免费 | 亚州激情 | 日本在线一区二区 | 中文福利视频 | 国产情侣啪啪 | 这里精品| 日韩欧美国产一区二区 | 国产美女在线免费观看 | 日本视频一区二区三区 | 亚洲综合色视频在线观看 | 亚洲精品视频在线观看视频 | 久久亚洲欧美日韩精品专区 | 波多野结衣精品在线 | 91n成人| 日韩国产中文字幕 | 亚洲人成人一区二区在线观看 | 一级毛片免费 | 一区二区三区小视频 | 亚洲精品一区中文字幕 | 超碰精品在线 | 艹逼网 | 中文字幕视频在线观看 | 国产高清视频在线观看 | 九九热这里 | 日本久久网 | 久久久精品综合 | 精品日韩电影 | 久久久久久久久国产精品 | 97综合在线 | 视频一区在线播放 | 亚洲有码转帖 | 亚洲成人999 | 91久久精品日日躁夜夜躁国产 | 在线成人 | 精品久久久久久18免费网站 | 精品综合在线 | 一区亚洲| 99精品视频在线 | 黄色国产|