PHPとPythonのglobal

休んだついでにダウンしてました。久しぶりに書きます。

Pythonにはglobal文というのがあるので、PHPのglobalみたいな感じかなと思ったら違うようです。

<?php

$msg = "Hello";

function hello1() {
  print $msg;
}

function hello2() {
  global $msg;
  print $msg;
}
hello1();
hello2();
?>

こういう場合、PHPでは、hello1()はエラーになります。しかしPythonではエラーにならず、グローバルな変数を参照してくれます。

>>> msg = "Hello"
>>> def hello1():
	print msg

	
>>> hello1()
Hello

ではどんな時にglobal文が必要かというと、変数へ代入をする時です。

>>> def hello1():
	msg = "Hello, World"
	print msg

	
>>> hello1()
Hello, World
>>> msg
'Hello'

この場合、global文が無いと、ローカルなmsgという変数を新しく作ってしまいます。