2016-08-13 1 views
2

저는 파이썬을 처음 접했고 파이썬 과학 라이브러리의 몇 가지 API 예제를 읽었습니다.왜 이러한 파이썬 코드 예제가 모두 생성자를 두 번 호출합니까?

scikit-learn에서 코드 예제는 항상 인수없이 한 번만 생성자를 호출 한 다음 나중에 모든 인수를 사용하여 다시 한 번 호출합니다. 여기

는 예 (마지막 행을 참조하고, sklearn.linear_model.SGDRegressor의 문서에서 가져온 마지막 줄 (CLF = 선형 _....), 전 세 번째 :

>>> import numpy as np 
>>> from sklearn import linear_model 
>>> n_samples, n_features = 10, 5 
>>> np.random.seed(0) 
>>> y = np.random.randn(n_samples) 
>>> X = np.random.randn(n_samples, n_features) 
>>> clf = linear_model.SGDRegressor() 
>>> clf.fit(X, y) 
... 
SGDRegressor(alpha=0.0001, average=False, epsilon=0.1, eta0=0.01, 
      fit_intercept=True, l1_ratio=0.15, learning_rate='invscaling', 
      loss='squared_loss', n_iter=5, penalty='l2', power_t=0.25, 
      random_state=None, shuffle=True, verbose=0, warm_start=False) 

내가 뭔가를 오해 것 같아요 왜 생성자가 두 번 호출되는지 알 수 없으므로 이유가 있거나 생성자의 가능한 모든 매개 변수를 표시하는 이상한 방법입니까?

+1

그가 두 번 부르시겠습니까? 그것은 생성 된 인스턴스의'__repr__'의 예제가 아닌가요? 그 줄은'>>>'로 시작하지 않습니다. – pistache

답변

3

독자가 읽고있는 것 doctest이며, 테스트 문자열은 설명서 문자열에 포함되어 있습니다.

Doctests는 실행 가능한 예제를 나타 내기 위해 접두사가 >>> 인 접두사를 사용하고 출력은 접두사가없는 것으로 표시됩니다.

테스트 러너는 예제의 출력을 문서 테스트에서 작성된 출력과 비교합니다.

우리는 IPython 인터프리터의 예제를 실행하여 그것을 볼 수 있습니다

In [18]: import numpy as np 

In [19]: np.random.seed(0) 

In [20]: y = np.random.randn(n_samples) 

In [21]: X = np.random.randn(n_samples, n_features) 

In [22]: clf = linear_model.SGDRegressor() 

In [23]: clf.fit(X, y) 
Out[23]: 
SGDRegressor(alpha=0.0001, average=False, epsilon=0.1, eta0=0.01, 
     fit_intercept=True, l1_ratio=0.15, learning_rate='invscaling', 
     loss='squared_loss', n_iter=5, penalty='l2', power_t=0.25, 
     random_state=None, shuffle=True, verbose=0, warm_start=False) 

TLDR; 두 번째 생성자는 코드에 없으며 fit 메서드의 출력을 나타냅니다.

관련 문제