精华内容
下载资源
问答
  • python中help函数_Python help()函数
    千次阅读
    2020-07-11 04:54:52

    python中help函数

    Python help() function is used to get the documentation of specified module, class, function, variables etc. This method is generally used with python interpreter console to get details about python objects.

    Python help()函数用于获取指定模块,类,函数,变量等的文档。此方法通常与python解释器控制台一起使用,以获取有关python对象的详细信息。

    Python help()函数 (Python help() function)

    Python help() function syntax is:

    Python help()函数语法为:

    help([object])

    If no argument is given, the interactive help system starts on the interpreter console.

    如果未提供任何参数,则交互式帮助系统将在解释器控制台上启动。

    In python help console, we can specify module, class, function names to get their help documentation. Some of them are:

    在python帮助控制台中,我们可以指定moduleclassfunction名称来获取其帮助文档。 他们之中有一些是:

    help> True
    
    help> collections
    
    help> builtins
    
    help> modules
    
    help> keywords
    
    help> symbols
    
    help> topics
    
    help> LOOPING

    If you want to get out of help console, type quit.

    如果要退出帮助控制台,请输入quit

    We can also get the help documentation directly from the python console by passing a parameter to help() function.

    通过将参数传递给help()函数,我们还可以直接从python控制台获取帮助文档。

    >>> help('collections')
    
    >>> help(print)
    
    >>> help(globals)

    Let’s see what is the output of help() function for globals() function.

    让我们看看globals()函数的help()函数的输出是什么。

    >>> help('builtins.globals')
    
    Help on built-in function globals in builtins:
    
    builtins.globals = globals()
        Return the dictionary containing the current scope's global variables.
        
        NOTE: Updates to this dictionary *will* affect name lookups in the current global scope and vice-versa.

    定义自定义类和函数的help() (Defining help() for custom class and functions)

    We can define help() function output for our custom classes and functions by defining docstring (documentation string). By default, the first comment string in the body of a method is used as its docstring. It’s surrounded by three double quotes.

    我们可以通过定义docstring(文档字符串)来为自定义类和函数定义help()函数输出。 默认情况下,方法主体中的第一个注释字符串用作其文档字符串。 它用三个双引号引起来。

    Let’s say we have a python file python_help_examples.py with following code.

    假设我们有一个包含以下代码的python文件python_help_examples.py

    def add(x, y):
        """
        This function adds the given integer arguments
        :param x: integer
        :param y: integer
        :return: integer
        """
        return x + y
    
    
    class Employee:
        """
        Employee class, mapped to "employee" table in Database
        """
        id = 0
        name = ''
    
        def __init__(self, i, n):
            """
            Employee object constructor
            :param i: integer, must be positive
            :param n: string
            """
            self.id = i
            self.name = n

    Notice that we have defined docstring for function, class and its methods. You should follow some format for documentation, I have generated some part of them automatically using PyCharm IDE. NumPy docstring guide is a good place to get some idea around proper way of help documentation.

    注意,我们已经为函数,类及其方法定义了docstring。 您应该遵循某种格式的文档,我已经使用PyCharm IDE自动生成了其中的一部分。 NumPy文档字符串指南是了解正确的帮助文档方式的好地方。

    Let’s see how to get this docstring as help documentation in python console.

    让我们看看如何在python控制台中获取此文档字符串作为帮助文档。

    First of all, we will have to execute this script in the console to load our function and class definition. We can do this using exec() command.

    首先,我们将必须在控制台中执行此脚本以加载函数和类定义。 我们可以使用exec()命令执行此操作。

    >>> exec(open("python_help_examples.py").read())

    We can verify that the functions and class definitions are present using globals() command.

    我们可以使用globals()命令验证函数和类定义是否存在。

    >>> globals()
    {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__warningregistry__': {'version': 0}, 'add': <function add at 0x100dda1e0>, 'Employee': <class '__main__.Employee'>}

    Notice that ‘Employee’ and ‘add’ are present in the global scope dictionary.

    请注意,全局范围字典中存在“雇员”和“添加”。

    Now we can get the help documentation using help() function. Let’s look at some of the examples.

    现在,我们可以使用help()函数获取帮助文档。 让我们看一些例子。

    >>> help('python_help_examples')
    >>> help('python_help_examples.add')
    
    Help on function add in python_help_examples:
    
    python_help_examples.add = add(x, y)
        This function adds the given integer arguments
        :param x: integer
        :param y: integer
        :return: integer
    (END)
    >>> help('python_help_examples.Employee')
    >>> help('python_help_examples.Employee.__init__')
    
    
    Help on function __init__ in python_help_examples.Employee:
    
    python_help_examples.Employee.__init__ = __init__(self, i, n)
        Employee object constructor
        :param i: integer, must be positive
        :param n: string
    (END)

    摘要 (Summary)

    Python help() function is very helpful to get the details about modules, classes, and functions. It’s always best practice to define docstring for the custom classes and functions to explain their usage.

    Python help()函数对于获取有关模块,类和函数的详细信息非常有帮助。 为自定义类和函数定义docstring始终是最佳实践,以解释其用法。

    GitHub Repository. GitHub存储库中检出完整的python脚本和更多Python示例。

    Reference: Official Documentation

    参考: 官方文档

    翻译自: https://www.journaldev.com/22892/python-help-function

    python中help函数

    更多相关内容
  • Microsoft HTML Help Workshop 是由微软公司出的编程配套的软件,该软件可以帮助您建立 HTML 格式的 HELP 文件,真正重新美化了字体。用HTML Help Workshop制作chm文件十分方便。
  • 先运行CMD命令修改注册表,再创建带参数的helpviewer 使用。 不需要安装vs2017就可以查看MSDN 首次需要下载书籍,才能在使用。
  • Microsoft Help Viewer 1.1

    2015-07-29 17:16:45
    献给跟我一样手残从控制面板里删除help viewer的朋友,如果不想重新安装vs2010(前提是你删的干净),想独立安装它,请下载附件并解压,先装 Microsoft Help Viewer 1.1文件夹中的exe,在打中文补丁,如果要导入msdn...
  • labVIEW中文help文档

    2014-11-02 22:10:49
    labVIEW2010的中文help文档,方便大家平时查看
  • python中help信息

    千次阅读 2020-12-02 13:51:10
    向 Python 寻求帮助 >>> help Type help() for interactive help, or help(object) for help about object. 因为我们不知道哪些对象可能包含关键字,所以不指定任何特定对象来尝试help(): 清单 3. 启动帮助实用...

    什么是自省?

    在日常生活中,自省(introspection)是一种自我检查行为。自省是指对某人自身思想、情绪、动机和行为的检查。伟大的哲学家苏格拉底将生命中

    的大部分时间用于自我检查,并鼓励他的雅典朋友们也这样做。他甚至对自己作出了这样的要求:“未经自省的生命不值得存在。”(请参阅参考资料以获取关于苏格拉底更多信息的链接。)

    在计算机编程中,自省是指这种能力:检查某些事物以确定它是什么、它知道什么以及它能做什么。自省向程序员提供了极大的灵活性和控制力。一旦您使用了支持自省的编程语言,就会产生类似这样的感觉:“未经检查的对象不值得实例化。”

    本文介绍了 Python 编程语言的自省能力。整个 Python 语言对自省提供了深入而广泛的支持。实际上,很难想象假如 Python 语言没有其自省特性是什么样子。在读完本文时,您应该能够非常轻松地洞察到自己 Python 对象的“灵魂”。

    在深入研究更高级的技术之前,我们尽可能用最普通的方式来研究 Python 自省。有些读者甚至可能会争论说:我们开始时所讨论的特性不应称之为“自省”。我们必须承认,它们是否属于自省的范畴还有待讨论。但从本文的主旨出发,我们所关心的只是找出有趣问题的答案。

    现在让我们以交互方式使用 Python 来开始研究。当我们从命令行启动 Python 时,就进入了 Python shell,在这里可以输入

    Python 代码,而且立刻会从 Python 解释器获得响应。(本文中列出的命令可以使用 Python 2.2.2

    正确执行。如果您使用较早的版本,则可能产生不同的结果或发生错误。可以从 Python 网站下载最新版本 [请参阅参考资料]。)

    清单 1. 以交互方式启动 Python 解释器

    $ python

    Python 2.2.2 (#1, Oct 28 2002, 17:22:19)

    [GCC 3.2 (Mandrake Linux 9.0 3.2-1mdk)] on linux2

    Type "help", "copyright", "credits" or "license" for more information.

    >>>

    在让 Python 运行起来,并看到 Python 提示符(>>>)之后,您可能想知道 Python 能识别什么字。大多数编程语言都有保留字或关键字,这些字在该语言中有特殊的意义,Python 也不例外。您可能还注意到,Python 建议我们输入help以获取更多信息。也许我们可以向 Python 寻求一些关于关键字的帮助。

    Python 的联机帮助实用程序

    让我们按建议的那样,通过输入help来开始讨论,并观察它是否会向我们提供任何关于关键字的线索:

    清单 2. 向 Python 寻求帮助

    >>> help

    Type help() for interactive help, or help(object) for help about object.

    因为我们不知道哪些对象可能包含关键字,所以不指定任何特定对象来尝试help():

    清单 3. 启动帮助实用程序

    >>> help()

    Welcome to Python 2.2! This is the online help utility.

    If this is your first time using Python, you should definitely check out

    the tutorial on the Internet at http://www.python.org/doc/tut/.

    Enter the name of any module, keyword, or topic to get help on writing

    Python programs and using Python modules. To quit this help utility and

    return to the interpreter, just type "quit".

    To get a list of available modules, keywords, or topics, type "modules",

    "keywords", or "topics". Each module also comes with a one-line summary

    of what it does; to list the modules whose summaries contain a given word

    such as "spam", type "modules spam".

    help>

    现在,我们对此的理解似乎深入了些。让我们在 help 提示符下输入keywords:

    清单 4. 用 keywords 寻求帮助

    help> keywords

    Here is a list of the Python keywords. Enter any keyword to get more help.

    and elif global or

    assert else if pass

    break except import print

    class exec in raise

    continue finally is return

    def for lambda try

    del from not while

    help> quit

    You are now leaving help and returning to the Python interpreter.

    If you want to ask for help on a particular object directly from the

    interpreter, you can type "help(object)". Executing "help('string')"

    has the same effect as typing a particular string at the help> prompt.

    >>>

    输入help()后,会看到一条欢迎消息和一些指示信息,接着是 help 提示符。在提示符下输入keywords,则会看到一个 Python 关键字列表。我们已经获得了问题的答案,于是退出帮助实用程序,这时会看到一条简短的告别消息,并返回到 Python 提示符下。

    正如您从这个示例可以看到的,Python 的联机帮助实用程序会显示关于各种主题或特定对象的信息。帮助实用程序很有用,并确实利用了 Python

    的自省能力。但仅仅使用帮助不会揭示帮助是如何获得其信息的。而且,因为本文的目的是揭示 Python

    自省的所有秘密,所以我们必须迅速地跳出对帮助实用程序的讨论。

    在结束关于帮助的讨论之前,让我们用它来获得一个可用模块的列表。模块只是包含 Python 代码的文本文件,其名称后缀是.py。如果在 Python 提示符下输入help('modules'),或在 help 提示符下输入modules,则会看到一长列可用模块,类似于下面所示的部分列表。自己尝试它以观察您的系统中有哪些可用模块,并了解为什么会认为 Python 是“自带电池”的。

    清单 5. 部分可用模块的列表

    >>> help('modules')

    Please wait a moment while I gather a list of all available modules...

    BaseHTTPServer cgitb marshal sndhdr

    Bastion chunk math socket

    CDROM cmath md5 sre

    CGIHTTPServer cmd mhlib sre_compile

    Canvas code mimetools sre_constants

    bisect macpath signal xreadlines

    cPickle macurl2path site xxsubtype

    cStringIO mailbox slgc (package) zipfile

    calendar mailcap smtpd

    cgi markupbase smtplib

    Enter any module name to get more help. Or, type "modules spam" to search

    for modules whose descriptions contain the word "spam".

    >>>

    sys 模块

    sys模块是提供关于 Python 本身的详尽内在信息的模块。通过导入模块,并用点(.)符号引用其内容(如变量、函数和类)来使用模块。sys模块包含各种变量和函数,它们揭示了当前的 Python 解释器有趣的详细信息。让我们研究其中的一部分。我们要再次以交互方式运行 Python,并在 Python 命令提示符下输入命令。首先,我们将导入sys模块。然后,我们会输入sys.executable变量,它包含到 Python 解释器的路径:

    清单 6. 导入 sys 模块

    $ python

    Python 2.2.2 (#1, Oct 28 2002, 17:22:19)

    [GCC 3.2 (Mandrake Linux 9.0 3.2-1mdk)] on linux2

    Type "help", "copyright", "credits" or "license" for more information.

    >>> import sys

    >>> sys.executable

    '/usr/local/bin/python'

    当输入一行只包含对象名称的代码时,Python 通过显示该对象的表示进行响应,对于简单对象,往往显示对象的值。在本例中,因为所显示的值是用引号括起来的,所以我们得到一条线索:sys.executable可能是字符串对象。稍后,我们将研究确定对象类型的其它更精确的方法,但只在 Python 提示符下输入对象名称是一种迅速而又方便的自省形式。

    让我们研究sys模块其它一些有用的属性。

    platform变量告诉我们现在处于什么操作系统上:

    sys.platform 属性

    >>> sys.platform

    'linux2'

    在当前的 Python 中,版本以字符串和元组(元组包含对象序列)来表示:

    清单 8. sys.version 和 sys.version_info 属性

    >>> sys.version

    '2.2.2 (#1, Oct 28 2002, 17:22:19) \n[GCC 3.2 (Mandrake Linux 9.0 3.2-1mdk)]'

    >>> sys.version_info

    (2, 2, 2, 'final', 0)

    maxint变量反映了可用的最大整数值:

    sys.maxint 属性

    >>> sys.maxint

    2147483647

    argv变量是一个包含命令行参数的列表(如果参数被指定的话)。第一项 argv[0] 是所运行脚本的路径。当我们以交互方式运行 Python 时,这个值是空字符串:

    清单 10. sys.argv 属性

    >>> sys.argv

    ['']

    当运行其它 Python shell 时,如 PyCrust(有关 PyCrust 更多信息的链接,请参阅参考资料),会看到类似于下面的信息:

    清单 11. 使用 PyCrust 时的 sys.argv 属性

    >>> sys.argv[0]

    '/home/pobrien/Code/PyCrust/PyCrustApp.py'

    path变量是模块搜索路径,Python 在导入期间将在其中的目录列表中寻找模块。最前面的空字符串''是指当前目录:

    清单 12. sys.path 属性

    >>> sys.path

    ['', '/home/pobrien/Code',

    '/usr/local/lib/python2.2',

    '/usr/local/lib/python2.2/plat-linux2',

    '/usr/local/lib/python2.2/lib-tk',

    '/usr/local/lib/python2.2/lib-dynload',

    '/usr/local/lib/python2.2/site-packages']

    modules变量是一个字典,它将当前已装入的所有模块的名称映射到模块对象。如您所见,缺省情况下,Python 装入一些特定的模块:

    清单 13. sys.modules 属性

    >>> sys.modules

    {'stat': ,

    '__future__': ,

    'copy_reg': ,

    'posixpath': ,

    'UserDict': ,

    'signal': ,

    'site': ,

    '__builtin__': ,

    'sys': ,

    'posix': ,

    'types': ,

    '__main__': ,

    'exceptions': ,

    'os': ,

    'os.path': }

    keyword 模块

    让我们返回到关于 Python

    关键字的问题。尽管帮助向我们显示了关键字列表,但事实证明一些帮助信息是硬编码的。关键字列表恰好是硬编码的,但毕竟它的自省程度不深。让我们研究一

    下,能否直接从 Python 标准库的某个模块中获取这个信息。如果在 Python 提示符下输入help('modules keywords'),则会看到如下信息:

    清单 14. 同时使用 modules 和 keywords 寻求帮助

    >>> help('modules keywords')

    Here is a list of matching modules. Enter any module name to get more help.

    keyword - Keywords (from "graminit.c")

    看起来,keyword模块好象包含关键字。在文本编辑器中打开keyword.py文件,我们可以看到,Python 确实可以把关键字列表显式地用作keyword模块的kwlist属性。在keyword模块的注释中,我们还可以看到,该模块是根据 Python 本身的源代码自动生成的,这可以保证其关键字列表是准确而完整的:

    清单 15. keyword 模块的关键字列表

    >>> import keyword

    >>> keyword.kwlist

    ['and', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else',

    'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is',

    'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'yield']

    dir() 函数

    尽管查找和导入模块相对容易,但要记住每个模块包含什么却不是这么简单。您并不希望总是必须查看源代码来找出答案。幸运的是,Python 提供了一种方法,可以使用内置的dir()函数来检查模块(以及其它对象)的内容。

    dir()函数可能是 Python 自省机制中最著名的部分了。它返回传递给它的任何对象的属性名称经过排序的列表。如果不指定对象,则dir()返回当前作用域中的名称。让我们将dir()函数应用于keyword模块,并观察它揭示了什么:

    清单 16. keyword 模块的属性

    >>> dir(keyword)

    ['__all__', '__builtins__', '__doc__', '__file__', '__name__',

    'iskeyword', 'keyword', 'kwdict', 'kwlist', 'main']

    那么将它应用于我们先前讨论的sys模块会怎么样呢?

    清单 17. sys 模块的属性

    >>> dir(sys)

    ['__displayhook__', '__doc__', '__excepthook__', '__name__', '__stderr__',

    '__stdin__', '__stdout__', '_getframe', 'argv', 'builtin_module_names',

    'byteorder', 'copyright', 'displayhook', 'exc_info', 'exc_type', 'excepthook',

    'exec_prefix', 'executable', 'exit', 'getdefaultencoding', 'getdlopenflags',

    'getrecursionlimit', 'getrefcount', 'hexversion', 'last_traceback',

    'last_type', 'last_value', 'maxint', 'maxunicode', 'modules', 'path',

    'platform', 'prefix', 'ps1', 'ps2', 'setcheckinterval', 'setdlopenflags',

    'setprofile', 'setrecursionlimit', 'settrace', 'stderr', 'stdin', 'stdout',

    'version', 'version_info', 'warnoptions']

    如果不带任何参数,则dir()返回当前作用域中的名称。请注意,因为我们先前导入了keyword和sys,所以它们出现在列表中。导入模块将把该模块的名称添加到当前作用域:

    清单 18. 当前作用域中的名称

    >>> dir()

    ['__builtins__', '__doc__', '__name__', 'keyword', 'sys']

    我们曾经提到dir()函数是内置函数,这意味着我们不必为了使用该函数而导入模块。不必做任何操作,Python 就可识别内置函数。现在,我们看到调用dir()后返回了这个名称__builtins__。也许此处有连接。让我们在 Python 提示符下输入名称__builtins__,并观察 Python 是否会告诉我们关于它的任何有趣的事情:

    清单 19. __builtins__ 是什么?

    >>> __builtins__

    因此__builtins__看起来象是当前作用域中绑定到名为__builtin__的模块对象的名称。(因为模块不是只有多个单一值的简单对象,所以 Python 改在尖括号中显示关于模块的信息。)注:如果您在磁盘上寻找__builtin__.py文件,将空手而归。这个特殊的模块对象是 Python 解释器凭空创建的,因为它包含着解释器始终可用的项。尽管看不到物理文件,但我们仍可以将dir()函数应用于这个对象,以观察所有内置函数、错误对象以及它所包含的几个杂项属性。

    清单 20. __builtins__ 模块的属性

    >>> dir(__builtins__)

    ['ArithmeticError', 'AssertionError', 'AttributeError', 'DeprecationWarning',

    'EOFError', 'Ellipsis', 'EnvironmentError', 'Exception', 'False',

    'FloatingPointError', 'IOError', 'ImportError', 'IndentationError',

    'IndexError', 'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError',

    'NameError', 'None', 'NotImplemented', 'NotImplementedError', 'OSError',

    'OverflowError', 'OverflowWarning', 'ReferenceError', 'RuntimeError',

    'RuntimeWarning', 'StandardError', 'StopIteration', 'SyntaxError',

    'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'True', 'TypeError',

    'UnboundLocalError', 'UnicodeError', 'UserWarning', 'ValueError', 'Warning',

    'ZeroDivisionError', '_', '__debug__', '__doc__', '__import__', '__name__',

    'abs', 'apply', 'bool', 'buffer', 'callable', 'chr', 'classmethod', 'cmp',

    'coerce', 'compile', 'complex', 'copyright', 'credits', 'delattr', 'dict',

    'dir', 'divmod', 'eval', 'execfile', 'exit', 'file', 'filter', 'float',

    'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', 'input', 'int',

    'intern', 'isinstance', 'issubclass', 'iter', 'len', 'license', 'list',

    'locals', 'long', 'map', 'max', 'min', 'object', 'oct', 'open', 'ord', 'pow',

    'property', 'quit', 'range', 'raw_input', 'reduce', 'reload', 'repr', 'round',

    'setattr', 'slice', 'staticmethod', 'str', 'super', 'tuple', 'type', 'unichr',

    'unicode', 'vars', 'xrange', 'zip']

    dir()函数适用于所有对象类型,包括字符串、整数、列表、元组、字典、函数、定制类、类实例和类方法。让我们将dir()应用于字符串对象,并观察 Python 返回什么。如您所见,即使简单的 Python 字符串也有许多属性:

    清单 21. 字符串属性

    >>> dir('this is a string')

    ['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__',

    '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__',

    '__hash__', '__init__', '__le__', '__len__', '__lt__', '__mul__', '__ne__',

    '__new__', '__reduce__', '__repr__', '__rmul__', '__setattr__', '__str__',

    'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs',

    'find', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace',

    'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'replace', 'rfind',

    'rindex', 'rjust', 'rstrip', 'split', 'splitlines', 'startswith', 'strip',

    'swapcase', 'title', 'translate', 'upper', 'zfill']

    自己尝试下列示例以观察它们返回什么。注:#字符标记注释的开始。Python 将忽略从注释开始部分到该行结束之间的所有内容:

    清单 22. 将 dir() 运用于其它对象

    dir(42) # Integer (and the meaning of life)

    dir([]) # List (an empty list, actually)

    dir(()) # Tuple (also empty)

    dir({}) # Dictionary (ditto)

    dir(dir) # Function (functions are also objects)

    为了说明 Python 自省能力的动态本质,让我们研究将dir()运用于定制类和一些类实例的示例。我们将以交互方式定义自己的类,创建一些类的实例,仅向其中一个实例添加唯一的属性,并观察 Python 能否一直保存所有这些。以下是结果:

    清单 23. 将 dir() 运用于定制类、类实例和属性

    >>> class Person(object):

    ... """Person class."""

    ... def __init__(self, name, age):

    ... self.name = name

    ... self.age = age

    ... def intro(self):

    ... """Return an introduction."""

    ... return "Hello, my name is %s and I'm %s." % (self.name, self.age)

    ...

    >>> bob = Person("Robert", 35) # Create a Person instance

    >>> joe = Person("Joseph", 17) # Create another

    >>> joe.sport = "football" # Assign a new attribute to one instance

    >>> dir(Person) # Attributes of the Person class

    ['__class__', '__delattr__', '__dict__', '__doc__', '__getattribute__',

    '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__repr__',

    '__setattr__', '__str__', '__weakref__', 'intro']

    >>> dir(bob) # Attributes of bob

    ['__class__', '__delattr__', '__dict__', '__doc__', '__getattribute__',

    '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__repr__',

    '__setattr__', '__str__', '__weakref__', 'age', 'intro', 'name']

    >>> dir(joe) # Note that joe has an additional attribute

    ['__class__', '__delattr__', '__dict__', '__doc__', '__getattribute__',

    '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__repr__',

    '__setattr__', '__str__', '__weakref__', 'age', 'intro', 'name', 'sport']

    >>> bob.intro() # Calling bob's intro method

    "Hello, my name is Robert and I'm 35."

    >>> dir(bob.intro) # Attributes of the intro method

    ['__call__', '__class__', '__cmp__', '__delattr__', '__doc__', '__get__',

    '__getattribute__', '__hash__', '__init__', '__new__', '__reduce__',

    '__repr__', '__setattr__', '__str__', 'im_class', 'im_func', 'im_self']

    文档字符串

    在许多dir()示例中,您可能会注意到的一个属性是__doc__属性。这个属性是一个字符串,它包含了描述对象的注释。Python 称之为文档字符串或 docstring,以下是其工作原理。如果模块、类、方法或函数定义的第一条语句是字符串,那么该字符串会作为对象的__doc__属性与该对象关联起来。例如,看一下__builtins__对象的文档字符串。因为文档字符串通常包含嵌入的换行\n,我们将使用 Python 的print语句,以便输出更易于阅读:

    清单 24. 模块文档字符串

    >>> print __builtins__.__doc__ # Module docstring

    Built-in functions, exceptions, and other objects.

    Noteworthy: None is the `nil' object; Ellipsis represents `...' in slices.

    Python 甚至再次维持了在 Python shell 中以交互方式定义的类和方法上的文档字符串。让我们研究Person类及其intro方法的文档字符串:

    清单 25. 类和方法文档字符串

    >>> Person.__doc__ # Class docstring

    'Person class.'

    >>> Person.intro.__doc__ # Class method docstring

    'Return an introduction.'

    因为文档字符串提供了如此有价值的信息,所以许多 Python 开发环境都有自动显示对象的文档字符串的方法。让我们再看一个dir()函数的文档字符串:

    清单 26. 函数文档字符串

    >>> print dir.__doc__ # Function docstring

    dir([object]) -> list of strings

    Return an alphabetized list of names comprising (some of) the attributes

    of the given object, and of attributes reachable from it:

    No argument: the names in the current scope.

    Module object: the module attributes.

    Type or class object: its attributes, and recursively the attributes of

    its bases.

    Otherwise: its attributes, its class's attributes, and recursively the

    attributes of its class's base classes.

    自省揭示了关于程序对象的有用信息。Python 是动态的面向对象的编程语言,提供了很棒的自省支持。本文展示了该语言的许多能力,从最基本形式的帮助到较为高级形式的调查。

    2002 年 12 月 26 日

    内容

    检查 Python 对象

    我们好几次提到了“对象(object)”这个词,但一直没有真正定义它。编程环境中的对象很象现实世界中的对象。实际的对象有一定的形状、大小、重量和

    其它特征。实际的对象还能够对其环境进行响应、与其它对象交互或执行任务。计算机中的对象试图模拟我们身边现实世界中的对象,包括象文档、日程表和业务过

    程这样的抽象对象。

    类似于实际的对象,几个计算机对象可能共享共同的特征,同时保持它们自己相对较小的变异特征。想一想您在书店中看到的书籍。书籍的每个物理副本都可能有污

    迹、几张破损的书页或唯一的标识号。尽管每本书都是唯一的对象,但都拥有相同标题的每本书都只是原始模板的实例,并保留了原始模板的大多数特征。

    对于面向对象的类和类实例也是如此。例如,可以看到每个 Python 字符串都被赋予了一些属性,dir() 函数揭示了这些属性。在前一个示例中,我们定义了自己的 Person 类,它担任创建个别 Person 实例的模板,每个实例都有自己的 name 和 age 值,同时共享自我介绍的能力。这就是面向对象。

    于是在计算机术语中,对象是拥有标识和值的事物,属于特定类型、具有特定特征和以特定方式执行操作。并且,对象从一个或多个父类继承了它们的许多属性。除了关键字和特殊符号(象运算符,如 +、-、*、**、/、%、 等)外,Python 中的所有东西都是对象。Python 具有一组丰富的对象类型:字符串、整数、浮点、列表、元组、字典、函数、类、类实例、模块、文件等。

    当您有一个任意的对象(也许是一个作为参数传递给函数的对象)时,可能希望知道一些关于该对象的情况。在本节中,我们将向您展示如何让 Python 对象回答如下问题:对象的名称是什么?

    这是哪种类型的对象?

    对象知道些什么?

    对象能做些什么?

    对象的父对象是谁?

    名称

    并非所有对象都有名称,但那些有名称的对象都将名称存储在其 __name__ 属性中。注:名称是从对象而不是引用该对象的变量中派生的。下面这个示例着重说明了这种区别:

    清单 27. 名称中有什么?

    $ python

    Python 2.2.2 (#1, Oct 28 2002, 17:22:19)

    [GCC 3.2 (Mandrake Linux 9.0 3.2-1mdk)] on linux2

    Type "help", "copyright", "credits" or "license" for more information.

    >>> dir() # The dir() function

    ['__builtins__', '__doc__', '__name__']

    >>> directory = dir # Create a new variable

    >>> directory() # Works just like the original object

    ['__builtins__', '__doc__', '__name__', 'directory']

    >>> dir.__name__ # What's your name?

    'dir'

    >>> directory.__name__ # My name is the same

    'dir'

    >>> __name__ # And now for something completely different

    '__main__'

    模块拥有名称,Python 解释器本身被认为是顶级模块或主模块。当以交互的方式运行 Python 时,局部 __name__ 变量被赋予值 '__main__'。同样地,当从命令行执行 Python 模块,而不是将其导入另一个模块时,其 __name__ 属性被赋予值 '__main__' ,而不是该模块的实际名称。这样,模块可以查看其自身的 __name__ 值来自行确定它们自己正被如何使用,是作为另一个程序的支持,还是作为从命令行执行的主应用程序。因此,下面这条惯用的语句在 Python 模块中是很常见的:

    清单 28. 用于执行或导入的测试

    if __name__ == '__main__':

    # Do something appropriate here, like calling a

    # main() function defined elsewhere in this module.

    main()

    else:

    # Do nothing. This module has been imported by another

    # module that wants to make use of the functions,

    # classes and other useful bits it has defined.

    类型

    type() 函数有助于我们确定对象是字符串还是整数,或是其它类型的对象。它通过返回类型对象来做到这一点,可以将这个类型对象与 types 模块中定义的类型相比较:

    清单 29. 我是您的类型吗?

    >>> import types

    >>> print types.__doc__

    Define names for all type symbols known in the standard interpreter.

    Types that are part of optional modules (e.g. array) are not listed.

    >>> dir(types)

    ['BufferType', 'BuiltinFunctionType', 'BuiltinMethodType', 'ClassType',

    'CodeType', 'ComplexType', 'DictProxyType', 'DictType', 'DictionaryType',

    'EllipsisType', 'FileType', 'FloatType', 'FrameType', 'FunctionType',

    'GeneratorType', 'InstanceType', 'IntType', 'LambdaType', 'ListType',

    'LongType', 'MethodType', 'ModuleType', 'NoneType', 'ObjectType', 'SliceType',

    'StringType', 'StringTypes', 'TracebackType', 'TupleType', 'TypeType',

    'UnboundMethodType', 'UnicodeType', 'XRangeType', '__builtins__', '__doc__',

    '__file__', '__name__']

    >>> s = 'a sample string'

    >>> type(s)

    >>> if type(s) is types.StringType: print "s is a string"

    ...

    s is a string

    >>> type(42)

    >>> type([])

    >>> type({})

    >>> type(dir)

    标识

    先前我们说过,每个对象都有标识、类型和值。值得注意的是,可能有多个变量引用同一对象,同样地,变量可以引用看起来相似(有相同的类型和值),但拥有截然不同标识的多个对象。当更改对象时(如将某一项添加到列表),这种关于对象标识的概念尤其重要,如在下面的示例中,blist 和 clist 变量引用同一个列表对象。正如您在示例中所见,id() 函数给任何给定对象返回唯一的标识符:

    清单 30. 目的地……

    >>> print id.__doc__

    id(object) -> integer

    Return the identity of an object. This is guaranteed to be unique among

    simultaneously existing objects. (Hint: it's the object's memory address.)

    >>> alist = [1, 2, 3]

    >>> blist = [1, 2, 3]

    >>> clist = blist

    >>> clist

    [1, 2, 3]

    >>> blist

    [1, 2, 3]

    >>> alist

    [1, 2, 3]

    >>> id(alist)

    145381412

    >>> id(blist)

    140406428

    >>> id(clist)

    140406428

    >>> alist is blist # Returns 1 if True, 0 if False

    0

    >>> blist is clist # Ditto

    1

    >>> clist.append(4) # Add an item to the end of the list

    >>> clist

    [1, 2, 3, 4]

    >>> blist # Same, because they both point to the same object

    [1, 2, 3, 4]

    >>> alist # This one only looked the same initially

    [1, 2, 3]

    属性

    我们已经看到对象拥有属性,并且 dir() 函数会返回这些属性的列表。但是,有时我们只想测试一个或多个属性是否存在。如果对象具有我们正在考虑的属性,那么通常希望只检索该属性。这个任务可以由 hasattr() 和 getattr() 函数来完成,如本例所示:

    清单 31. 具有一个属性;获得一个属性

    >>> print hasattr.__doc__

    hasattr(object, name) -> Boolean

    Return whether the object has an attribute with the given name.

    (This is done by calling getattr(object, name) and catching exceptions.)

    >>> print getattr.__doc__

    getattr(object, name[, default]) -> value

    Get a named attribute from an object; getattr(x, 'y') is equivalent to x.y.

    When a default argument is given, it is returned when the attribute doesn't

    exist; without it, an exception is raised in that case.

    >>> hasattr(id, '__doc__')

    1

    >>> print getattr(id, '__doc__')

    id(object) -> integer

    Return the identity of an object. This is guaranteed to be unique among

    simultaneously existing objects. (Hint: it's the object's memory address.)

    可调用

    可以调用表示潜在行为(函数和方法)的对象。可以用 callable() 函数测试对象的可调用性:

    清单 32. 您能为我做些事情吗?

    >>> print callable.__doc__

    callable(object) -> Boolean

    Return whether the object is callable (i.e., some kind of function).

    Note that classes are callable, as are instances with a __call__() method.

    >>> callable('a string')

    0

    >>> callable(dir)

    1

    实例

    在 type() 函数提供对象的类型时,还可以使用 isinstance() 函数测试对象,以确定它是否是某个特定类型或定制类的实例:

    清单 33. 您是那些实例中的一个吗?

    >>> print isinstance.__doc__

    isinstance(object, class-or-type-or-tuple) -> Boolean

    Return whether an object is an instance of a class or of a subclass thereof.

    With a type as second argument, return whether that is the object's type.

    The form using a tuple, isinstance(x, (A, B, ...)), is a shortcut for

    isinstance(x, A) or isinstance(x, B) or ... (etc.).

    >>> isinstance(42, str)

    0

    >>> isinstance('a string', int)

    0

    >>> isinstance(42, int)

    1

    >>> isinstance('a string', str)

    1

    子类

    我们先前提到过,定制类的实例从该类继承了属性。在类这一级别,可以根据一个类来定义另一个类,同样地,这个新类会按照层次化的方式继承属性。Python 甚至支持多重继承,多重继承意味着可以用多个父类来定义一个类,这个新类继承了多个父类。issubclass() 函数使我们可以查看一个类是不是继承了另一个类:

    清单 34. 您是我母亲吗?

    >>> print issubclass.__doc__

    issubclass(C, B) -> Boolean

    Return whether class C is a subclass (i.e., a derived class) of class B.

    >>> class SuperHero(Person): # SuperHero inherits from Person...

    ... def intro(self): # but with a new SuperHero intro

    ... """Return an introduction."""

    ... return "Hello, I'm SuperHero %s and I'm %s." % (self.name, self.age)

    ...

    >>> issubclass(SuperHero, Person)

    1

    >>> issubclass(Person, SuperHero)

    0

    >>>

    检查时间

    让我们将上一节中讨论的几种检查技术结合起来。为了做到这一点,要定义自己的函数 — interrogate(),它打印有关传递给它的任何对象的各种信息。以下是代码,后面是其用法的几个示例:

    清单 35. 谁也没料到它

    >>> def interrogate(item):

    ... """Print useful information about item."""

    ... if hasattr(item, '__name__'):

    ... print "NAME: ", item.__name__

    ... if hasattr(item, '__class__'):

    ... print "CLASS: ", item.__class__.__name__

    ... print "ID: ", id(item)

    ... print "TYPE: ", type(item)

    ... print "VALUE: ", repr(item)

    ... print "CALLABLE:",

    ... if callable(item):

    ... print "Yes"

    ... else:

    ... print "No"

    ... if hasattr(item, '__doc__'):

    ... doc = getattr(item, '__doc__')

    ... doc = doc.strip() # Remove leading/trailing whitespace.

    ... firstline = doc.split('\n')[0]

    ... print "DOC: ", firstline

    ...

    >>> interrogate('a string') # String object

    CLASS: str

    ID: 141462040

    TYPE: VALUE: 'a string'

    CALLABLE: No

    DOC: str(object) -> string

    >>> interrogate(42) # Integer object

    CLASS: int

    ID: 135447416

    TYPE: VALUE: 42

    CALLABLE: No

    DOC: int(x[, base]) -> integer

    >>> interrogate(interrogate) # User-defined function object

    NAME: interrogate

    CLASS: function

    ID: 141444892

    TYPE: VALUE: CALLABLE: Yes

    DOC: Print useful information about item.

    正如您在最后一个示例中所看到的,interrogate() 函数甚至可以应用于它本身。您没有再比它更具“自省性”的工具了。

    结束语

    谁知道自省可以变得这么简单而又如此有价值?可是,我在结束时必须提出警告:不要将自省的结果误认为是万能的。有经验的 Python

    程序员知道:他们不知道的东西总是比已知的更多,因此根本不可能是万能的。编程行为产生的问题多于答案。关于 Python

    的唯一优点(正如我们今天在本文中所见)是它确实回答了人们的问题。至于我本人,觉得您不必因为我帮助您了解了这些 Python

    必须提供的内容而酬谢我。用 Python 编程自有回报。我从爱好 Python 的同伴处获得的帮助也是不计报酬的。

    展开全文
  • Microsoft Help Viewer 1.0 安装完成文件

    热门讨论 2013-01-25 20:18:18
    vs2010的Microsoft Help Viewer无法独立安装,如果已安装的Microsoft Help Viewer出现问题会非常麻烦,这个是安装完成的文件,如果Microsoft Help Viewer出现问题,用解压后的文件替换原来的文件就可以顺利安装vs...
  • win7旗舰版64位帮助和支持文件Help (修复C盘help文件夹下 文件丢失导致帮助错误的问题) 解压包分2卷---2卷都下载好 解压后的文件 复制到 系统盘/windows/help 目录下. 亲测
  • Mysql命令帮助(使用help或者help contents)
  • pb12.5help chm文件

    2015-11-10 12:37:32
    pb12.5help chm文件,解决PB help在win10,win8.1下不能打开help,直接打开此chm就可以查找了
  • qt help 中文版

    2012-07-16 14:18:27
    qt help的中文版本,qt4.0help英文版的翻译,简单易懂,学习qt的好工具
  • HTML Help WorkShop制作chm图解

    万次阅读 热门讨论 2019-08-13 13:49:57
    在使用的过程中,我使用了微软提供的HTML Help WorkShop这个软件,可惜是英文的,为了方便广大对英语不是很熟悉的朋友,本人写了一份制作图解,希望对大家有帮助。   图1 HTML Help WorkShop运行界面 图2 新建...

     

    一位做共享软件做得很成功的同行说过:“一个好的共享软件,首先操作要简单容易上手,其次一定附带一个详尽的帮助手册。”可见,对于一个软件来说,帮助文件的重要性。不过大部分程序人员(包括我)都忽略了帮助文件的重要性,都认为自己做的软件相当简单,一看就会,殊不知我们是一个连底层都了解的开发人员。

    前段时间本人做了一个图片处理软件,免费给一些同学和朋友使用,很多人的反馈是不知道怎么用,于是本人花时间做了一个帮助手册,得到了很多好的反馈,本人准备在结合他们的反馈意见之后发布一个Realease版本。在使用的过程中,我使用了微软提供的HTML Help WorkShop这个软件,可惜是英文的,为了方便广大对英语不是很熟悉的朋友,本人写了一份制作图解,希望对大家有帮助。
     
    图1 HTML Help WorkShop运行界面


    图2 新建一个工程


    图3 是否从WinHelp项目转换


    图4 设置项目文件的保存位置


    图5 如果已经制作了hhc、hhk和htm文件,可以勾选上面的相应项


    图6 新建帮助文件工程向导结束


    图7 新建工程向导结束之后的界面


    图8 contens选项卡


    图9 添加一个内容页


    图10 指定内容页的位置


    图11 选取内容页


    图12 填写标题(对比图9)


    图13 Index选项卡


    图14 添加Index向导第一步


    图15 添加Index向导第二步


    图16 填写完成之后的状况


    图17 指定chm文件的起始页


    图18 编译生成chm文件

     

    说明:在制作过程中用到了.hhp、.hhk和.hhc三种文件,它们的作用分别如下:

    .hhp:保存项目文件配置的有关内容,如便以后生成chm的语言以及打开chm的起始页;

    .hhk:保存关键词索引目录的内容,其实是一个html文件,可以用记事本等打开查看和编辑。

    .hhc:保存内容页的配置。其实是一个html文件,可以用记事本等打开查看和编辑。

    通过记事本查看上面文件的内容之后,如果我们以网页的标题作为索引关键词,我们会发现.hhk和.hhc,这样可以直接copy,省去很多步骤。

    附:.hhp文件内容(项目文件内容)

    [OPTIONS]
    Auto Index=Yes
    Compatibility
    =1.1 or later
    Compiled file
    =DotNet.chm
    Contents file
    =Table of Contents.hhc
    Default topic
    =dotnethelpIndex.html
    Display compile progress
    =No
    Index file
    =Index.hhk
    Language
    =0x804 中文(中国)


    [INFOTYPES]

    Index.hhk文件(索引文件资源)内容

    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
    <HTML>
    <HEAD>
    <meta name="GENERATOR" content="Microsoft&reg; HTML Help Workshop 4.1">
    <!-- Sitemap 1.0 -->
    </HEAD><BODY>
    <UL>
    <LI> <OBJECT type="text/sitemap">
            <param name="Name" value="首页">
            <param name="Local" value="dotnethelpIndex.html">
            </OBJECT>
        <LI> <OBJECT type="text/sitemap">
            <param name="Name" value="C#调用API">
            <param name="Local" value="dotnethelpC#调用API.html">
            </OBJECT>
        <LI> <OBJECT type="text/sitemap">
            <param name="Name" value="C#调用API详解">
            <param name="Local" value="dotnethelpC#调用API详解.html">
            </OBJECT>
        <LI> <OBJECT type="text/sitemap">
            <param name="Name" value="C#中调用Windows API时的数据类型对应关系">
            <param name="Local" value="dotnethelpC#中调用Windows API时的数据类型对应关系.html">
            </OBJECT>
        <LI> <OBJECT type="text/sitemap">
            <param name="Name" value="自己用C#做屏保">
            <param name="Local" value="dotnethelp自己用C#做屏保.html">
            </OBJECT>
        <LI> <OBJECT type="text/sitemap">
            <param name="Name" value="基于C#实现用于显示照片的屏保">
            <param name="Local" value="dotnethelp基于C#实现用于显示照片的屏保.html">
            </OBJECT>
        <LI> <OBJECT type="text/sitemap">
            <param name="Name" value="NHibernate 小纸条">
            <param name="Local" value="dotnethelpNHibernate 小纸条.html">
            </OBJECT>
        <LI> <OBJECT type="text/sitemap">
            <param name="Name" value="用Nhibernate怎么实现数据的添加、删除、修改简单程序">
            <param name="Local" value="dotnethelp用Nhibernate怎么实现数据的添加、删除、修改简单程序.html">
            </OBJECT>
        <LI> <OBJECT type="text/sitemap">
            <param name="Name" value="VS2005打包时加入卸载功能">
            <param name="Local" value="dotnethelpVS2005打包时加入卸载功能.html">
            </OBJECT>
        <LI> <OBJECT type="text/sitemap">
            <param name="Name" value="VS2005项目的安装与布署">
            <param name="Local" value="dotnethelpVS2005项目的安装与布署.html">
            </OBJECT>
        <LI> <OBJECT type="text/sitemap">
            <param name="Name" value="VS 2005中安装包的制作">
            <param name="Local" value="dotnethelpVS 2005中安装包的制作.html">
            </OBJECT>
        <LI> <OBJECT type="text/sitemap">
            <param name="Name" value="使用VS2005制作安装包">
            <param name="Local" value="dotnethelp使用VS2005制作安装包.html">
            </OBJECT>
        <LI> <OBJECT type="text/sitemap">
            <param name="Name" value="安装程序时读取路径的问题">
            <param name="Local" value="dotnethelp安装程序时读取路径的问题.html">
            </OBJECT>
        <LI> <OBJECT type="text/sitemap">
            <param name="Name" value="iexpress的作用及使用方法">
            <param name="Local" value="dotnethelpiexpress的作用及使用方法.html">
            </OBJECT>
        <LI> <OBJECT type="text/sitemap">
            <param name="Name" value="把.NET程序部署到没有安装.NET Framwork的机器上">
            <param name="Local" value="dotnethelp把.NET程序部署到没有安装.NET Framwork的机器上.html">
            </OBJECT>
        <LI> <OBJECT type="text/sitemap">
            <param name="Name" value="VS2005怎么制作安装包">
            <param name="Local" value="dotnethelp初学者问一下,VS2005怎么制作安装包.html">
            </OBJECT>
        <LI> <OBJECT type="text/sitemap">
            <param name="Name" value="日志记录组件[Log4net]详细介绍">
            <param name="Local" value="dotnethelp日志记录组件[Log4net]详细介绍.html">
            </OBJECT>
        <LI> <OBJECT type="text/sitemap">
            <param name="Name" value="HTML Help WorkShop帮助手册">
            <param name="Local" value="dotnethelpHTML Help WorkShop帮助手册.html">
            </OBJECT>
    </UL>
    </BODY></HTML>

    Table of Contents.hhc文件(内容页项目资源)内容

    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
    <HTML>
    <HEAD>
    <meta name="GENERATOR" content="Microsoft&reg; HTML Help Workshop 4.1">
    <!-- Sitemap 1.0 -->
    </HEAD><BODY>
    <OBJECT type="text/site properties">
        <param name="ImageType" value="Folder">
    </OBJECT>
    <UL>
        <LI> <OBJECT type="text/sitemap">
            <param name="Name" value="首页">
            <param name="Local" value="dotnethelpIndex.html">
            </OBJECT>
        <LI> <OBJECT type="text/sitemap">
            <param name="Name" value="C#调用API">
            <param name="Local" value="dotnethelpC#调用API.html">
            </OBJECT>
        <LI> <OBJECT type="text/sitemap">
            <param name="Name" value="C#调用API详解">
            <param name="Local" value="dotnethelpC#调用API详解.html">
            </OBJECT>
        <LI> <OBJECT type="text/sitemap">
            <param name="Name" value="C#中调用Windows API时的数据类型对应关系">
            <param name="Local" value="dotnethelpC#中调用Windows API时的数据类型对应关系.html">
            </OBJECT>
        <LI> <OBJECT type="text/sitemap">
            <param name="Name" value="自己用C#做屏保">
            <param name="Local" value="dotnethelp自己用C#做屏保.html">
            </OBJECT>
        <LI> <OBJECT type="text/sitemap">
            <param name="Name" value="基于C#实现用于显示照片的屏保">
            <param name="Local" value="dotnethelp基于C#实现用于显示照片的屏保.html">
            </OBJECT>
        <LI> <OBJECT type="text/sitemap">
            <param name="Name" value="NHibernate 小纸条">
            <param name="Local" value="dotnethelpNHibernate 小纸条.html">
            </OBJECT>
        <LI> <OBJECT type="text/sitemap">
            <param name="Name" value="用Nhibernate怎么实现数据的添加、删除、修改简单程序">
            <param name="Local" value="dotnethelp用Nhibernate怎么实现数据的添加、删除、修改简单程序.html">
            </OBJECT>
        <LI> <OBJECT type="text/sitemap">
            <param name="Name" value="VS2005打包时加入卸载功能">
            <param name="Local" value="dotnethelpVS2005打包时加入卸载功能.html">
            </OBJECT>
        <LI> <OBJECT type="text/sitemap">
            <param name="Name" value="VS2005项目的安装与布署">
            <param name="Local" value="dotnethelpVS2005项目的安装与布署.html">
            </OBJECT>
        <LI> <OBJECT type="text/sitemap">
            <param name="Name" value="VS 2005中安装包的制作">
            <param name="Local" value="dotnethelpVS 2005中安装包的制作.html">
            </OBJECT>
        <LI> <OBJECT type="text/sitemap">
            <param name="Name" value="使用VS2005制作安装包">
            <param name="Local" value="dotnethelp使用VS2005制作安装包.html">
            </OBJECT>
        <LI> <OBJECT type="text/sitemap">
            <param name="Name" value="安装程序时读取路径的问题">
            <param name="Local" value="dotnethelp安装程序时读取路径的问题.html">
            </OBJECT>
        <LI> <OBJECT type="text/sitemap">
            <param name="Name" value="iexpress的作用及使用方法">
            <param name="Local" value="dotnethelpiexpress的作用及使用方法.html">
            </OBJECT>
        <LI> <OBJECT type="text/sitemap">
            <param name="Name" value="把.NET程序部署到没有安装.NET Framwork的机器上">
            <param name="Local" value="dotnethelp把.NET程序部署到没有安装.NET Framwork的机器上.html">
            </OBJECT>
        <LI> <OBJECT type="text/sitemap">
            <param name="Name" value="VS2005怎么制作安装包">
            <param name="Local" value="dotnethelp初学者问一下,VS2005怎么制作安装包.html">
            </OBJECT>
        <LI> <OBJECT type="text/sitemap">
            <param name="Name" value="日志记录组件[Log4net]详细介绍">
            <param name="Local" value="dotnethelp日志记录组件[Log4net]详细介绍.html">
            </OBJECT>
        <LI> <OBJECT type="text/sitemap">
            <param name="Name" value="HTML Help WorkShop帮助手册">
            <param name="Local" value="dotnethelpHTML Help WorkShop帮助手册.html">
            </OBJECT>
    </UL>
    </BODY></HTML>

    展开全文
  • Htmlhelp.lib

    热门讨论 2011-12-04 23:45:37
    Htmlhelp.lib 希望能给需要的帮助
  • 微软的Sandcastle和SandcastleHelpFileBuilder,可以根据注释自动生成帮助文档,只要是注释写得好,文档生成的就漂亮
  • HTML Help WorkShop中文汉化版

    热门讨论 2012-01-10 20:34:47
    HTML Help WorkShop中文汉化版,制作 CHM 文件的最佳工具。
  • ABAP SEARCH HELP增强

    2011-12-27 09:06:58
    ABAP 搜索帮助增强. 基于第一代, 步骤写的很清楚.
  • help 命令与 --help 参数 man 命令 info 命令 一、Linux帮助命令简介 Linux 系统的命令数量有上千个,每个命令又有若干个甚至数十个参数指出不同情景下的使用。 有一些命令是我们日常工作需要经常使用的,即便不是...

    目录

    • Linux帮助命令简介
    • help 命令与 --help 参数
    • man 命令
    • info 命令

    一、Linux帮助命令简介

    Linux 系统的命令数量有上千个,每个命令又有若干个甚至数十个参数指出不同情景下的使用。

    有一些命令是我们日常工作需要经常使用的,即便不是特意背命令,也会因熟能生巧而印象深刻。但是对于那些不熟悉的命令,或者是熟悉命令的不熟悉的参数呢?

    当然,我们不需要耗费大量精力去记忆这些命令和参数,只需要正确使用Linux 的帮助命令,就能够快速地定位到自己想要的命令和参数。

    Linux 的帮助命令主要包含三个:

    1. help 命令与 --help 参数
    2. man 命令
    3. info 命令

    接下来,将介绍这三个命令的使用方法及区别。

    二、help 命令与 --help 参数

    2.1 help 命令

    help 命令能够在控制台上打印出我们需要的命令的帮助信息,使用方式为:

    help <command>
    

    例如,我们要查看 cd 命令和 mv 命令的帮助命令,使用上述形式的 help 命令时能够得到如下输出:

    查看cd命令

    查看mv命令

    为什么会出现上述差异?为什么不能查看 mv 命令的帮助信息?这里需要引入一个“内建命令”和“外部命令”的概念

    2.2 内建命令与外部命令

    Linux 的内建命令是 shell 程序的一部分,Linux 系统加载运行时就被加载并驻留在系统内存里的,因此执行速度较快。

    Linux 的外部命令是通过额外安装获得的命令,不随系统一起被加载到内容中,运行速度慢但功能强大。

    使用 type 命令可以查看该命令是内建命令还是外部命令

    type <command>
    

    例如上文中,提及的 cd 命令和 mv 命令,我们看一下它们分别属于什么类型的命令

    cd 是一个内建命令

    mv 是一个外部命令
    从上述信息中,我们发现 cd 命令是一个内建命令,mv 命令是一个外部命令。多次尝试后,可以发现,上述形式的 help 命令只能用于内建命令的帮助信息查询。

    我们可以尝试查看 help 命令本身的帮助文档

    help help
    

    查看 help 的帮助文档

    不难看出,只有内建命令能够使用下述形式的 help 命令查询帮助文档。

    help [option] <command>
    

    2.3 – help 参数

    若是想用 help 来查询外部命令的帮助文档,上述形式是行不通的,但是可以用下述形式查询外部命令的帮助文档

    <command> --help
    

    **需要注意的是,这两个形式的 help 并不能完全等同。**前一种通过执行内建的 help 命令查看帮助文档,后一种是通过命令后携带参数 help 的方式来展示所查询命令的帮助文档。我们不妨尝试查询外部命令 mv 的帮助文档:

    mv --help
    

    mv  命令支持了--help

    不难发现,mv 命令支持了 --help 的参数,才能展示这个命令的帮助信息并退出。

    三、man 命令

    3.1 man 提供的帮助信息

    man 是 manual 的简写,与 help 命令和 --help 参数不同,使用 man 命令查询帮助手册时会进入 man page 界面,而非直接打印在控制台上。同时,相比与 help,man 命令的信息更全,help 则显示的信息简洁

    man [option] <command>
    

    例如,我们要查看 mv 命令的帮助信息

    man mv
    

    man 命令查看 mv 的帮助文档

    man page 中提供了关于 mv 命令的 “名字” 、 “概要” 、 “介绍” 等信息,还有诸如 “作者信息” 、 “更多” 等其他信息未在图中展示。具体包括:

    名称含义
    NAME命令名称及简要说明
    SYNOPSIS命令执行语法概要
    DESCRIPTION完整的命令说明
    OPTIONS列举所有可用的参数项
    COMMANDS当命令在执行的时候,可以在程序中执行的命令
    FILES这个命令所参考或链接的某些文件
    SEE ALSO有关这个命令的其他说明
    EXAMPLE一些可以参考的范例
    BUGS是否有相关的错误

    我们注意到,在第一行有 “MV(1)” 的字样,括号内的数字代表什么含义呢?它其实是对所查询信息的一个分类。

    数字代表含义
    1用户在shell环境中可操作的标准命令或可执行文件
    2系统内核调用的函数及工具
    3常用的库函数
    4设备文件与设备说明等
    5配置文件或文件格式
    6游戏等娱乐
    7协议信息等
    8系统管理员可用的管理命令
    9与 Linux 内核相关的文件文档

    3.2 man page 中的按键操作

    man 命令相比于 help 命令最大的优势在于用户可以在 man page 中,通过按键交互进行翻页、查找等操作。常见的按键操作如下所示。

    按键功能
    空格键翻页
    /str向后查找str字符串
    ?str向前查找str字符串
    n, Nn 为搜索到的下一个字符串,N 为搜索到的上一个字符串
    q退出 man page

    四、 info 命令

    4.1 info 提供的帮助信息

    info [option] <command>
    

    info 命令的功能基本与 man 命令相似,能够显示出命令的相关资料和信息。

    而与 man 命令稍有区别的是,一方面,info 命令可以获取所查询命令相关的更丰富的帮助信息;另一方面,info page 将文件数据进行段落拆分,并以 “节点” 的形式支撑整个页面框架,并将拆分的段落与节点对应,使得用户可以在节点间跳转而方便阅读每一个段落的内容。

    以 info info 为例,我们进入了关于命令 info 的 info page

    第一层:顶层节点,展示了关于 info 命令的基本信息及目录信息

    第一层 info page 的内容

    第二层:一级目录节点,展示了一级目录中的详细内容,其中可能包含了二级目录列表

    第二层 info page 的内容

    第三层:二级目录节点:展示了二级目录中的详细内容

    第三层 info page的内容

    以此类推。

    4.2 info page 中的按键操作

    info page 提供了翻页、节点跳转、搜索等交互操作。

    按键功能
    空格键向下翻一页
    回车键跳到下一个节点
    P跳到上一个节点
    U回到上一层节点
    回车键光标移动到下一层节点处,以回车键进入
    B跳到当前 info page 的第一个节点处
    E跳到当前 info page 的最后一个节点处
    /在 info page 中进行搜索
    Q退出 info page

    (完)

    我的公众号:多面手程序员

    我的知乎:多面手程序员

    欢迎各位关注与交流~

    若觉得本文对你有帮助,还请不吝点赞~

    展开全文
  • Python help()函数用法详解

    千次阅读 2020-12-09 02:16:09
    help函数是python的一个内置函数(python的内置函数可以直接调用,无需import),它是python自带的函数,任何时候都可以被使用。help函数能作什么、怎么使用help函数查看python模块中函数的用法,和使用help函数时需要...
  • Ansys中文help文档

    2011-03-24 21:52:28
    ansys 常用命令和单元的中文详解,配合ansys原版help使用,非常有帮助。
  • MySQL 的 help 命令你真的会用吗?

    千次阅读 2018-07-19 15:19:03
    MySQL 的帮助信息重要吗?不太重要!有用吗?有!就好比你在家洗澡的时候...help xxx" 语句来查看MySQL 自带的帮助信息。但你一定或多或少能碰到这样的场景:记不清某个语句的具体拼写了,只能模糊的记得几个字...
  • 对于vs.net的help library无法从磁盘安装且不可使用问题进行修改并重新安装
  • HtmlHelp调用chm帮助文档使用

    千次阅读 2018-11-17 18:32:27
    HtmlHelp调用chm帮助文档使用
  • 内涵help文件夹和help.exe文件
  • R语言的help

    千次阅读 2019-11-29 14:16:57
    R提供了大量的help文档,会很有帮助。 1. help.start() 执行函数help.start()会打开一个浏览器,可以在其中查看各种文档。有基本的R语言介绍,有关于数据的导入导出,还有怎么开发自己的package。 2. help(“sort”)...
  • Maven的maven-help-plugin插件详解

    千次阅读 2022-01-27 15:25:48
    执行下面的命令查看指定插件的详细信息: [~/Documents/IdeaProjects/demo02]$ mvn help:describe -Dplugin=org.apache.maven.plugins:maven-site-plugin:3.9.0 -Ddetail
  • python的help函数如何使用

    千次阅读 2020-06-18 18:34:43
    help函数能作什么、怎么使用help函数查看python模块学习中函数的用法,和使用help函数时需要注意哪些问题,下面来简单的说一下。 help函数能作什么 在使用python来编写代码时,会经常使用python调用函数、自带函数或...
  • 【Linux基础编程】help命令

    千次阅读 2020-07-04 09:49:28
    01.文章目录 文章目录01.文章目录02.帮助命令2.1 区别(Different)2.2 优点(Advantages)03....前面我们聊了聊man,现在我们再聊聊他的好兄弟help,首先看看他们的区别在哪里,为啥有两个命令来负责查询。 2.1 区别(Diffe
  • maven简介及使用help插件

    千次阅读 2018-11-26 16:35:37
    如果你想要 Help 插件输出完整的带有参数的目标列表,只要运行带有参数full 的 help:describe 目标就可以了,像这样: $ mvn help:describe -Dplugin=help -Dfull ... Group Id: org.apache.maven.plugins ...
  • help_help_help

    2010-05-31 00:20:32
    help_help_help_help_help
  • 我用了本书10.3.6的例子做两幅tif影像的配准,但是在运行到index_pairs = matchFeatures(features1, ...请键入 HELP MEMORY 查看选项。出错 cvalgMatchFeatures>metricSSD (line 352),scores = zeros(N1, N2, o...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,302,214
精华内容 520,885
关键字:

help

友情链接: MMn源码.zip