0
내장 함수 len의 정의를 변경 한 다음 ctypes module.But을 가져 오려고했는데 왜 그랬는지 알지 못합니다. 여기에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 –
변경된 len 재미는 ctypes를 가져 오려고 할 때 분명히 호출됩니다 ('ValueError : 밑이 10 인 int()에 대한 리터럴이 잘못되었습니다 :'Bad !!! '). 나는 ctypes의 버전이 미래 패키지에 대한 의존성을 가지지 않는 한, 왜 그런지는 모르겠다. – jedwards