Python에서 변수 체크
글쓴이: eminency / 작성시간: 화, 2003/07/29 - 12:05오전
취미로 Python을 가끔씩 하는데 맨날 C만 만지다보니 적응이 잘 안되네요 -_-;
다들 아시다시피 파이썬은 변수 선언을 하지 않는데요, 바보같은 질문인지도 모르겠습니다만 변수가 선언되어 있는지를 체크할 수 있는 함수가 혹시 있나요? -_-
예를 들면 'class'라는 클래스의 인스턴스가 만들어져 있지 않으면 그 인스턴스를 만들어 주려 하는데요. argv로 정보가 들어오면 프로그램 시작시에 인스턴스를 만들어주고, 아니면 커맨드라인 인터페이스로 정보를 받아 인스턴스를 만들어 주기 위함입니다.
즉...
if ???(f): f = class(info)
이런 식으로 해주고 싶은데 ???에 들어갈 함수가 있나요? 아마 없을 것 같지만... 아니면 다른 방법이라도...
NameError인가? 이 예외를 처리하는 방법도 가능하겠지만 일일이 하려니 이것도 만만치 않아서...ㅡ.ㅡ;;
Forums:
[code:1]if 'f' not in globals().
이 정도면 안 되나요?
-----
http://monpetit.posterous.com/
http://monpetit.tistory.com/
그건요..
isinstance 를 쓰면 될텐데..
용도가 좀 틀리려나.. :?:
[quote="monpetit"][code:1]if 'f' not in
아, globals()란 함수가 있는 줄은 몰랐습니다. 감사합니다.
isinstance도 첨 알았는데... 유용히 쓰겠습니다...(_ _)
노루가 사냥꾼의 손에서 벗어나는 것 같이, 새가 그물치는 자의 손에서 벗어나는 것 같이 스스로 구원하라 -잠언 6:5
질문하신 것과는 좀 다르지만 변수의 존재여부를 조사하는데는 globals
질문하신 것과는 좀 다르지만 변수의 존재여부를 조사하는데는 globals와 함께 locals나 dir도 함께 쓰시면 유용하실 겁니다.
locals는 globals와 똑같이 dict 형태로 local namespace를 보여주는 거구요.
dir의 경우는 class, instance, module에 쓰시면 됩니다.
이 코드를 실행시켜 보면
이런 식이 됩니다. 끝부분은 사용해서는 안될 python의 어두운 측면
:wink:
오늘 우리는 동지를 땅에 묻었습니다. 그러나 땅은 이제 우리들의 것입니다.
아직도 우리의 적은 강합니다. 그러나 우리는 그들보다 많습니다.
항상 많을 것입니다.
...
왜 사용해선 안되는지 여쭤봐도 될까요?
----
http://nohmad.tumblr.com/
[code:1] print "Now you enter th
요부분이 그 출력에 해당하는 소스인데요.
요기에 이어서
실행시켜 보시면 c2.printu()에서
가 발생할 겁니다. u는 class theclass에 정의되지 않았고 runtime에 instance c에 생성되었으므로 다른 theclass의 instance들은 u를 가지고 있지 않으니까요.
뭐 이런 trick이 가능은 하지만 사용하면 안된다는 그냥 그런 얘기였습니다.
오늘 우리는 동지를 땅에 묻었습니다. 그러나 땅은 이제 우리들의 것입니다.
아직도 우리의 적은 강합니다. 그러나 우리는 그들보다 많습니다.
항상 많을 것입니다.
댓글 달기