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

    这是自己做的练习,可能有错误,欢迎讨论和各种优化重构方案。

    12-1.
    路径搜索和搜索路径。路径搜索和搜索路径之间有什么不同。
    【答案】
    路径搜索(Search Path)搜索路径(Path Search),前者指查找某个文件的操作(the pursuit of a file),后者是去查找一组目录(through a set of directories)。本文来自博客园balian
    默认搜索路径是编译或者安装时指定。查看当前搜索路径参看下例。可以用列表的append()方法添加搜索路径。

    >>> import sys
    >>> sys.path
    ['', 'D:\\Python27\\python27.zip', 'D:\\Python27\\DLLs', 'D:\\Python27\\lib', 'D:\\Python27\\lib\\plat-win', 'D:\\Python27\\lib\\lib-tk', 'D:\\Python2
    7', 'D:\\Python27\\lib\\site-packages']
    >>>

    12-2.
    导入属性。假设你的模块mymodule里面有一个foo()函数。
    (a)把这个函数导入到你的名称空间有哪两种方法?
    (b)这两种方法导入后的名称空间有什么不同?
    【答案】
    (a)使用import语句(import module)和使用from-import语句(from module import)。避免使用from module import *语句。 
    (b)使用from-import语句,foo()被直接导入到局部名字空间去了,所以它必须被直接使用,而不能加上模块名的限定。
    如果用12-1题的sys模块中path()函数作为例子:
    采用第一种方法(import module)代码如下:

    >>> import sys
    >>> sys.path # 需要加上模块名的限定
    ['', 'D:\\Python27\\python27.zip', 'D:\\Python27\\DLLs', 'D:\\Python27\\lib', 'D:\\Python27\\lib\\plat-win', 'D:\\Python27\\lib\\lib-tk', 'D:\\Python2
    7', 'D:\\Python27\\lib\\site-packages']
    >>> path # 注意这里的错误,path()不可以直接使用
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    NameError: name 'path' is not defined
    >>>


    采用第二种方法(from module import)代码如下:

    >>> from sys import path
    >>> sys.path # 主要这里的错误,不能加上模块名的限定
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    NameError: name 'sys' is not defined
    #本文来自博客园balian
    >>> path # path()必须直接使用
    ['', 'D:\\Python27\\python27.zip', 'D:\\Python27\\DLLs', 'D:\\Python27\\lib', 'D:\\Python27\\lib\\plat-win', 'D:\\Python27\\lib\\lib-tk', 'D:\\Python2
    7', 'D:\\Python27\\lib\\site-packages']
    >>>

    【参考】
    python模块的导入的两种方式区别详解
    http://developer.51cto.com/art/201003/189555.htm

    python导入模块的三种方法
    http://www.docin.com/p-56218303.html

    12-3.
    导入“import module”和“from module import *”有什么不同?
    【答案】
    “from module import *”可以把指定模块的所有名称导入到当前的名称空间,但这种用法必须受到限制。参见本书317页。

  • 相关阅读:
    ajax 请求登录超时跳转登录页的示例代码
    [WPF]实现密码框的密码绑定
    Linq系列(5)——表达式树之案例应用
    idea设置内存大小
    idea右下角显示使用内存情况
    idea打开Run Dashboard
    java的byte[]与String相互转换
    java有包名的调用没有包名的类,用反射
    【转】查看电脑显卡型号及显卡性能
    idea关闭sonarLint自动扫描
  • 原文地址:https://www.cnblogs.com/balian/p/2633282.html
Copyright © 2011-2022 走看看