Python venv
- where python
- 현재 설치되어 있는 파이썬의 위치를 확인, 가장 위에 있는 애가 현재 실행되고 있는 것
- python -m venv venv(가상환경 이름)
- 가상 환경 나와서 설치하면 전역 환경으로 들어간다.
- 나중에 컴퓨터 수정할 때 이런 것도 확인하면 좋을 것 같다.
- pip : python install package
- pip list : 현재 설치되어 있는 파이썬 패키지 (venv에서도 보인다.)
- 원래는 venv 폴더 안에 .env, .gitignore를 두고 파이썬 코드를 작성하는게 맞다.
- 다만 실수 상황에 따라서 전역적으로 관리하고 싶다면 밖에다 빼는 것도 좋을듯하다.
- pycache, venv 때문에 협업할 때 오류가 많이 났었다. 이런건 미리 세팅해서 빼주도록 하자.
- shift + 우클릭 : 터미널 선택 메뉴 창

- python extension을 활용하면 그냥 재생 버튼만 눌러도 실행이 된다.
- extension 안에 인터프리터도 있구나.
- import os
- 운영체제를 사용할 수 있는 파이썬 라이브러리
- .env
- 환경 변수 파일
- */.env ← 이렇게 적으면 각각의 파일 속에 있는 .env 파일을 gitignore하라는 뜻이다.
- requirement.txt
- pip freeze > requirements.txt
- 이 명령어를 작성하면 이 프로그램을 작성하는데 필요한 라이브러리를 전부 작성해준다.
- 개발자가 협업을 위해 작성하는 명세서, 설명서이다.
- 이래서 해커톤 때 requirements.txt를 작성하라고 했던 거구나.
- pip install -r requirements.txt
- 이 명령어를 작성하면 requirements.txt에 있는 라이브러리를 그대로 다운 받아 준다.
- 진짜 대박 명령어!
- 정리하자면
- venv를 설정한다.
- ctrl + shift + P ⇒ venv를 자동으로 설정할 수 있다.
- venv를 실행한다.
- pip install -r requirements.txt를 실행해 라이브러리를 다 다운 받아라.
- venv를 설정한다.
- pip freeze > requirements.txt
Python 기본 문법
- 파이썬은 쉬운 문법으로 작성된 언어이다. 최대한 쉽게 작성하기.
- 개꿀팁
- alt 키 누르고 이동하면 줄 그대로 이동한다.
- ctrl + alt 다중 커서
- 실무랑 연결지어서 이해해보자.
- 정수는 IP 번호를 적을 때 사용한다.
- 부동소수점 : CPU 사용률, 가용성 수치
- 불리언 : 서버 On/Off 유무
- 문자열 : 대부분의 데이
- 파이썬에서 제곱은 ** 별 두개이다. ^이거 아니다.
- 부동 소수점(float)을 다루다 보면 근사의 위험을 항상 생각해야 한다.
- 2/3 == 0.6666666666666666
- (5/3)-1 == 0.6666666666666667
- 인덱싱은 하나의 문자를 찍어주는 것, 슬라이싱은 문자의 범위를 찍어주는 것.
- str, list, tuple, range 얘네들은 순서가 있기 때문에 인덱싱과 슬라이싱이 된다.
- 문자열을 인덱싱을 하면 한 글자의 문자열이 된다.
- [-1]은 맨 뒤 글자를 나타낸다.
- 슬라이싱에서는 [시작:끝+1]이다.
- [5:8] 아! 8-5=3 3개 가져오는거네. 5에서 3개를 가져오는 거네~ 이렇게 이해하자.
- [0:9] 아! 9글자 가져오는 거네.
- print(sing[:-1])
- 이거는 맨 뒤 글자는 빠진다.
sing = "동해물과 백두산이 마르고 닳도록"
# 인덱스[번째]
animal = sing[0] + sing[2]
print(animal)
print("후지" + sing[-1] + "페스티벌")
# 슬라이싱: 범위
print(sing[5:8])
print(sing[:9])
print(sing[:])
print(sing[5:])
print(sing[:8])
print(sing[:-1])
- split()
- 특정한 기준을 정하면 그거에 맞춰 문자열을 쪼갠다.
- 쪼갠 값들은 리스트에 들어가게 된다.
message = "위험-사용자인증실패-2026-04-27"
message_list = message.split("-")
risky_level = message_list[0]
real_msg = message_list[1]
date_list = message_list[2:]
print(risky_level, real_msg, date_list)
- strip()
- 문자열의 앞 뒤 공백과 줄바꿈을 잘라준다.
- lstrip, rstrip으로 왼쪽 오른쪽을 제거할 수 있다.
names = " 최인규, 유유엘, 신지혜, 남보라, 민병연\\n김명성, 김성현, 김수정, 서지우, 김태현\\n한서현 "
print(names)
print(names.strip())
- find(), index()
- 찾고자 하는 문자가 시작하는 인덱스를 반환한다.
- find()는 원하는 문자가 없으면 -1을 반환한다.
- index()는 원하는 문자가 없으면 에러를 반환한다.
text = "문자열에 포함된 모든 | 문자의 개수(공백, 특수문자 | 포함)를 반환"
# find(), index()
print(text.find("포함된"))
print(text[5:8]) => "포함된"
- replace(”,”, “ “)
- 특정 문자를 대체한다.
- ,로 이루어진 것 겉을 줄바꿈으로 바꾸면 한 줄 출력 가능
- join()
- os 경로 만들 때 가장 많이 사용한다. 편하니까.
- 특정 문자 기준으로 대상 문자를 붙인다.
python_path = "Users/Administrator/infra_python32/.venv/Scripts"
print(python_path.split("/"))
python_path_list = python_path.split("/")
print("/".join(python_path_list))
- str 작은 따옴표, 큰 따옴표
- python에서는 둘은 같은 string을 만들어 낸다!
- 만약 ‘ 작은 따옴표를 문자열 안에서 표현하고 싶다면 역슬래시를 사용한다. \’
- carraige_return
- \r
- HTTP에서 나오는 거긴 한데 뭔지 알아보자.
- f-string
- 문자열 안에 변수를 집어 넣는 가장 최신의 방법!
- 과거 방법, 최신 방법 둘 다 알아놓자!
- f-string이 강한 이유는 마스킹, 정렬 연산이 가능하기 때문이다.
- (참고) %d decimal %f float
- input
- 입력 함수, 입력을 받으면 문자열로 입력 받는다.
- 원치 않는 다면 int() 타입 변환을 해야 한다.
- 이런게 중요한 이유는 변수 이름을 붙일 때 규칙을 붙일 수 있기 때문이다.
- kor_scrore = int(input(”당신의 점수는? : “))
- kor_str = input(”당신의 점수는? : )
- 입력 함수, 입력을 받으면 문자열로 입력 받는다.
- random
- type(), dir()
# type() -> 타입 찾기
# print(type(1))
# print(type(1.1))
# print(type("전형진"))
# print(type(False))
# print(type(True))
# print(type(0))
# print(type(None))
# dir() -> 가진 재산 확인
# 이 클래스의 메소드를 전부 확인하게 해준다. 상속 관계는 안보이는 것 같다.
'''
__len__, replace의 차이
- 언더바가 있는 것은 len() 단독 함수로 간다.
- 언더바가 없는 것은 .replace() 이렇게 간다. 아마 직접 달려 있는 메소드라서 그런가보다.
'''
# print(dir(int))
print(dir(str))
- len 함수는 모든 자료형에 다 된다.
Python 자료구조
- Immutable
- list, tuple, set, dict, range, string…
- 순서, 수정, 중복 특징 위주로 외워야 한다.
- list : 순서 있다, 수정할 수 있다, 중복 가능하다.
- tuple : 순서 있다, 수정할 수 없다, 중복 가능하다.
- set : 순서 없다, 수정할 수 있다. 중복 불가능하다.
- dict : key-value 쌍, 순서 생겼다, 수정할 수 있다. key는 중복 불가
- PBL 1번은 for문 없이 1일차 + 2일차 약간으로 해결할 수 있다. 해결해 보자.
- 순서, 수정, 중복 특징 위주로 외워야 한다.
- 리스트
- append : 원소 하나 추가
- remove : 리스트는 중복이 허용되는데 remove는 원소 하나만 지우나? 맞다.
- 순서는 어떻게 지워지는가? 맨 앞에 있는게 지워진다.
- extend
- iterable한 객체를 포함시킬 수 있다.
- 반환값을 갖지 않고 바로 리스트에 대입된다.
- insert
- 원하는 위치에 삽입
- 실무에서는 서버 우선순위 조정에서 사용한다.
server_list.extend(["WEB-02"])
# server_list = server_list + ["WEB-02"]
⇒ 내가 원하는 메소드가 없으면 내가 조합해서 만들어야 한다.
- 튜플
- 하나 뿐인 튜플
- 추가, 수정, 변경, 삭제 다 안된다! 새로운 원소도 아예 못 넣는다고!
- 셋
- 셋 생성 및 추가
- 변경이 안된다는 것은 안의 값은 수정이 안된다는 것이 새로운 값은 추가가 가능하다!
- 순서 없기 때문에 인덱싱 안됨!
- 각종 집합 연산
- intersection 교집합
- difference 차집합
- union 합집합
- _update는 원본 집합을 직접 수정, 갱
- 셋 생성 및 추가
burger_set = set()
burger_set.add("싸이버거 세트")
print(burger_set)
- dict
- 키 - 값 쌍, 실무에서는 dictionary가 제일 중요하다!
- collect = {}, 빈 중괄호는 빈 dict로 인식한다. set가 아니다.
- .get을 이용해 없는 원소에 대해 내가 원하는 값을 넣어줄 수 있거나 None으로 에러 없이 출력하게 할 수 있다. 실무에선 get을 사용하는 것을 추천한다.
- keys
- 키를 합쳐서 dict_keys라는 새로운 자료형으로 반환한다.
- 이후에 list로 바꾸어 인덱싱 및 슬라이싱을 할 수 있다.
- values
- 값을 모아서 반환한다.
- items
- 키 - 값 쌍을 튜플의 형식으로 묶어서 반환한다. for문을 이용해 활용하는게 좋다.
print(server_info.get("password_list"))
print(server_info.get("password_list", "비밀~"))
- 컬렉션 공통
- in, not in
- 문자열도 순서가 있으니 시퀀스고 컬렉션 함수를 사용할 수 있다.
- max min sum : 문자도 우선순위가 있다. 아스키 코드
- sorted
- 정렬하고 반환까지 한다. 원본이 훼손되지 않는다.
- 원본을 훼손하는 것을 지양해야 한다. 훼손되면 안된다~’
- any
- 요소들 중 하나라도 True이면 True 반환
- 위험 요소가 하나라도 있으면 True 반환!
- 요소들 중 하나라도 True이면 True 반환
- all
- 요소들 전부 True이어야 True 반환
- 비밀번호 규칙은 전부 만족해야 하기 때문에 all!
- 요소들 전부 True이어야 True 반환
- in, not in
'Security > SK Shieldus Rookies' 카테고리의 다른 글
| [SK 쉴더스 루키즈] Notion API 연동 실습 (0) | 2026.05.06 |
|---|---|
| [SK 쉴더스 루키즈] Git & Github (0) | 2026.04.28 |
