여기에 설명 할 복잡한 문제의 비트 :전역 변수를 사용하지 않고 너무 많은 인수를 전달하는 방법은 무엇입니까?
중간 값을 통해 한 입력을 다른 입력에 매핑하는 AB() 함수가 필요합니다. 더 구체적으로 함수는 두 가지 함수로 구성되어 있습니다. A()와 B()는 모두 사전 (A [B [입력]] 결과)을 반환합니다.
내 현재 파일 디렉토리 : 내 convert.py에서
packageX/
__init__.py
get_part_of_B_expensively.py
something_that_will_use_convert.py
convert.py
packageA/
__init__.py
get_the_entirety_of_A_expensively.py
나는 다음과 같은 한 :
import get_part_of_B_expensively
from packageA import get_the_entirety_of_A_expensively
dict_A = packageA.get_the_entirety_of_A_expensively()
def get_B():
result = {}
result = get_part_of_B_expensively() # this is a very expensive operation
result += get_rest_of_B_inexpensively() # shorthand for adding two dictionaries
return result # returns a dictionary
dict_B = get_B() # hence why i call it once outside, and not inside AB()
def AB(input):
return dictA[dictB[input]]
내가 get_B()를 정의하기 전에 dict_B를 초기화 할 수 없기 때문에이 적절하다고 생각하지 마십시오 하고, AB()의 유일한 매개 변수는 input
이되고 싶습니다. 구현을 추상화하고 싶기 때문입니다. 그러나 전 세계적으로 몇 가지 변수를 소개합니다. 주로 dict_B와 dictA입니다. 이것이 최선의 방법인지는 확신 할 수 없습니다. get_B()를 자체 패키지로 분리 할 수는 있지만 전역 프레임에서 어딘가에 호출해야합니다. 이것에 대한 접근법이 무엇인지 잘 모르겠다. 나는 같은 패키지에있는 파일을 호출하는 A()와 B()를 최대한 자주 호출하지만 AB() 함수를 추상화하려고한다.
당신의 유스 케이스는 무엇인가? 이것이 디자인이라고 생각하는 이유의 실제 예는 무엇입니까? –
get_B()가 get_part_of_B_expensively.py 모듈에 속한 것처럼 보입니다. B를보다 효율적으로 얻는 방법에 대한 논리는 convert.py에 있으며 좋은 디자인이 아닐 수도 있습니다. – Salil