커뮤니티
포인트
로딩중
쿠폰
내 강의실
국비 신청 내역
수강권
증명서
숙제 피드백
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
파이썬 try except finally scope 관련질문
웹개발 종합반
3주차
북마크
백*현
댓글
5
추천
0
조회수
18
조회수
18
답변 완료



import requests
from bs4 import BeautifulSoup
from pymongo import MongoClient

client = MongoClient('mongodb+srv://test:sparta@cluster0.clu05af.mongodb.net/Cluster0?retryWrites=true&w=majority')
db = client.dbsparta

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
data = requests.get('https://www.genie.co.kr/chart/top200?ditc=M&rtm=N&ymd=20210701', headers=headers)

soup = BeautifulSoup(data.text, 'html.parser')

musics = soup.select('tbody> .list')





for music in musics:
    if music is not None:

        try:
            temp_rank = music.select_one('td.number').text
            del_rank = music.select_one('td.number >span').text
            temp_title = music.select_one('td.info >a').text
            temp_musician = music.select_one('td.info >.artist.ellipsis').text

        except AttributeError : print(del_rank)

        finally:
            rank = temp_rank.replace(del_rank,'').strip()
            title = temp_title.strip()
            musician = temp_musician.strip()
            print(rank,title,musician)



이부분에서


try와 except finally가 각각 다른 scope를 가진다고 해설을 해주셨는데


try와 finally가 try에서 선언한 변수들이 로컬변수라 서로 scope가 다르다면


실행하는 finally 의 출력문에 name error 가 떠야하는데


스파르타 즉문즉답


정상적으로 출력됩니다.


왜그런가요 ?








취소
 공유
취소
댓글 0
댓글 알림
나의얼굴