您的位置:首页 > 编程语言 > Python开发

《Python核心编程》第二版第437页第十四章练习 -Python核心编程答案-自己做的-

2013-03-04 11:52 543 查看
这是自己做的练习,可能有错误,欢迎讨论和各种优化重构方案。
根据反馈,或者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
>>> b
3
>>> 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐