亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python 中用于導入的默認參數

Python 中用于導入的默認參數

尚方寶劍之說 2022-10-25 16:06:26
我有一個小模塊寫成:心理測量學.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


查看完整回答
反對 回復 2022-10-25
  • 1 回答
  • 0 關注
  • 127 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號