• [py]python的继承体系-源码目录结构


    python3安装目录

    pip install virtualenv
    pip install virtualenvwrapper
    pip install virtualenvwrapper-win
    mkvirtualenv --python=C:Python27python.exe py27env
    exit
    mkvirtualenv --python=C:Python36python.exe py36env
    workon  #查看刚刚创建的环境,mkvirtualenv  -h查看帮助
    


    pip安装的第三方包存放位置site-packages

    安装flask后

    pip install -i https://pypi.douban.com/simple flask
    

    python模块查找顺序

    ['', 
    'C:\Users\Administrator\Envs\py36test\Scripts\python36.zip',  -->系统里没找到
    'C:\Users\Administrator\Envs\py36test\DLLs',                   -->虚拟环境貌似不存在
    'C:\Users\Administrator\Envs\py36test\lib',                    --> 在lib目录搜模块
    'C:\Users\Administrator\Envs\py36test\Scripts', 
    'C:\Python36\Lib',   ->非虚拟环境里找
    'C:\Python36\DLLs',  ->一些pyd文件
    'C:\Users\Administrator\Envs\py36test', 
    'C:\Users\Administrator\Envs\py36test\lib\site-packages']     -->pip安装的目录找
    

    Lib下的模块

    包含在了help('modules') 里

    ls /c/Users/Administrator/Envs/py36test/Lib

    __future__.py        genericpath.py               reprlib.py
    __pycache__/         hashlib.py                   rlcompleter.py
    _bootlocale.py       heapq.py                     shutil.py
    _collections_abc.py  hmac.py                      site.py
    _dummy_thread.py     imp.py                       site-packages/
    _weakrefset.py       importlib/                   sre_compile.py
    abc.py               io.py                        sre_constants.py
    base64.py*           keyword.py*                  sre_parse.py
    bisect.py            linecache.py                 stat.py
    codecs.py            locale.py                    struct.py
    collections/         no-global-site-packages.txt  tarfile.py*
    copy.py              ntpath.py                    tempfile.py
    copyreg.py           operator.py                  token.py
    distutils/           orig-prefix.txt              tokenize.py
    encodings/           os.py                        types.py
    enum.py              posixpath.py                 warnings.py
    fnmatch.py           random.py                    weakref.py
    functools.py         re.py
    

    builtins

    包含在了help('modules') 里

    object在这个文件里

    ls /c/Users/Administrator/.PyCharm2017.3/system/python_stubs/1441790480
    array.py     
    atexit.py
    audioop.py
    binascii.py
    builtins.py
    cmath.py
    errno.py
    faulthandler.py
    gc.py
    itertools.py
    marshal.py
    math.py
    mmap.py
    msvcrt.py
    nt.py
    parser.py
    pyexpat.py
    select.py
    sys.py
    time.py
    unicodedata.py
    winreg.py
    winsound.py
    xxsubtype.py
    zipimport.py
    zlib.py
    

    为什么会认为 Python 是“自带电池”的

    help('modules') 显示的模块

    如果安装了flask也会检索到flask模块

    __future__          _weakref            hashlib             secrets
    _ast                _weakrefset         heapq               select
    _asyncio            _winapi             hmac                selectors
    _bisect             abc                 html                setuptools
    _blake2             activate_this       http                shelve
    _bootlocale         aifc                idlelib             shlex
    _bz2                antigravity         imaplib             shutil
    _codecs             argparse            imghdr              signal
    _codecs_cn          array               imp                 site
    _codecs_hk          ast                 importlib           smtpd
    _codecs_iso2022     asynchat            inspect             smtplib
    _codecs_jp          asyncio             io                  sndhdr
    _codecs_kr          asyncore            ipaddress           socket
    _codecs_tw          atexit              itertools           socketserver
    _collections        audioop             json                sqlite3
    _collections_abc    base64              keyword             sre_compile
    _compat_pickle      bdb                 lib2to3             sre_constant
    _compression        binascii            linecache           sre_parse
    _csv                binhex              locale              ssl
    _ctypes             bisect              logging             stat
    _ctypes_test        builtins            lzma                statistics
    _datetime           bz2                 macpath             string
    _decimal            cProfile            macurl2path         stringprep
    _dummy_thread       calendar            mailbox             struct
    _elementtree        cgi                 mailcap             subprocess
    _findvs             cgitb               marshal             sunau
    _functools          chunk               math                symbol
    _hashlib            cmath               mimetypes           symtable
    _heapq              cmd                 mmap                sys
    _imp                code                modulefinder        sysconfig
    _io                 codecs              msilib              tabnanny
    _json               codeop              msvcrt              tarfile
    _locale             collections         multiprocessing     telnetlib
    _lsprof             colorsys            netrc               tempfile
    _lzma               compileall          nntplib             test
    _markupbase         concurrent          nt                  textwrap
    _md5                configparser        ntpath              this
    _msi                contextlib          nturl2path          threading
    _multibytecodec     copy                numbers             time
    _multiprocessing    copyreg             opcode              timeit
    _opcode             crypt               operator            tkinter
    _operator           csv                 optparse            token
    _osx_support        ctypes              os                  tokenize
    _overlapped         curses              parser              trace
    _pickle             datetime            pathlib             traceback
    _pydecimal          dbm                 pdb                 tracemalloc
    _pyio               decimal             pickle              tty
    _random             difflib             pickletools         turtle
    _sha1               dis                 pip                 turtledemo
    _sha256             distutils           pipes               types
    _sha3               doctest             pkg_resources       typing
    _sha512             dummy_threading     pkgutil             unicodedata
    _signal             easy_install        platform            unittest
    _sitebuiltins       email               plistlib            urllib
    _socket             encodings           poplib              uu
    _sqlite3            ensurepip           posixpath           uuid
    _sre                enum                pprint              venv
    _ssl                errno               profile             warnings
    _stat               faulthandler        pstats              wave
    _string             filecmp             pty                 weakref
    _strptime           fileinput           py_compile          webbrowser
    _struct             fnmatch             pyclbr              wheel
    _symtable           formatter           pydoc               winreg
    _testbuffer         fractions           pydoc_data          winsound
    _testcapi           ftplib              pyexpat             wsgiref
    _testconsole        functools           queue               xdrlib
    _testimportmultiple gc                  quopri              xml
    _testmultiphase     genericpath         random              xmlrpc
    _thread             getopt              re                  xxsubtype
    _threading_local    getpass             reprlib             zipapp
    _tkinter            gettext             rlcompleter         zipfile
    _tracemalloc        glob                runpy               zipimport
    _warnings           gzip                sched               zlib
    

    查看Python当前已装入的模块

    结果是一个字典:

    >>> sys.modules
    
    
    {'copy_reg':                                    <module 'copy_reg' from '/usr/lib64/python2.7/copy_reg.pyc'>,
     'sre_compile':                                 <module 'sre_compile' from '/usr/lib64/python2.7/sre_compile.pyc'>,
     '_sre':                                        <module '_sre' (built-in)>,
     'encodings':                                   <module 'encodings' from '/usr/lib64/python2.7/encodings/__init__.pyc'>,
     'site':                                        <module 'site' from '/usr/lib64/python2.7/site.pyc'>,
     '__builtin__':                                 <module '__builtin__' (built-in)>,
     'sysconfig':                                   <module 'sysconfig' from '/usr/lib64/python2.7/sysconfig.pyc'>,
     '__main__':                                    <module '__main__' (built-in)>,
     'encodings.encodings': None, 'abc':            <module 'abc' from '/usr/lib64/python2.7/abc.pyc'>,
     'posixpath':                                   <module 'posixpath' from '/usr/lib64/python2.7/posixpath.pyc'>,
     '_weakrefset':                                 <module '_weakrefset' from '/usr/lib64/python2.7/_weakrefset.pyc'>,
     'errno':                                       <module 'errno' (built-in)>,
     'encodings.codecs': None, 'sre_constants':     <module 'sre_constants' from '/usr/lib64/python2.7/sre_constants.pyc'>,
     're':                                          <module 're' from '/usr/lib64/python2.7/re.pyc'>,
     '_abcoll':                                     <module '_abcoll' from '/usr/lib64/python2.7/_abcoll.pyc'>,
     'types':                                       <module 'types' from '/usr/lib64/python2.7/types.pyc'>,
     '_codecs':                                     <module '_codecs' (built-in)>,
     'encodings.__builtin__': None, '_warnings':    <module '_warnings' (built-in)>,
     'codecs':                                      <module 'codecs' from '/usr/lib64/python2.7/codecs.pyc'>,
     'genericpath':                                 <module 'genericpath' from '/usr/lib64/python2.7/genericpath.pyc'>,
     'stat':                                        <module 'stat' from '/usr/lib64/python2.7/stat.pyc'>,
     'zipimport':                                   <module 'zipimport' (built-in)>,
     '_sysconfigdata':                              <module '_sysconfigdata' from '/usr/lib64/python2.7/_sysconfigdata.pyc'>,
     'warnings':                                    <module 'warnings' from '/usr/lib64/python2.7/warnings.pyc'>,
     'UserDict':                                    <module 'UserDict' from '/usr/lib64/python2.7/UserDict.pyc'>,
     'encodings.utf_8':                             <module 'encodings.utf_8' from '/usr/lib64/python2.7/encodings/utf_8.pyc'>,
     'sys':                                         <module 'sys' (built-in)>,
     'repoze':                                      <module 'repoze' (built-in)>,
     'readline':                                    <module 'readline' from '/usr/lib64/python2.7/lib-dynload/readline.so'>,
     'os.path':                                     <module 'posixpath' from '/usr/lib64/python2.7/posixpath.pyc'>,
     'signal':                                      <module 'signal' (built-in)>,
     'traceback':                                   <module 'traceback' from '/usr/lib64/python2.7/traceback.pyc'>,
     'linecache':                                   <module 'linecache' from '/usr/lib64/python2.7/linecache.pyc'>,
     'posix':                                       <module 'posix' (built-in)>,
     'encodings.aliases':                           <module 'encodings.aliases' from '/usr/lib64/python2.7/encodings/aliases.pyc'>,
     'exceptions':                                  <module 'exceptions' (built-in)>,
     'sre_parse':                                   <module 'sre_parse' from '/usr/lib64/python2.7/sre_parse.pyc'>,
     'os':                                          <module 'os' from '/usr/lib64/python2.7/os.pyc'>,
     '_weakref':                                    <module '_weakref' (built-in)>}
    

    python的继承体系

    python中一切皆对象

    a = int(1)                    ## buildin    class int
    t = tuple((1,2,3))        ## class str
    arr = list([1,2,3,4])     ## class list
    

    ls /c/Users/Administrator/.PyCharm2017.3/system/python_stubs/1441790480

    类的继承

    类的定义

    参考: 简明Python魔法 - 1
    当Python解释器遇到类声明时,会创建一个新的namespace ,并执行其内的所有代码,并将变量注册到这个namespace中。

    class Foo(object):
        print 'Loading...'
        spam = 'eggs'
        print 'Done!'
    
    
    
    
    class MetaClass(type):
        def __init__(cls, name, bases, attrs):
            print('Defining %s' % cls)
            print('Name: %s' % name)
            print('Bases: %s' % (bases,))
            print('Attributes:')
            for (name, value) in attrs.items():
                print('    %s: %r' % (name, value))
    
    class RealClass(object, metaclass=MetaClass):
        spam = 'eggs'
    

    判断对象是否属于这个类

    class person():pass
    p = person()
    isinstance(p2,person)
    

    实例和类内存结构

    字段:
        普通字段
        静态字段 共享内存
    
    方法都共享内存: 只不过调用方法不同
        普通方法 self
        类方法   不需要self
        静态方法 cls
    
    

    查看关键字

    from keyword import kwlist
    print(kwlist)
    
    >>> help()
    help> keywords
    
    
    ['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
    

    查看本地环境所有可用模块,没显示buildin模块

    
    help('modules')
    
    IPython             aifc                idlelib             selectors
    __future__          antigravity         imaplib             setuptools
    __main__            argparse            imghdr              shelve
    _ast                array               imp                 shlex
    _asyncio            ast                 importlib           shutil
    _bisect             asynchat            inspect             signal
    _blake2             asyncio             io                  simplegener
    _bootlocale         asyncore            ipaddress           site
    _bz2                atexit              ipython_genutils    six
    _codecs             audioop             itertools           smtpd
    _codecs_cn          autoreload          jedi                smtplib
    _codecs_hk          base64              jieba               sndhdr
    _codecs_iso2022     bdb                 json                socket
    _codecs_jp          binascii            keyword             socketserve
    _codecs_kr          binhex              lib2to3             sqlite3
    _codecs_tw          bisect              linecache           sre_compile
    _collections        builtins            locale              sre_constan
    _collections_abc    bz2                 logging             sre_parse
    _compat_pickle      cProfile            lzma                ssl
    _compression        calendar            macpath             stat
    _csv                cgi                 macurl2path         statistics
    _ctypes             cgitb               mailbox             storemagic
    _ctypes_test        chunk               mailcap             string
    _datetime           cmath               markdown            stringprep
    _decimal            cmd                 marshal             struct
    _dummy_thread       code                math                subprocess
    _elementtree        codecs              mimetypes           sunau
    _findvs             codeop              mmap                symbol
    _functools          collections         modulefinder        sympyprinti
    _hashlib            colorama            msilib              symtable
    _heapq              colorsys            msvcrt              sys
    _imp                compileall          multiprocessing     sysconfig
    _io                 concurrent          netrc               tabnanny
    _json               configparser        nntplib             tarfile
    _locale             contextlib          nt                  telnetlib
    _lsprof             copy                ntpath              tempfile
    _lzma               copyreg             nturl2path          test
    _markupbase         crypt               numbers             tests
    _md5                csv                 opcode              textwrap
    _msi                ctypes              operator            this
    _multibytecodec     curses              optparse            threading
    _multiprocessing    cythonmagic         os                  time
    _opcode             datetime            parser              timeit
    _operator           dbm                 parso               tkinter
    _osx_support        decimal             pathlib             token
    _overlapped         decorator           pdb                 tokenize
    _pickle             difflib             pickle              trace
    _pydecimal          dis                 pickleshare         traceback
    _pyio               distutils           pickletools         tracemalloc
    _random             django              pip                 traitlets
    _sha1               django-admin        pipes               tty
    _sha256             doctest             pkg_resources       turtle
    _sha3               dummy_threading     pkgutil             turtledemo
    _sha512             easy_install        platform            types
    _signal             email               plistlib            typing
    _sitebuiltins       encodings           poplib              unicodedata
    _socket             ensurepip           posixpath           unittest
    _sqlite3            enum                pprint              urllib
    _sre                errno               profile             uu
    _ssl                faulthandler        prompt_toolkit      uuid
    _stat               filecmp             pstats              venv
    _string             fileinput           pty                 warnings
    _strptime           fnmatch             py_compile          wave
    _struct             formatter           pyclbr              wcwidth
    _symtable           fractions           pydoc               weakref
    _testbuffer         ftplib              pydoc_data          webbrowser
    _testcapi           functools           pyexpat             wheel
    _testconsole        gc                  pygments            whoosh
    _testimportmultiple genericpath         pytz                winreg
    _testmultiphase     getopt              queue               winsound
    _thread             getpass             quopri              wsgiref
    _threading_local    gettext             random              xdrlib
    _tkinter            glob                re                  xml
    _tracemalloc        gzip                reprlib             xmlrpc
    _warnings           hashlib             rlcompleter         xxsubtype
    _weakref            haystack            rmagic              zipapp
    _weakrefset         heapq               runpy               zipfile
    _winapi             hmac                sched               zipimport
    abc                 html                secrets             zlib
    activate_this       http                select
    

    dir() 函数: 显示模块属性和方法

    __builtin__模块在Python3中重命名为builtins。

    In [2]: dir(__builtins__)
    Out[2]:
    ['ArithmeticError',
     'AssertionError',
     'AttributeError',
     'BaseException',
     'BlockingIOError',
     'BrokenPipeError',
     'BufferError',
     'BytesWarning',
     'ChildProcessError',
     'ConnectionAbortedError',
     'ConnectionError',
     'ConnectionRefusedError',
     'ConnectionResetError',
     'DeprecationWarning',
     'EOFError',
     'Ellipsis',
     'EnvironmentError',
     'Exception',
     'False',
     'FileExistsError',
     'FileNotFoundError',
     'FloatingPointError',
     'FutureWarning',
     'GeneratorExit',
     'IOError',
     'ImportError',
     'ImportWarning',
     'IndentationError',
     'IndexError',
     'InterruptedError',
     'IsADirectoryError',
     'KeyError',
     'KeyboardInterrupt',
     'LookupError',
     'MemoryError',
     'ModuleNotFoundError',
     'NameError',
     'None',
     'NotADirectoryError',
     'NotImplemented',
     'NotImplementedError',
     'OSError',
     'OverflowError',
     'PendingDeprecationWarnin
     'PermissionError',
     'ProcessLookupError',
     'RecursionError',
     'ReferenceError',
     'ResourceWarning',
     'RuntimeError',
     'RuntimeWarning',
     'StopAsyncIteration',
     'StopIteration',
     'SyntaxError',
     'SyntaxWarning',
     'SystemError',
     'SystemExit',
     'TabError',
     'TimeoutError',
     'True',
     'TypeError',
     'UnboundLocalError',
     'UnicodeDecodeError',
     'UnicodeEncodeError',
     'UnicodeError',
     'UnicodeTranslateError',
     'UnicodeWarning',
     'UserWarning',
     'ValueError',
     'Warning',
     'WindowsError',
     'ZeroDivisionError',
     '__IPYTHON__',
     '__build_class__',
     '__debug__',
     '__doc__',
     '__import__',
     '__loader__',
     '__name__',
     '__package__',
     '__spec__',
     'abs',
     'all',
     'any',
     'ascii',
     'bin',
     'bool',
     'bytearray',
     'bytes',
     'callable',
     'chr',
     'classmethod',
     'compile',
     'complex',
     'copyright',
     'credits',
     'delattr',
     'dict',
     'dir',
     'display',
     'divmod',
     'enumerate',
     'eval',
     'exec',
     'filter',
     'float',
     'format',
     'frozenset',
     'get_ipython',
     'getattr',
     'globals',
     'hasattr',
     'hash',
     'help',
     'hex',
     'id',
     'input',
     'int',
     'isinstance',
     'issubclass',
     'iter',
     'len',
     'license',
     'list',
     'locals',
     'map',
     'max',
     'memoryview',
     'min',
     'next',
     'object',
     'oct',
     'open',
     'ord',
     'pow',
     'print',
     'property',
     'range',
     'repr',
     'reversed',
     'round',
     'set',
     'setattr',
     'slice',
     'sorted',
     'staticmethod',
     'str',
     'sum',
     'super',
     'tuple',
     'type',
     'vars',
     'zip']
    

    有个疑问,tuple和list都有index和count方法,难道他们分别各自实现了两遍吗? 源码看不到

    python3源码目录-编译安装

    $ sudo yum install yum-utils
    $ sudo yum-builddep python3
    $ wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2.tgz
    $ tar -xvzf Python-3.5.2.tgz
    $ ./configure --prefix=/usr/local/python35
    $ make && make install
    
    

    • Include:Python所有的头文件,写C/C++扩展时需要
    • Lib:Python自带的标准库,Python语言编写
    • Modules:由C语言编写的模块,如ctypes、mutltiprocessing等
    • Parser: Python解释器的Scanner和Parser,即Python的词法分析和语法分析
    • Objects:Python的内建对象的实现、包括list、dict等
    • Python:Python解释器的Compiler和执行引擎
    • PCBuild:Visual Studio工程文件
  • 相关阅读:
    如何防止多个人同时编辑文件
    通过Word实现表单套打
    偏前端
    偏前端
    偏前端
    偏前端 -webpack打包之(安装webpack)
    偏前端
    偏前端
    偏前端
    偏前端--之小白学习本地存储与cookie
  • 原文地址:https://www.cnblogs.com/iiiiiher/p/8288382.html
Copyright © 2020-2023  润新知