1

次のような関数を定義した場合:

def plop(plop):
    ploplop = 1234
    if plop == ploplop:
         print "I plopped"

関数の範囲外でプロップを取得するにはどうすればよいですか?

4

4 に答える 4

9

あなたはそれを返し、反対側でそれをキャプチャします。

def plop(plop):
    ploplop = 1234
    if plop == ploplop:
         print "I plopped"
    return plopplop

someval = plop(1235)
于 2012-06-04T19:51:24.070 に答える
2
def plop(plop):
    global ploplop 
    ploplop = 1234
    if plop == ploplop:
         print "I plopped"

ただし、グローバル変数はほとんど使用しないでください

于 2012-06-04T19:52:12.987 に答える
1

別の解決策は、関数に属性を追加することです。(プロップが多すぎるので関数名を変更しました):

def f(plop):
    f.ploplop = 1234
    if plop == f.ploplop:
         print "I plopped"
f(5)
print f.plopplop
于 2012-06-04T21:30:07.453 に答える
0

適切な回答を得るのに十分な情報を提供していません。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)
于 2012-06-04T20:55:18.370 に答える