第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

驗證編譯擴展類型的兼容性,并將其與cdef一起使用

驗證編譯擴展類型的兼容性,并將其與cdef一起使用

三國紛爭 2019-11-20 14:36:53
常規(guī)問題:為什么Cython編譯中的其他錯誤指向特定的錯誤行,而并非如此?更新之前:由于難以編譯擴展類型,如下面的“不會編譯”鏈接中所述,人們認為AssertionError與擴展類型有關(guān)(在實例化傳輸?shù)街鱬yx文件之后)。該論壇帖子中的某人說:“如果您確實需要擴展類型,并想在代碼中聲明其類型,則需要在.pxd文件中聲明其C屬性。”如果在這種情況下是正確的,則問題是使用pxd文件時pyx文件不會為我編譯。在一個pyx文件中編譯擴展名類型時沒有錯誤,但是extTypeName is not a type identifier當導(dǎo)入后使用擴展名類型時,我收到錯誤消息。在評論中告訴我,可以在pyx文件中使用主要功能定義擴展類型。這樣做時,我收到一個錯誤,我不知道如何跟蹤(AssertionError: unexpected type int and base type tuple object for indexing)。完整的追溯發(fā)布在下面。
查看完整描述

2 回答

?
飲歌長嘯

TA貢獻1951條經(jīng)驗 獲得超3個贊

附上我可以從您的郵件中得到的答復(fù)。

  1. 在Cython中可以使用Python對象,但是一旦您使用了cdef某些部分,就會受到限制。嘗試通過“聯(lián)合國”-捍衛(wèi)字典。

  2. 您所犯的錯誤表明您有一個表達式,x[y]其中x有一個元組和y一個int。原則上,它應(yīng)該可以正常工作(用int應(yīng)該為一個元組建立索引就可以了)。因此,您可以查看Cython中的方括號,以了解其來源。

  3. 您提到刪除了pxd文件。然后,您是否將擴展類/其他類型定義的完整聲明移至pyx文件?


查看完整回答
反對 回復(fù) 2019-11-20
?
胡說叔叔

TA貢獻1804條經(jīng)驗 獲得超8個贊

擴展類型在編譯中不是問題(至少在與主要cdef函數(shù)位于同一pyx文件中聲明時);該錯誤發(fā)生在其他地方。


已解決:


AssertionError是由對該元組的簡單索引訪問引起的。

元組聲明為:


cdef:

    tuple curIRs

…并在嵌套循環(huán)中設(shè)置為:


for deriv1 in xrange(len(L1)):

    for deriv2 in xrange(len(L2)):

        curIRs = (deriv2, deriv1)

…并訪問元組索引:


d1[ix] = (curIRs[0], curIRs[1])

這顯然是無害的監(jiān)督,curIRs不僅僅被存儲,而是實質(zhì)上通過索引訪問來復(fù)制它。但是,這是由于未知原因而發(fā)生錯誤的地方:


當(curIRs [0],curIRs [1])替換為curIRs時,將AssertionError停止。


如評論中所述,由于pyx文件中的main函數(shù)是在python腳本中調(diào)用的,因此無法使用cdef對其進行定義。

Pierre de Buyl在評論中的建議非常有幫助:“刪除潛在問題變量的cdef聲明,直到錯誤解決?!?即在Python中可能沒有錯誤的地方,Cython中可能會發(fā)現(xiàn)不兼容的地方


查看完整回答
反對 回復(fù) 2019-11-20
  • 2 回答
  • 0 關(guān)注
  • 458 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號