2011-03-10 9 views
1

から関数内の印刷変数:学習のPython:私はPythonで次の操作を実行したい他の機能

def func1(): 
var1 = "something" 

def func2(): 
print var1 

これを実行するための正しいモードとは何ですか?私は文書にはまったく見つかりませんでした

PS。可能であれば、その変数var1をグローバル変数にする計画はありません。

ありがとうございました。

答えて

5

関数呼び出し間で変数をパラメータとして渡したくないと仮定します。関数間で状態を共有する通常の方法は、クラスを定義することです。それはあなたの特定の問題のためにやり過ぎかもしれないが、それはあなたが状態共有していることができますし、制御の下でそれを維持:

class C: 
    def func1(self): 
    self.var1 = "something" 

    def func2(self): 
    print self.var1 

foo = C() 
foo.func1() 
foo.func2() 
+0

答えをありがとう! –

+0

今、それは私のために働いた...私はあなたが書いたようなクラスを作成し、私は "見る"ことができ、その変数で動作する! –

0

よくfunc2()が別の関数のスコープで変数を出力しようとしています。あなたはどちらか

  • 戻りVAR1の値はfunc1を呼び出す(例えばDEF関数func2():印刷関数func1()}関数func1から
  • コール関数func2とVAR1の値を渡し
3

ありません、そのようなことを行うことはできません。これが原因で、「scope」と呼ばれるものの。あなたはモジュールレベルの変数を作成するか、またはOOPの構造に配置される。

+1

あなたはスコープに失敗します。レキシカルスコープはこれを禁止します。 Dynamic * Scoping *はすべてこのことです(呼び出し元のローカルに呼び出し可能になります)。 – delnan

+0

答えをありがとう! –

0

あなたは

0123のような何かを試みることができます
def func1(): 
    var1 = "something" 
    return var1 

def func2(): 
    print func1() 

var1を定義する以外にfunc1が必要な場合は、クラスを定義してオブジェクトを作成する必要がありますか? http://docs.python.org/tutorial/classes.html

+0

答えをありがとう! –

0

は、あなたが試みることができる:

filename.py:


def func1(): 
    var1 = "something" 

def func2(): 
    var = __ import__('filename').var1 
    print var 
関連する問題