globals (), locals () 및 vars ()의 차이점은 무엇입니까?
차이점은 무엇이며 globals()
, locals()
그리고는 vars()
? 그들은 무엇을 반환합니까? 결과 업데이트가 유용합니까?
이들 각각은 사전을 반환합니다.
globals()
항상 모듈 네임 스페이스 의 사전을 반환합니다locals()
항상 현재 네임 스페이스 의 사전을 반환 합니다vars()
반환 중 하나 (인수없이 호출하는 경우) 현재 이름 공간 또는 사전 인수의 사전.
locals
그리고 vars
좀 더 설명을 사용할 수 있습니다. 경우 locals()
함수 내에서 호출이 그 순간 반환을 기준으로 기능 네임 스페이스의 사전을 구축 - 더 이름 지정이되어 있지 반환 사전에 반영하고, 어떤 과제 에 대한 사전이되어 있지 실제 로컬 네임 스페이스에 반영 :
def test():
a = 1
b = 2
huh = locals()
c = 3
print(huh)
huh['d'] = 4
print(d)
우리에게 주어지다:
{'a': 1, 'b': 2}
Traceback (most recent call last):
File "test.py", line 30, in <module>
test()
File "test.py", line 26, in test
print(d)
NameError: global name 'd' is not defined
두 가지 메모 :
- 이 동작은 CPython에 따라 다릅니다. 다른 Python은 업데이트를 통해 로컬 네임 스페이스로 되돌릴 수 있습니다.
- CPython 2.x에서는
exec "pass"
함수에 라인을 추가 하여이 작업을 수행 할 수 있습니다.
경우 locals()
라고 외부 함수는 현재 네임 스페이스 실제 사전을 반환합니다. 네임 스페이스에 추가 변경 되어 사전에 반영하고, 사전에 변경 하는 네임 스페이스에 반영 :
class Test(object):
a = 'one'
b = 'two'
huh = locals()
c = 'three'
huh['d'] = 'four'
print huh
우리에게 주어지다:
{
'a': 'one',
'b': 'two',
'c': 'three',
'd': 'four',
'huh': {...},
'__module__': '__main__',
}
지금까지 내가 말한 모든 내용 locals()
도 마찬가지입니다 vars()
... 차이점 vars()
은 다음과 같습니다 . 단일 객체를 인수로 받아들이고 객체를 제공하면 해당 객체의 객체를 반환 __dict__
합니다. 해당 객체가 함수 가 아닌 경우 해당 객체 __dict__
의 네임 스페이스가 반환됩니다.
class Test(object):
a = 'one'
b = 'two'
def frobber(self):
print self.c
t = Test()
huh = vars(t)
huh['c'] = 'three'
t.frobber()
그것은 우리에게 :
three
If the object was a function, you still get its __dict__
, but unless you're doing fun and interesting stuff its probably not very useful:
def test():
a = 1
b = 2
print test.c
huh = vars(test) # these two lines are the same as 'test.c = 3'
huh['c'] = 3
test()
which gives us:
3
참고URL : https://stackoverflow.com/questions/7969949/whats-the-difference-between-globals-locals-and-vars
'development' 카테고리의 다른 글
Postgres 고유 제한 조건과 인덱스 (0) | 2020.07.03 |
---|---|
Java의 마커 인터페이스? (0) | 2020.07.03 |
파이썬 문자열은 [u'String ']으로 인쇄 (0) | 2020.07.03 |
node.js 앱의 코딩 스타일 가이드? (0) | 2020.07.03 |
"토큰 라이저", "파서"및 "렉서"가 무엇인지 그리고 이들이 서로 어떻게 관련되고 사용되는지에 대한 명확한 정의를 찾고 있습니까? (0) | 2020.07.03 |