eval()
在print干事情之前,先看看這個(gè)東東。不是沒(méi)有用,因?yàn)檎f(shuō)不定某些時(shí)候要用到。
Help on built-in function eval in module __builtin__:
eval(...)
eval(source[, globals[, locals]]) -> value
Evaluate the source in the context of globals and locals.
The source may be a string representing a Python expression
or a code object as returned by compile().
The globals must be a dictionary and locals can be any mapping,
defaulting to the current globals and locals.
If only globals is given, locals defaults to it.
能看懂更好了,看不懂也沒(méi)有關(guān)系??次覍?xiě)的吧。哈哈。概括一下,eval()是把字符串中符合python表達(dá)式的東西計(jì)算出來(lái)。意思就是:
下面再看一個(gè)字符串“相加”的例子:
順便再說(shuō)一下另外一個(gè)跟eval()有點(diǎn)類(lèi)似的函數(shù):exec(),這個(gè)函數(shù)專(zhuān)門(mén)來(lái)執(zhí)行字符串或文件里面的python語(yǔ)句。
print詳解
print命令在編程實(shí)踐中用的比較多,特別是要向看看程序運(yùn)行到某個(gè)時(shí)候產(chǎn)生了什么結(jié)果了,必須用print來(lái)輸出,或者說(shuō),本講更寬泛地說(shuō),就要說(shuō)明白把程序中得到的結(jié)果輸出問(wèn)題。
比較簡(jiǎn)單的輸出,前面已經(jīng)涉及到過(guò)了:
其中,%s,%d就是占位符。
換一種范式,寫(xiě)成這樣,就跟上面有點(diǎn)區(qū)別了。
其實(shí),跟對(duì)上面數(shù)字操作類(lèi)似,對(duì)字符串也可以做一些約束輸出操作。看下面實(shí)驗(yàn),最好看官也試試。
總體上,跟對(duì)數(shù)字的輸出操作類(lèi)似。不過(guò),在實(shí)際的操作中,這些用的真的不是很多,至少在我這么多年的代碼生涯中,用到上面復(fù)雜操作的,就是現(xiàn)在給列位展示的時(shí)候,充其量用一用對(duì)float類(lèi)型的數(shù)據(jù)輸出小數(shù)位數(shù)的操作,其它的輸出操作,以默認(rèn)的那種方式居多。請(qǐng)看官在這里鄙夷我的無(wú)知吧。
行文到此,提醒列位,如果用python3的,請(qǐng)用print(),要加個(gè)括號(hào)。
print有一個(gè)特點(diǎn),就是輸出的時(shí)候,每行后面都自動(dòng)加上一個(gè)換行符號(hào)/n,這個(gè)在前面已經(jīng)有所提及。
%r是萬(wàn)能的嗎?
我曾經(jīng)說(shuō)過(guò),懶人改變世界,特別是在敲代碼的領(lǐng)域。于是就有人問(wèn)了,前面一會(huì)兒是%s,一會(huì)兒是%d,麻煩,有沒(méi)有一個(gè)萬(wàn)能的?于是網(wǎng)上就有人給出答案了,%r就是萬(wàn)能的??磳?shí)驗(yàn):
真的是萬(wàn)能呀!別著急,看看這個(gè),你是不是就糊涂了?
當(dāng)然,這樣就肯定出錯(cuò)了:
如果看到這里,看官有點(diǎn)糊涂是很正常的,特別是那個(gè)號(hào)稱(chēng)萬(wàn)能的%r和%s,怎么都能夠?qū)υ緦儆?d的進(jìn)行正常輸出呢?
其實(shí),不管是%r還是%s(%d)都是把做為整數(shù)的對(duì)象轉(zhuǎn)化為字符串輸出了,而不是輸出整數(shù)。但是%r和%s是有點(diǎn)區(qū)別的,本講對(duì)這個(gè)暫不做深入研究,只是說(shuō)明這樣的對(duì)應(yīng):%s-->str();%r-->repr(),什么意思呢?就是說(shuō)%s調(diào)用的是str()函數(shù)把對(duì)象轉(zhuǎn)化為str類(lèi)型,而%r是調(diào)用了repr()將對(duì)象轉(zhuǎn)化為字符串。關(guān)于兩者的區(qū)別請(qǐng)參考:Difference between str and repr in Python,下面是一個(gè)簡(jiǎn)單的例子,演示一下兩者區(qū)別:
最后要表達(dá)我的一個(gè)觀點(diǎn),沒(méi)有什么萬(wàn)能的,一切都是根據(jù)實(shí)際需要而定。
關(guān)于更多的輸出格式占位符的說(shuō)明,這個(gè)頁(yè)面中有一個(gè)表格,可惜沒(méi)有找到中文的,如果看官找到中文的,請(qǐng)共享一下呀:string formatting
再擴(kuò)展
看官是否看明白上面的輸出了?有點(diǎn)意思。這樣的輸出算是對(duì)前面輸出的擴(kuò)展了。
出了這個(gè)擴(kuò)展之外,在輸出的時(shí)候,還可以用一個(gè)名曰:format的東西,這里面看不到%,但是多了{(lán)}。看實(shí)驗(yàn)先:
看到這里,是不是感覺(jué)這個(gè)format有點(diǎn)意思?一點(diǎn)不輸給前面的輸出方式。據(jù)說(shuō),format會(huì)逐漸逐漸取代前面的。關(guān)于format,我計(jì)劃后面一講繼續(xù)。這里只是來(lái)一個(gè)引子,后面把用format輸出搞得多點(diǎn)。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注