[Python] Standard Library

程式語言:Python
官方文件

簡介:功能說明
# in test.py
'''test'''

__all__ = ['c1', 'f4']

class c1:
    '''test class'''
    var1 = 1
        
    def f1(self, a, b=1):
        pass
        
class d(c1):
    pass
    
def f2():
    a = 1
    def cf2():
        print(a)
    
    return cf2

def f3(name:str, age:(1, 99), species:'狗狗的品種') -> tuple:
    return (name, age, species)

def f4(a, b, *, c, d=2):
    pass
    
print(__name__) 
# __main__

print(c1.__name__) 
# c1

print(c1.f1.__name__) 
# f1

print(__file__) 
# test.py

print(__doc__) 
# test

print(c1.__doc__) 
# test class

print(c1.__dict__) 
# {'__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>}

print(c1.__base__) 
# <class 'object'>

print(c1.f1.__qualname__) 
# c1.f1

print(d.__mro__) 
# (<class '__main__.d'>, <class '__main__.c1'>, <class 'object'>)

print(c1.__subclasses__()) 
# [<class '__main__.d'>]

print(c1.f1.__module__) 
# __main__

print(c1.f1.__defaults__) 
# (1,)

print(c1.f1.__code__) 
# <code object f1 at 0x00000000028B8D20, file "test.py", line 9>

print(c1.f1.__globals__) 
# {'__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>}

print(f2().__closure__[0].cell_contents) 
# 1

print(f3.__annotations__) 
# {'name': <class 'str'>, 'species': '狗狗的品種', 'age': (1, 99), 'return': <class 'tuple'>}

print(f4.__kwdefaults__) 
# {'d': 2}

print(c1().f1.__self__) 
# <__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

留言