[SK 쉴더스 루키즈] Python 문법 1

2026. 4. 29. 17:36·Security/SK Shieldus Rookies

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에 있는 라이브러리를 그대로 다운 받아 준다.
      • 진짜 대박 명령어!
    • 정리하자면
      1. venv를 설정한다.
        1. ctrl + shift + P ⇒ venv를 자동으로 설정할 수 있다.
      2. venv를 실행한다.
      3. pip install -r 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 반환!
    • all
      • 요소들 전부 True이어야 True 반환
        • 비밀번호 규칙은 전부 만족해야 하기 때문에 all!

 

 

 

'Security > SK Shieldus Rookies' 카테고리의 다른 글

[SK 쉴더스 루키즈] Notion API 연동 실습  (0) 2026.05.06
[SK 쉴더스 루키즈] Git & Github  (0) 2026.04.28
'Security/SK Shieldus Rookies' 카테고리의 다른 글
  • [SK 쉴더스 루키즈] Notion API 연동 실습
  • [SK 쉴더스 루키즈] Git & Github
BestTomaTo
BestTomaTo
  • BestTomaTo
    기록보관소
    BestTomaTo
  • 전체
    오늘
    어제
    • 분류 전체보기 (36) N
      • Algorithm (8)
      • Computer Science (3)
      • Backend (3)
      • DevOps (4)
        • Kubernetes (3)
        • Docker (0)
      • Data Engineering (8)
      • Cloud (2)
      • AI (1)
      • Security (3) N
        • SK Shieldus Rookies (3) N
      • Reference (2)
      • Project (1)
      • Experience (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    3단계 모델링
    홈 서버
    AWS
    langchain memory
    해커톤 후기
    sql 개발자
    SQLD
    airlfow
    동기 프로그래밍
    langsmith
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
BestTomaTo
[SK 쉴더스 루키즈] Python 문법 1
상단으로

티스토리툴바