내일배움캠프 2주차

2023년 03월 26일 by barryjung

    내일배움캠프 2주차 목차

이번주 일일 배운점 외에 더 알게된 점을 적는다.

 

 

[이번주 배운점]

 

<visual studio code에서 컨벤션 쓰기>

파이썬 강의에서 배운 부분인데 기억하고자 적어본다.

파이썬에서는 autopep8이라는 컨벤션을 사용해서 코드작성 포맷을 맞춘다.

 

vscode에서 설정방법은 설정메뉴에 들어가서,

python>formatting:provider 부분을 autopep8로 설정한다.

 

또한 editor>format on save를 체크하면 저장을 누를때마다 포맷을 맞춘다.

 

autopep8 컨벤션에서 추가적으로 기억할 규칙은,

- 변수,함수명은 스네이크 표기법, 클래스 명은 파스칼 표기법을 쓴다.

- 상수를 담을 변수는 대문자로 선언해서 구분한다.

- 리스트 변수명은 복수형을 적어 구분한다.

 


<클래스 변수의 유효범위와 처리>

변수는 유효범위에 따라 전역변수/지역변수로 구분한다.

 

지난번에 혼자 미니게임을 만들면서 알게된 부분인데,

클래스에서 선언되는 변수도 전역변수처럼 쓸 수 있다.

예를들어 이런식이다.

class Player():
	hp = 100

def show():
	print(Player.hp)		# 100
	
show()
print(Player.hp)		# 100

클래스명.변수명으로 어느 위치에서든 즉 전역 변수처럼 쓸 수 있다.

 

 

반면, 다른 경우도 있다.

이번 게임만들기 개인과제를 하면서 알게된 부분인데,

클래스안에 init 함수로 변수를 생성한다면 같은 방법으로 사용할 수 없다.

class Player():
    def __init__(self):
        self.hp = 100

print(Player.hp)		# AttributeError: type object 'Player' has no attribute 'hp'

이렇게 에러가 나온다.

 

 

class Player():
    def __init__(self):
        self.hp = 100

player = Player()

def show():
	print(player.hp)		# 100
	
show()
print(player.hp)		# 100

init함수를 썼을 경우 꼭 이렇게 따로 인스턴스로 선언해줘야 한다.

따로 player라는 함수를 쓴다면 위처럼 잘 출력된다.

 

그냥 Player()만 해줘도 안된다. (위와 같은 에러가 나온다.)

 

내 생각에는 init도 함수이므로

함수의 동작으로 반환되는 값이 저장될 위치가 필요하기 때문에

별도의 변수가 필요한 것으로 보인다.

 

그렇다면은 그 변수의 선언되는 위치가 변수의 유효범위를 정할 것이다.

반대로 보자면, init을 이용하면 전역변수 생성을 제한할수 있다.

 


<type의 유용함>

type()을 이용해서 데이터의 타입을 알수있다.

숫자인지 문자인지 등을 체크할수 있어서 아주 유용하다.

값이 잘 출력안될때 체크해보는 용으로 쓰게 된다.

 

 

조금 특이한 케이스가 있었다.

웹개발 종합반 강의를 복습하다가 웹스크래핑 강의 부분에서 특이한걸 발견했다.

rank = movie.select_one('td:nth-child(1) > img')['alt']
print(type(rank))		# <class 'bs4.element.Tag'>

requests와 bs4를 이용해서 스크래핑한 html데이터를,

위처럼 ['alt']를 붙여 html 태그 안의 alt 속성값을 빼내는 부분이 있었다.

 

데이터가 딕셔너리도 아니고 html태그 모양의 데이터인데 alt 값을 어떻게 구별해내는지 의문이 생겼는데,

type을 출력해보니 bs4.element.Tag라는 특수한 데이터 형태이다.

 

 

자세한 동작은 모르겠으나 bs4를 사용하면

태그 안의 속성들을 선택자로 구분하고 출력해주는게 가능한것 같다.

어쨌든 type을 이용해 일반적인 데이터 형태는 아님을 알 수 있었다.


<venv 수동 실행법>

터미널에서 cmd창을 열고

\venv\Scripts\activate를 입력하면 된다.

타이핑중 탭을 하면 단어가 자동완성된다. (안된다면 방법이 틀렸음을 알수있다.)

 

특이하게도 bash에서는 안되니, cmd를 선택해서 명령어를 쳐야한다.