반가워 python

leave_a_comment·3일 전

설치 요약 정리

  1. Vscode > Extension > Python 설치
  2. 기본 프로필 cmd로 선택
  3. uv 설치
    - 파이썬 설치부터 라이브러리 관리까지 한 번에 도와주는 최신 도구
    - 폴더 경로 '한글' 사용 금지, 폴더 이름 변경 금지, .venv 폴더 내 파일을 직접 수정하거나 이동하지 말기. 라이브러리 관리는 uv add, uv remove 명령어 사용

    .python-version 은 파이썬 버전 작성 파일, pyproject.toml 는 프로젝트의 이름, 버전, 필요한 라이브러리 리스트 총괄 관리하는 핵심 파일

  4. 가상환경 생성 (명령어: uv venv)
  5. 가상환경 활성화 (명령어: source .venv/bin/activate)
  6. 라이브러리 설치 (명령어: uv add jupyter)

    uv.lock 에 yarn.lock 처럼 정확한 라이브러리 버전 정보가 기록된다.

  7. Jupyter Notebook (Extension 추가)
    • 코드 한 줄마다 실행 결과를 즉시 확인하며 학습 가능

변수/자료형과 관련 메소드

  1. input
  • 사용자 입력
name = input("이름을 입력하세요")
  1. list
  • 여러 값을 순서대로 저장
amounts = [100, 200, 300]
  1. tuple
  • 여러 값을 순서대로 저장 (* 수정 불가)
amounts = (100, 200)
  1. dict
  • key, value 값을 함께 저장
customers = {
	name: "나짱",
}
  1. set
  • 중괄호({})로 선언. 중복 없는 값만 저장
  • 원소의 순서가 의미 없으므로 인덱싱, 슬라이싱 불가
container = {1, 2, 3}

합집합: | 또는 'union'
교집합: & 또는 'intersection'
차집합: - 또는 'difference'
대칭 차집합: ^ 또는 'symmetric_difference'
  1. 슬라이싱
  • data[start:end] : 인덱스 n에서 end-1까지 추출
  • data[start:] 인덱스 m에서 끝까지 추출
  • data[:end] 처음부터 end-1까지 추출
  1. f-문자열
  • 문자열 앞에 f를 붙이고 중괄호({})안에 변수나 표현식을 직접 넣을 수 있음
str = 'like this'
# 문자열 앞에 f 붙이기
print(f'do it {str}')
  1. 문자열.capitalize()
  • 맨 앞 문자 제외하고 소문자 처리
  1. 문자열.strip()
  • 양쪽에서 공백이나 지정한 문자열을 제거한 문자열 반환 (왼쪽은 lstrip, 오른쪽은 rstrip)
  1. 문자열.count(sub)
  • 특정 문자열이 나타나는 횟수를 반환
  1. range(n)
  • 정수 0부터 n-1까지 범위의 리스트 생성
dd = list(range(8))
print(dd)
dd.extend([4])
print(dd)
# 이렇게 하면 안됨. print(dd.extend([4])) => None 으로 출력됨
  1. range(m, n)
  • 정수 m부터 n-1까지 범위의 리스트 생성
  1. range(m, n, x)
  • 정수 m부터 n-1까지 x간격으로 생성
  1. 리스트 삭제
  • del 리스트[index]
  • 리스트[start:end] = []
  • 리스트.remove(값)
  • 리스트.pop()
  1. 리스트 추가
  • 리스트 + [1,2,3]
  • 리스트.extend([1,2,3])
  • 리스트.append(값)
  • 리스트.insert(index, value)
  1. 딕셔너리 메소드
  • 딕셔너리.keys() : 키 반환
  • 딕셔너리.values() : value 반환
  • 딕셔너리.items() : dict_items([('city', 'Seoul'), ('forecast', ['Sunny'])]) 형태로 반환
  • 딕셔너리.clear() : 모든 요소 삭제
  • 딕셔너리.get(key, "대신할 값")

참고

# 무슨 자료형인지 확인
print(type(x),type(y), type(z))

# a를 b로 나눈 몫
a // b

# a를 b로 나눈 나머지
a % b

# a의 b제곱
a ** b

# 아래와 같이 한화를 가독성 있게 표현 가능
money = 10_000_000_000

# "i'm" (o)
# 'I'M' (X)
# 'i\'m' (O)'
# 줄바꿈 \n
# 여러줄은 '''''', """"""
# """\""" 이렇게 하면 줄바꿈 생략 가능
# 긴글일때에는 따옴표를 3개 작성한다. ''', """


review = """\
안녕하세요
오늘 짜장면은 정말 맛있었습니다.\
"""


# 곱하기 연산
star = "*"
result = star * 10

# 리스트 요소 변경
nums = list(range(8))
nums[2:4] = [20, 30]

nums[4:] = [50,60,70,80]



# 딕셔너리는 인덱싱, 슬라이싱 불가
del 딕셔너리[key] 사용하여 key 삭제 가능
in 연산자 사용해 해당 key가 있는지 확인 가능

반복문과 함수

  1. enumerate
  • index와 값을 함께 변수로 가져오고 싶을 때 사용
  • 주로 특정 위치의 값을 제어하고 싶을 때 사용
fruits = ['apple', 'orange']
for idx, fruit in enumerate(fruits):
    print(idx, fruit)

  1. def (함수 정의)
  • *args, **kwargs : 매개변수의 수가 정해져 있지 않을 때
  • *args는 함수에 전달된 인수들을 튜플 형태로 받아서 처리
  • **kwargs는 함수에 전달된 인수들을 딕셔너리 형태로 받아서 처리
def get_average_score(*args):
    length = len(args)
    return sum(args) / length

avg_score = get_average_score(70,70,70)

print(int(avg_score))
  1. lambda
  • 한줄 코드 작성
evens = list(filter(lambda x: x % 2 == 0, numbers))
  1. 파일 읽기
import os

current_path = os.getcwd()
files = os.listdir()
os.mkdir("test")
# 오류 없이 파일 만들기
if not os.path.exists("test"):
    print("exist")


print(current_path)
print(files)
  1. 파일 생성
  • w 모드로 파일을 생성할 경우 덮어쓰기 되어 이전의 내용은 지워진다.
import os

def make_folder(forder_name):
    if not os.path.exists(forder_name):
        os.mkdir("test2")

make_folder("test2")

# mode: w(writeㅡ생성), r(readㅡ읽기), a(appendㅡ추가)
"""
with open(경로, mode="", encoding="") as 별칭:
    실행할 코드 
"""


with open("./test2/mytest.txt", mode="w", encoding="utf-8") as f:
    f.write("hihi")

with open("./mytest.txt", mode="w", encoding="utf-8") as f:
    f.write("hihihihihih")
  1. 예외 처리
try:
    실행코드
except Exception as e:
    오류가 나왔을 경우 실행할 코드
finally:
    오류 여부와 상관없이 마지막에 실행할 코드
  1. 시간 표현
from datetime import datetime, timedelta
now = datetime.now()

#대소문자 구분해야함

print(now.strftime(format="%Y년-%m월-%d일 %H시 %M분 %S초"))
print(f"1일 후: {now + timedelta(days=1)}")
print(f"1시간 후: {now + timedelta(hours=1)}")
print(f"1분 후: {now + timedelta(minutes=1)}")


#날짜 차이 구하기
from datetime import datetime


start_date = datetime(2026, 6, 20)
end_date = datetime(2026, 6, 23)

diff = end_date - start_date

print(diff)
print(diff.total_seconds()/60/60)

클래스

  • 클래스ㅡ는 데이터와 기능을 하나로 묶어준다.
class User:
	pass
    
 user1 = User()
 user2 = User()
  1. 생성자
class User:
	# __init__은 객체 생성 시 자동 실행
    def __init__(self, name, email, department):
        self.name = name
        self.email = email 
        self.department = department

    def send_email(self):
        print(f"{self.department}의 {self.name}님에게 {self.email}로 이메일을 보냈습니다.")

    def print_profile(self):
        print("이름", self.name)
        print("이메일:", self.email)
        print("부서:", self.department)
  1. 내장 메소드
__str__ : print를 실행했을 때 화면에 보여줄 내용을 정의하는 메소드
__repr__ : 객체를 개발자가 확인하기 좋은 형태로 표현하는 메소드
__len__ : len을 실행했을 때 어떤 값을 반환할지 정의하는 메소드
__eq__ : ==연산자로 두 객체를 비교할 때 어떤 기준으로 같은지 판단할지 정의
  1. 내부용 메소드
  • _로 시작하는 메소드는 내부 사용 목적
  1. 데코레이터
  • 함수나 메소드의 동작 방식을 감싸서 확장하는 문법
  • 기존 코드를 수정하지 않고 역할이나 성격을 추가하는 방법
  • 클래스, 머신러닝, 딥러닝, ai 프레임워크 전반에서 매우 자주 등장한다.
@property : info()가 아니라 info로 사용한다. 값처럼 보이지만 내부에서는 함수가 실행된다.
@classmethod : 객체를 만드는 책임을 클래스에게 맡긴다. 새로운 객체를 만드는 방법을 정의한다. 
@staticmethod : 해당 클래스와 의미적으로 관련된 기능을 묶기 위함
profile
나도 성장하고파

0개의 댓글