[Python] Standard Library

程式語言:Python
官方文件

簡介:功能說明
  1. # in test.py
  2. '''test'''
  3.  
  4. __all__ = ['c1', 'f4']
  5.  
  6. class c1:
  7. '''test class'''
  8. var1 = 1
  9. def f1(self, a, b=1):
  10. pass
  11. class d(c1):
  12. pass
  13. def f2():
  14. a = 1
  15. def cf2():
  16. print(a)
  17. return cf2
  18.  
  19. def f3(name:str, age:(1, 99), species:'狗狗的品種') -> tuple:
  20. return (name, age, species)
  21.  
  22. def f4(a, b, *, c, d=2):
  23. pass
  24. print(__name__)
  25. # __main__
  26.  
  27. print(c1.__name__)
  28. # c1
  29.  
  30. print(c1.f1.__name__)
  31. # f1
  32.  
  33. print(__file__)
  34. # test.py
  35.  
  36. print(__doc__)
  37. # test
  38.  
  39. print(c1.__doc__)
  40. # test class
  41.  
  42. print(c1.__dict__)
  43. # {'__weakref__': <attribute '__weakref__' of 'c1' objects>, '__doc__': 'test class', '__module__': '__main__', 'f1': <function c1.f1 at 0x0000000002FD7840>, 'var1': 1, '__dict__': <attribute '__dict__' of 'c1' objects>}
  44.  
  45. print(c1.__base__)
  46. # <class 'object'>
  47.  
  48. print(c1.f1.__qualname__)
  49. # c1.f1
  50.  
  51. print(d.__mro__)
  52. # (<class '__main__.d'>, <class '__main__.c1'>, <class 'object'>)
  53.  
  54. print(c1.__subclasses__())
  55. # [<class '__main__.d'>]
  56.  
  57. print(c1.f1.__module__)
  58. # __main__
  59.  
  60. print(c1.f1.__defaults__)
  61. # (1,)
  62.  
  63. print(c1.f1.__code__)
  64. # <code object f1 at 0x00000000028B8D20, file "test.py", line 9>
  65.  
  66. print(c1.f1.__globals__)
  67. # {'__cached__': None, 'c1': <class '__main__.c1'>, 'f3': <function f3 at 0x0000000002FD77B8>, '__package__': None, 'f2': <function f2 at 0x000000000282A048>, '__name__': '__main__', '__spec__': None, '__all__': ['c1', 'f4'], '__builtins__': <module 'builtins' (built-in)>, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x00000000028B6DD8>, '__doc__': 'test', '__file__': 'test.py', 'd': <class '__main__.d'>, 'f4': <function f4 at 0x0000000002FD78C8>}
  68.  
  69. print(f2().__closure__[0].cell_contents)
  70. # 1
  71.  
  72. print(f3.__annotations__)
  73. # {'name': <class 'str'>, 'species': '狗狗的品種', 'age': (1, 99), 'return': <class 'tuple'>}
  74.  
  75. print(f4.__kwdefaults__)
  76. # {'d': 2}
  77.  
  78. print(c1().f1.__self__)
  79. # <__main__.c1 object at 0x0000000002FDEDA0>

Magic Attributes

  • definition.__name__
    • 本身的名字
    • 可用來分辨 module 直接執行 or 被 import
      • 直接執行
        • "__main__"
      • 被 import
        • 本身的 module 名
  • definition.__doc__
    • 本身註解
  • definition.__qualname__
    • 本身的名字,含引用
  • definition.__module__
    • 本身所在的 module
  • module.__file__
    • 本身路徑,可搭配 os.path 使用
  • module.__all__
    • 限定 from module import * 的屬性
  • class.__bases__
    • class 繼承的 parent
  • class.__mro__
    • 尋找方法的順序(Method Resolution Order,或 MRO)
  • class.__subclasses__()
    • 繼承本身的子代 class
  • object.__dict__
    • object 的變數與函式
  • instance.__class__
    • instance  所屬的 class
  • function.__defaults__
    • 本身的默認參數
  • function.__code__
    • 已編譯的函數對象
  • function.__globals__
    • 全域變數
  • function.__closure__
    • 閉包包含的自由變量
  • function.__annotations__
    • 參數的註釋
  • function.__kwdefaults__
    • 強制關鍵字參數的 default 值
  • method.__self__
    • 本身所屬的 instance

Built-in Functions


參考

Data Model
inspect — Inspect live objects

留言