zoukankan      html  css  js  c++  java
  • 《Python核心编程》第二版第437页第十四章练习 Python核心编程答案自己做的

    这是自己做的练习,可能有错误,欢迎讨论和各种优化重构方案。
    根据反馈,或者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()有什么不同?
    这里附一个英文版书中的原题。

    image

    【答案】
    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

  • 相关阅读:
    【转】HashMap、TreeMap、Hashtable、HashSet和ConcurrentHashMap区别
    【转】ArrayList循环遍历并删除元素的常见陷阱
    【转】Java内存管理:深入Java内存区域
    【转】java-String中的 intern()
    Jenkins + Ant + Git + Tomcat自动化部署
    Java的四种内部类
    java中的匿名内部类总结
    【转】如何提高意志力&如何坚持每天学习
    【转】前端工程筹建NodeJs+gulp+bower
    转 旧衣服不要扔,竟然还能这样改造,美翻了!
  • 原文地址:https://www.cnblogs.com/balian/p/2942524.html
Copyright © 2011-2022 走看看