mainにグローバル変数、つまりmain関数から呼び出す関数で使用できる変数を定義したかったのです。メイン関数python内のグローバル変数
これは可能ですか?これを行うにはどうすればよいでしょうか?
ありがとうございます!
mainにグローバル変数、つまりmain関数から呼び出す関数で使用できる変数を定義したかったのです。メイン関数python内のグローバル変数
これは可能ですか?これを行うにはどうすればよいでしょうか?
ありがとうございます!
内に変数が作成されました。メソッド(例:main)が定義上ローカルです。ただし、メソッドの外部にグローバル変数を作成し、その値を他のメソッドからアクセスして変更することができます。
この値を変更するには、global
というキーワードを使用します。
あなたがしたいことはできません。グローバル名前空間に変数を作成することができます。
myglobal = "UGHWTF"
def main():
global myglobal # prevents creation of a local variable called myglobal
myglobal = "yu0 = fail it"
anotherfunc()
def anotherfunc():
print myglobal
Do not do this。
関数の全ポイントは、パラメータをとることです。関数にパラメータを追加するだけです。多くの機能を変更する必要があることがわかった場合、これをクラスに収集する必要があります。
*
なぜこれが不可能であるかを詳しく説明してください。Pythonの変数は宣言されていません。代入文が実行されると作成されます。これは、(astronautlevelにより投稿されたコードから派生)次のコードが壊れることを意味します
def setcake(taste):
global cake
cake = taste
def caketaste():
print cake #Output is whatever taste was
caketaste()
Traceback (most recent call last):
File "prog.py", line 7, in <module>
caketaste()
File "prog.py", line 5, in caketaste
print cake #Output is whatever taste was
NameError: global name 'cake' is not defined
caketaste
が呼び出されたとき、cake
への割り当てが発生していないので、これが起こります。これは、setcake
が呼び出された後にのみ発生します。
あなたはここでエラーを見ることができます:http://ideone.com/HBRN4y
あなたがglobal
ステートメントを使用する必要があります。これらは比較的簡単です。これを行うには、変数自体を定義する前に変数をグローバルとして定義するだけです。たとえば :
def setcake(taste):
global cake
cake = taste
def caketaste():
print cake
setcake('tasty')
caketaste() #Output is tasty
EDITは: 申し訳ありませんが、私があなたの質問を読み違えているようです。今私はそれを正しく答えるようにしてください。コードに見られるよう
def printcake():
print cake #This function prints the taste of cake when called
def setcake(taste, printq):
global cake #This makes sure that cake can be called in any function
cake = taste #sets cake's taste
if printq: #determines whether to print the taste
printcake()
setcake('good', True) #Calls the function to set cake. Tells it to print result. The output is good
'setcake'の前に' caketaste'を呼び出すとどうなりますか? – Marcin
は、あなただけの引数としてでその変数を渡すことができませんか? –
はい、私は可能でしたが、主な関数の中でグローバル変数を定義することが可能かどうかを調べようとしていましたが、おそらくそれは悪い考えです... – Dnaiel
グローバル変数はreallllllyyyy長いコードを取得すると迷惑になります。しかし、より小さいコードの場合は問題ありません。 – astronautlevel