당신은 많은 필수 인수를 공유하는 기능의 무리가있는 경우 :
foo(x, y, z, alpha)
bar(x, y, z, beta)
baz(x, y, z, gamma)
그것은 x
, y
및 z
사전에 속하거나 함께 namedtuple 있다는 신호가 될 수 있습니다. 이 라우트를 따라 명명 된 터플로 함께 구성된 구성 부분을 배치 할 수 있습니다. 그러나 일반적으로 정확히 을 필요한 것으로 정확히을 함수로 넘길뿐입니다. 따라서 함수가 하나의 항목을 사용하기 위해 많은 구성 매개 변수를 사용하여 사전을 가져 간다면 잘못된 디자인의 징후 일 수 있습니다.
심지어 감각 x
, y
및 클래스 z
, 그리고 foo
, bar
및 baz
방법을 넣어 만들 수 있습니다
는
class XYZ:
def __init__(self, x, y, z):
...
def foo(self, alpha):
...
def bar(self, beta):
...
def baz(self, gamma):
...
구성은 다음 클래스의 상태의 일부가됩니다.
한편, 긴 인수 목록은 함수가 필요로하는 것보다 많은 것을 나타내는 기호 일 수 있습니다. 귀하의 기능을 고려하십시오 calculate_spam(foo, bar, data_dir)
. 아마도이 함수는 디렉토리에서 일부 데이터를로드하고 일부 데이터를 계산합니다. 로딩과 컴퓨팅을 데이터를로드하는 load_spam(data_dir)
과 같은 두 가지 별도의 함수로 분리하는 것이 더 합리적일까요? 그렇다면 calculate_spam(data, ...)
을 계산 하시겠습니까?
너무 많은 인수가있을 때 함수를 더 작은 조각으로 분할해야하는 경우가 종종 있습니다. 그것은 법이 아니지만 엄지 손가락으로 나를 위해 많은 시간을 할애합니다.
출처
2014-12-16 02:31:29
jme
[config] (https://docs.python.org/3.4/library/configparser.html) 파일에이 파일을 넣고 그 confing 객체 나 그 일부를 전달할 수 있습니다. myconf.py와 같은 단일 모듈을 구성 매개 변수로 사용할 수도 있습니다. – Marcin