我有一個小模塊寫成:心理測量學.py 的內容def prob3pl(theta, D = 1.7, a, b, c): result = c + (1 - c) / (1 + np.exp(-D * a * (theta - b))) return(result)def gpcm(theta, d, score, a, D=1.7): Da = D * a result = np.exp(np.sum(Da * (theta - d[0:score]))) / np.sum(np.exp(np.cumsum(Da * (theta - d)))) return(result)if __name__ == '__main__': gpcm(theta, d, score, a, D=1.7) prob3pl(theta, D = 1.7, a, b, c)現在使用 python 解釋我執行以下操作:import psychometrics as pyimport numpy as nppy.prob3pl(0, a = 1, b= 0, c=0)但是,在運行時會產生>>> py.prob3pl(0,a=1,b=0,c=0)Traceback (most recent call last): File "<stdin>", line 1, in <module>TypeError: prob3pl() missing 1 required positional argument: 'D'當我將函數復制并粘貼到解釋器中時,它使用默認值運行,D = 1但在導入時不會發生這種情況。我犯了什么錯誤,導致導入模塊時無法識別 D 的默認值?
1 回答

白板的微信
TA貢獻1883條經驗 獲得超3個贊
您的代碼有語法錯誤 -
SyntaxError: non-default argument follows default argument
因此,請將函數 prob3pl() 更改為
def prob3pl(theta, a, b, c, D = 1.7): result = c + (1 - c) / (1 + np.exp(-D * a * (theta - b))) return(result)
原因 - 在 python 函數聲明中,任何默認參數之后都不應該有任何非默認參數。在這里 D=1.7
添加回答
舉報
0/150
提交
取消