0
我改變了內置函數len的定義,然後我試圖導入ctypes模塊。但我不知道爲什麼它會出現錯誤,當我這樣做時。這裏是我的代碼:我不知道爲什麼它是錯誤的,當我導入ctypes
import builtins
def func(obj):
print("Length: %d" % len(obj))
builtins.len = lambda obj: "Bad!!!"
import ctypes
那麼這裏就是錯誤的tracback:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<frozen importlib._bootstrap>", line 969, in _find_and_load
File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 661, in exec_module
File "<frozen importlib._bootstrap_external>", line 772, in get_code
File "<frozen importlib._bootstrap_external>", line 491, in _code_to_bytecode
File "<frozen importlib._bootstrap_external>", line 42, in _w_long
ValueError: invalid literal for int() with base 10: 'Bad!!!'
Error in sys.excepthook:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 53, in apport_excepthook
if not enabled():
File "/usr/lib/python3/dist-packages/apport_python_hook.py", line 24, in enabled
import re
File "<frozen importlib._bootstrap>", line 969, in _find_and_load
File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 661, in exec_module
File "<frozen importlib._bootstrap_external>", line 772, in get_code
File "<frozen importlib._bootstrap_external>", line 491, in _code_to_bytecode
File "<frozen importlib._bootstrap_external>", line 42, in _w_long
ValueError: invalid literal for int() with base 10: 'Bad!!!'
Original exception was:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<frozen importlib._bootstrap>", line 969, in _find_and_load
File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 661, in exec_module
File "<frozen importlib._bootstrap_external>", line 772, in get_code
File "<frozen importlibbootstrap_external>", line 491, in _code_to_bytecode
File "<frozen importlib._bootstrap_external>", line 42, in _w_long
ValueError: invalid literal for int() with base 10: 'Bad!!!'
這困擾了我很多。非常感謝如果有人能幫助我!
你爲什麼不解?改變嚴重依賴基本內建的功能,然後嘗試使用它(間接地通過導入),因爲它本來就是*會導致錯誤,不是? – jedwards
你的意思是,當我試圖導入ctypes時,改變後的len函數被執行了嗎? @jedwards –
當您嘗試導入ctypes時,更改的len樂趣肯定會被調用(請參見ValueError:對於int(),其基數爲10:'Bad !!!')。我不知道爲什麼,除非版本的ctypes依賴於未來的包。 – jedwards