私は2つの.pyスクリプトファイルを持っています。 "メイン"スクリプトは、その他の "ヘルパー"機能を含む2番目のスクリプトをインポートします。インポートされた関数内のPythonオブジェクトの参照
メインスクリプトでは、SPIインターフェイスのオブジェクトを設定しました。 SPIインターフェイスを直接使用するインポートされたファイルに関数を書きたいと思います。私はこれのノブであり、様々な方法で書いて渡すことを試みましたが、常にエラーが発生します。
mainscript.py
import helperfunctions.py as helper
spi = spidev.SpiDev()
spi.open(0, 0)
response = spi.xfer([ ... some data ...]) #this works when
#called from mainscript.py
helper.sendOtherStuff() #this doesn't work (see helper script below)
helperfunctions.py
def sendOtherStuff():
#need to somehow reference 'spi.' object from mainscript.py file
otherData = ([... some different data ...])
resp = spi.xfer([otherData]) #this fails because helperfunctions
#apparently doesn't know spi. object
return resp
私は頻繁にもグローバル変数の値について同じ一般的な質問があります。私は確かにそれを行う "より良い"方法があると確信していますが、今のところは、mainscript.pyにいくつかのグローバル変数を定義し、それらのグローバルをhelperfunctions.pyの関数内で参照することがしばしばあります。私はこれを行う方法を考え出すことはできません。他の方法は簡単です - helperfunctions.py内のグローバル変数を宣言し、mainscript.pyからhelper.variableNameとして参照してください。しかし、他の方向へ行く方法はわかりません。
いずれの方向も高く評価されています。ありがとうございました。
あなたには、インポートの問題があるようです。 Btwでは、ファイルやモジュールをインポートするときに '.py'接尾辞は必要ありません。ちょうど 'ヘルパーとしてインポートhelperfunctions'を行う。ヘルパー関数は本来、外部のオブジェクトやモジュールを必要としません。彼らはちょうどヘルパーですから。私はあなたのコードアーキテクチャを修正すべきだと思います。 *(たとえば、パラメータとして 'spi'を取るようにヘルパー関数を定義することができます)。* – ozgur
ozgurありがとうございます。私はパラメータとして渡してみましたが、関数内で実際にオブジェクトを実行する方法がわかりませんでした。下のロバートの例はこれを解決したようだ。意味をなさない私は朝にしようと楽しみにしています。ありがとう! – kjav