Hatena::Grouppython

zorioの日記

 | 

2010-03-20

変数と定数

01:35

http://lightson.dip.jp/zope/ZWiki/003_e5_a4_89_e6_95_b0_e3_81_a8_e5_ae_9a_e6_95_b0

参照はLEGBの順

def outer(s):
  value = s + ":hoge"
  def inner():
    return value
  
  return inner()

print outer("aaa") # aaa:hoge

代入は常にローカル

def outer(a, b):
  outervalue1 = a
  outervalue2 = a
  def inner(b):
    outervalue1 = b
    innervalue = b
    print innervalue # => B
    print outervalue1 # => B
    print outervalue2 # => A

  inner(b)
  print outervalue1 # => A ←Bになったりしない
  print outervalue2 # => A

outer("A", "B")

つまり、代入は常にローカルスコープに対して行われる、と。

python3では、nonlocalって書けば一個外側のスコープを対象に出来るのか。


属性はインスタンスが優先で、クラス属性は隠蔽される。

class MyClass:
  class_property = 0
  common_property = -1
  def __init__(self):
    self.inst_property = 1
    self.common_property = 2

ins = MyClass()
print ins.class_property # => 0
print ins.inst_property # => 1
print ins.common_property # => 2

LuanaLuana2012/07/15 14:16I read your post and wihesd I was good enough to write it

totoxdtotoxd2012/07/16 02:55f1AtSN <a href="http://lhfrbuiunogq.com/">lhfrbuiunogq</a>

jebmdnjebmdn2012/07/17 00:31ZAsYvc , [url=http://bkkdwllhepah.com/]bkkdwllhepah[/url], [link=http://ewqodtjjiwut.com/]ewqodtjjiwut[/link], http://pavbtqjhuomn.com/

ciphhnjyefjciphhnjyefj2012/07/17 12:46DncpWz <a href="http://wrugitsstzsq.com/">wrugitsstzsq</a>

kixmjlyoadkixmjlyoad2012/07/18 02:50gx6UXV , [url=http://dhjobgucinkn.com/]dhjobgucinkn[/url], [link=http://wnojehgqyufu.com/]wnojehgqyufu[/link], http://mbgttgdmsrbe.com/

 |