《Python核心編程》第二版第437頁第十四章練習 -Python核心編程答案-自己做的-

來源:互聯網
上載者:User

這是自己做的練習,可能有錯誤,歡迎討論和各種最佳化重構方案。
根據反饋,或者code review,對本篇文章答案或者相關內容的更新補充,一般會被添加在本篇部落格的評論中。
將盡量保證每題的答案代碼是完整的,不僅僅是函數或者類,開啟Python 2.7的IDLE,將代碼完整拷貝進去,就能調試運行。
歡迎訪問Balian在部落格園的家。 http://www.cnblogs.com/balian

14-1.
可調用對象。說出Python中的可調用對象。exec語句和內建函數eval()有什麼不同。

【答案】
Python中的可調用對象有三:
函數-包括內建函數(BIF),使用者定義函數(UDF),lambda運算式
方法-包括內建方法(BIM),使用者定義方法(UDM)
類-也就是類執行個體

exec語句是一個BIF。exec obj表示執行obj,obj可以是單一的Python語句或者語句的集合(即代碼對象或者字串)或者一個檔案對象(一個被開啟的Python指令碼)。exec語句只有obj參數。參考該書第419頁。

eval()接收括弧內的字串,並把它作為Python運算式進行求值。eval()還有可選的的第二第三參數。參考該書第418頁。

14-2.
input()和raw_input()。內建函數input()和raw_input()有什麼不同?
這裡附一個英文版書中的原題。

【答案】
input()為內建函數(BIF),是eval()和raw_input()的組合,即eval(raw_input())。
和raw_input()一樣,input()有可選字串參數,該參數是給使用者的字串提示。

raw_input()總是以字串的形式,逐字返回使用者的輸入。
input()把輸入作為Python運算式求值,返回一個Python對象。

【參考代碼】

>>> b = input("Please input a formular: ... ")Please input a formular: ... 1 + 2>>> b3>>> a = raw_input("Please input a formular: ..." )Please input a formular: ...1 + 2>>> a'1 + 2'>>>

14-3.

執行環境。建立運行其他Python指令碼的Python指令碼。

【答案】

代碼如下:

>>> exec '''... print 'Hello World!'... '''Hello World!>>>

14-4.

os.system()。選擇熟悉的系統命令,該命令執行任務時不需要輸入,也不輸出到螢幕或根本不輸出任何東西。調用os.system()運行程式。附加題:將你的解決方案移植到subprocess.call()。

【答案】

這裡選用系統命令dir > test.txt。Dir的結果是存放在test.txt檔案中,所以這個命令不需要輸入,也無輸出到螢幕。

代碼如下:

>>> import os>>> os.system("dir > test.txt")0>>>

附加題代碼如下:

>>> import subprocess>>> subprocess.call(('dir > test.txt'), shell = True)0>>>

14-5.

commands.getoutput()。用commands.getoutput()解決前面的問題。

【答案】

commands.getoutput()在unix平台才能運行。參考http://bugs.python.org/issue15073

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.