2017-12-18 15 views

답변

0

블록에 정의 된 변수는 블록 범위를 가지고 있습니다. 즉, 블록 범위는 외부에서 볼 수 없습니다. mynamecall이며, call에만 표시됩니다.
우리가 그러나 당신의 스타일

myname = None 

def call(): 
    global myname  
    myname = Me("Alex") 
    printIt() 

def printIt():  # now we could access myname 
    print(myname.name) 

를 수행하면 더 나은 선택은

def call():  
    myname = Me("Alex") 
    printIt(myname) 

def printIt(somebody):  # now we could access aPerson as well 
    print(somebody.name) 
+0

의견을 보내 주셔서 감사합니다. 나는 그것을 지금 이해한다. 특히 이것은 내 스타일을 완벽하게 고려하여 작동합니다. –

0

myname가 정의 어디에에만 함수 내에서 사용할 수있는 지역 변수 인을 사용하여 불필요한 전역을 방지하는 것입니다.

def call(): 
    myname = Me("Alex") 
    printIt(myname) 

def printIt(myname): 
    print(myname.name) 
+0

완벽하게 작동합니다. 감사합니다! 그것은 실제로 의미가 있습니다. –

0

MyName로 전역 변수되지 않습니다 :

인수로 전달하려고합니다. 그것은 printIt 메소드의 범위에 있지 않습니다. 그것은 호출 메소드에 국한됩니다. 그것에 액세스하고 싶다면 전역 적으로 선언하거나 myname 객체를 printItem에 대한 매개 변수로 전달하십시오.