0
私は組み込み関数lenの定義を変更してから、ctypes module.Butをインポートしようとしましたが、そして、ここで私はctypesをインポートするときになぜ間違っているのか分かりません
import builtins
def func(obj):
print("Length: %d" % len(obj))
builtins.len = lambda obj: "Bad!!!"
import ctypes
エラーのtracbackです:.Hereは私のコードです
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 funが確実に呼び出されます( 'ValueError:基数10のint()の無効なリテラルを参照: 'Bad !!!')。私はなぜctypesのバージョンが将来のパッケージに依存しているのでないかは分からない。 – jedwards