파이썬 undefined 처리방법

Programming 2020. 8. 6. 18:48 Posted by ­행복

https://ondemand.tistory.com/m/258

Python 에서 선언되지 않은 변수를 처리하는 방법

언어마다 선언되지 않은 변수를 처리하는 방법들이 조금씩 다른 것 같습니다. 가령 Javascript 에서는 변수가 선언되지 않았을 때 undefined 인지를 확인하는 방법으로 선언되지 않은 변수를 조건문��

ondemand.tistory.com


처음 발단은
'공용'을 보유한 사용자들만 '전용'을 보유했는지 여부에 따라서 Flag라는 변수에다가 결과값을 저장하게끔 코딩을 했다.
'공용'을 보유하지 않은 사람의 경우를 if문으로 처리하기 위해 Flag가 선언되지 아니한 경우를 찾고 있었다.
'공용'을 보유하지 않은 사람들은 Flag라는 변수 자체가 선언되지 않았기 때문에 파이썬에서는 NameError를 출력할 수 밖에 없다.
Javascript는 undefined를 활용하면
if (Flag==undefined) 이런식으로 코딩했던 이력이 있기에 그런 아이디어로 코딩을 하고자 찾아보는 중이었다.

그래서 위에 첨부한 링크와 같은 내용을 구글링해서 찾아냈다. 어쨌든 파이썬은 변수를 선언 안하면 undefined라고 활용할수가 없는 언어임이 결론이었다. 그런데 내가 코딩한 다른 소스코드를 보다보니 이미 내가 그것을 처리했었다.
기존에 발급받은 auth키를 header에 넣고 request를 보내서 key값을 가져온다. 그다음에 key값을 가지고 사용자 검색을 가능하게 되는 API가 있다.
나는 여기서 처음에 Key값이 선언되지 않은 경우라면 최초 1번만 인증을 받고, Key값이 있으면 skip을 하고 싶었다. 근데 그게 결국 변수의 undefined 조치방법과 동일한 내용이다.

결론은 과거의 자신을 자랑하고싶은 뻘글..이다.
try:
변수
except NameError as e:
변수선언
finally:
코드 작성

여기서 except부분을 활용하면 undefined에대한 대처가 가능할듯. 근데 저렇게 할바옌 처음부터 변수='어떤값' 넣고 프로그램 실행시키면
변수를 선언하고 그 변수의 값인 '어떤값'이 그대로 안바뀐 경우, 변수가 한번도 선언되지 않은 undefined상태와 같은 효과일것같다. 조금만 아이디어를 내면 해결할 수 있다. 메모리효율성을 차치하고서라도..방법은 있다. 그래서 굳이 구글링해도 많이 안나오는 것인지도...

해당 아이디어에 영감을 준 소스코드는 아래 첨부한다.

def Init():
headers1 = {'auth':'abcda0' , 'auth-token':'0S2AbC'}
res = request.post(Url,headers=headers1)
global key
key = res.json()['authcode']
#json형태의 리턴값을 Json으로 만들어서 그중 authcode에 해당되는 값만 key변수로 취함



try :
key
except NameError as e:
print("처음 실행했음. 인증키값을 가져와야함")
print(e)
Init()
finally:
headers2= {'key' : key,'속성값':,'속성값'}
res = requests.get(Url+userId, headers=headers2)
if res.status_code==403:
print("인증키 만료로 재인증 요청")
Init()
headers2={'key':key,'속성값':'속성값'}
res=requests.get(Url+userId,
headers=headers2)
print(res.content)

'Programming' 카테고리의 다른 글

RoadMap  (0) 2021.11.11