次のような関数を定義した場合:
def plop(plop):
ploplop = 1234
if plop == ploplop:
print "I plopped"
関数の範囲外でプロップを取得するにはどうすればよいですか?
あなたはそれを返し、反対側でそれをキャプチャします。
def plop(plop):
ploplop = 1234
if plop == ploplop:
print "I plopped"
return plopplop
someval = plop(1235)
def plop(plop):
global ploplop
ploplop = 1234
if plop == ploplop:
print "I plopped"
ただし、グローバル変数はほとんど使用しないでください
別の解決策は、関数に属性を追加することです。(プロップが多すぎるので関数名を変更しました):
def f(plop):
f.ploplop = 1234
if plop == f.ploplop:
print "I plopped"
f(5)
print f.plopplop
適切な回答を得るのに十分な情報を提供していません。2 つの関数と変数の関係は?
変数が、2 つの関数が動作するある種の永続的な状態を表す場合、2 つのメソッドとメンバー変数を持つクラスを作成します。
class Plopper( object ):
ploplop = 1234
def plop( self, ploppity ):
if ploppity == self.ploplop:
print "I plopped" # ew.
def plop2( self, ploppity ):
if ploppity == self.ploplop * 2:
print "I plopped twice"
a = Plopper()
a.plop( 1234 )
a.plop2( 2468 )
変数が関数の動作を制御し、それらが一貫していることを確認する必要がある場合は、変数をメソッドからグローバルに引き出します (ユーザー 1320237 とは対照的に、変数をグローバルに宣言する必要はありません。その値を読み取るだけです):
PLOPLOP = 1234 # I like the all-caps convention for global constants
def plop(plop):
if plop == PLOPLOP:
print "I plopped"
def plop2(plop):
if plop == 2 * PLOPLOP:
print "I plopped twice"
plop(1234)
plop2(2468)