zoukankan      html  css  js  c++  java
  • python的__name__和dir()属性

    1、__name__属性

          一个模块被另一个程序第一次引入时,其主程序将运行。如果我们想在模块被引入时,模块中的某一程序块不执行,我们可以用__name__属性来使该程序块仅在该模块自身运行时执行。
    示例:

    #!/usr/bin/python
    # Filename: using_name.py

    if __name__ == '__main__':
    print '程序自身在运行'
    else:
    print '我来自另一模块'

    运行输出如下:

    $ python using_name.py
    程序自身在运行
    $ python
    >>> import using_name
    我来自另一模块
    >>>

    说明:
    每个模块都有一个__name__属性,当其值是'__main__'时,表明该模块自身在运行,否则是被引入。

    2、建造你自己的模块

    其实只要后缀是.py的python程序都是模块,建造模块就是写后缀是.py的python程序。
    示例如下:

    #!/usr/bin/python
    # Filename: mymodule.py

    def sayhi():#模块中定义的函数
    print '模块就是这样建造的.'

    version = '0.1'

    # 模块定义结束

    上面的mymodule.py就是一个模块,其中定义了一个函数sayhi()和变量version,它们可以被别的程序使用。下面用一个例子说明如何在别的程序中引入该模块中的功能。
    示例:

    #!/usr/bin/python
    # Filename: mymodule_demo.py

    import mymodule

    mymodule.sayhi()
    print 'Version', mymodule.version

    输出如下:

    $ python mymodule_demo.py
    模块就是这样建造的.
    Version 0.1

    说明:
    1、在以上程序中我们用import mymodule引入我们自己写的mymodule.py模块
    2、然后我们用mymodule.sayhi()和mymodule.version来使用mymodule.py模块中的函数sayhi()和变量version

    3、要把mymodule.py文件路径包含在sys.path中。

    3、dir()函数

    我们可以用python内建的dir()函数去列出一个模块所定义的所有属性。这些属性是函数名、类名、变量名。
    当我们为dir()提供一个模块名时,它返回该模块中定义的属性,如果我们不为dir()提供任何参数,它将返回当前模块所定义的属性。
    示例如下:

    $ python
    >>> import sys
    >>> dir(sys) # 得到一个sys中定义的属性列表
    ['__displayhook__', '__doc__', '__excepthook__', '__name__', '__stderr__', '__stdin__', '__stdout__', '_getframe', 'api_version', 'argv', 'builtin_module_names', 'byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'exc_clear', 'exc_info', 'exc_type', 'excepthook', 'exec_prefix', 'executable', 'exit', 'getcheckinterval', 'getdefaultencoding', 'getdlopenflags', 'getfilesystemencoding', 'getrecursionlimit', 'getrefcount', 'hexversion', 'maxint', 'maxunicode', 'meta_path','modules', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'ps1', 'ps2', 'setcheckinterval', 'setdlopenflags', 'setprofile', 'setrecursionlimit', 'settrace', 'stderr', 'stdin', 'stdout', 'version', 'version_info', 'warnoptions']
    >>> dir() # 得到一个当前模块中定义的属性列表
    ['__builtins__', '__doc__', '__name__', 'sys']
    >>>
    >>> a = 5 # 建立一个新的变量 'a'
    >>> dir()
    ['__builtins__', '__doc__', '__name__', 'a', 'sys']
    >>>
    >>> del a # 删除变量名a
    >>>
    >>> dir()
    ['__builtins__', '__doc__', '__name__', 'sys']
    >>>

  • 相关阅读:
    android 使用Activity做窗口弹出(模拟Dialog)
    解决ListView 跟ScroolView 共存 listItem.measure(0, 0) 空指针
    基于iview使用jsx扩展成可编辑的表格
    vue token 过期处理
    组件通信 eventtBus
    组件通信 $ref
    组件通信 Provide&&inject
    Vue 生命周期
    layui token 过期 重新登陆
    Python(3) 进制转换
  • 原文地址:https://www.cnblogs.com/cj2014/p/3867929.html
Copyright © 2011-2022 走看看