궁극의 파이썬 치트 시트 일상적인 작업을 위한 실용적인 파이썬 사용법

궁극의 파이썬 치트 시트 일상적인 작업을 위한 실용적인 파이썬 사용법
TILPosted On Jul 7, 2024124 min read

(다른 내 궁극적인 안내서)

이 치트 시트는 필요에 의해 탄생했습니다. 최근에 언어를 약간 떨어뜨린 후 새로운 Python 프로젝트에 뛰어 들어가야 했기 때문입니다.

Python의 실용적인 구문과 형식을 항상 감사히 여겼습니다. 하지만 Node/Typescript 영역에서 시간을 보내다보니, Python의 최신 기능, 최고의 실천 방법 및 가장 영향적인 도구에 대한 빠른 복습이 필요했습니다. 나는 세부 사항에 얽매이지 않고 빠르게 속도를 내야 했고, 자주 사용해야 하는 작업 및 기능을 참조할 수 있도록 이 목록을 작성했습니다. 본질적으로, 프로그래밍 요구 사항의 80%를 다루는 Python의 중요한 20%를 이해하는 것이 필요했습니다.

이 가이드는 그 여정의 결말입니다. 그동안 만난 가장 실용적인 Python 지식, 통찰력 및 유용한 라이브러리의 모음을 제공합니다. 이것은 가장 가치 있게 여겼던 학습을 공유하기 위해 디자인되었습니다. 여러분의 프로젝트와 과제에 즉시 적용할 수 있는 방식으로 제시됩니다.

저는 일반적으로 함께 작동하는 논리적인 영역으로 섹션을 나누어놨습니다. 관심 있는 영역으로 이동하여 특정 작업이나 주제와 관련된 가장 관련된 항목을 찾을 수 있습니다. 파일 작업, API 상호 작용, 스프레드시트 조작, 수학적 계산 및 목록 및 사전과 같은 데이터 구조 작업을 포함할 것입니다. 추가로, Python이 일반적으로 사용되는 도메인에서 흔히 사용되는 Python 도구상자를 향상시킬 수 있는 몇 가지 유용한 라이브러리를 강조할 것입니다.

만약 치트 시트에 포함되어야 할 내용을 빠뜨렸다고 생각한다면, 댓글에서 알려주시면 목록을 업데이트하겠습니다!

파일 작업하기

1. 파일 읽기

파일의 전체 내용을 읽으려면:

with open('example.txt', 'r') as file:
    content = file.read()
    print(content)

2. 파일 쓰기

기존 내용을 덮어쓰기 위한 파일에 텍스트를 작성하는 방법:

with open('example.txt', 'w') as file:
    file.write('Hello, Python!')

3. 파일에 추가

기존 파일 끝에 텍스트를 추가하는 방법:

with open('example.txt', 'a') as file:
    file.write('\n이 줄을 추가합니다.')

4. 리스트로 라인 읽기

파일을 라인별로 리스트에 읽어오려면:

with open('example.txt', 'r') as file:
    lines = file.readlines()
    print(lines)

5. 파일의 각 라인을 반복하는 방법

파일의 각 라인을 처리하려면:

with open('example.txt', 'r') as file:
    for line in file:
        print(line.strip())

6. 파일의 존재 여부 확인

파일 작업을 수행하기 전에 파일이 존재하는지 확인하려면:

import os
if os.path.exists('example.txt'):
    print('파일이 존재합니다.')
else:
    print('파일이 존재하지 않습니다.')

7. 파일에 목록 쓰기

목록의 각 요소를 파일의 새 줄에 작성하려면:

lines = ['첫 번째 줄', '두 번째 줄', '세 번째 줄'] with open('example.txt', 'w') as file: for line in lines: file.write(f'{line}\n')

8. 여러 파일에 대해 With 블록 사용하기

여러 파일을 동시에 처리하려면 다음과 같이 with 블록을 사용할 수 있습니다:

with open('source.txt', 'r') as source, open('destination.txt', 'w') as destination: content = source.read() destination.write(content)

9. 파일 삭제하기

해당 파일이 존재할 경우 안전하게 파일을 삭제하는 방법:

import os
if os.path.exists('example.txt'):
    os.remove('example.txt')
    print('파일이 삭제되었습니다.')
else:
    print('해당 파일이 존재하지 않습니다.')

10. 이진 파일 읽기 및 쓰기

바이너리 모드로 파일을 읽거나 쓰려면(이미지, 비디오 등에 유용함):

# 바이너리 파일 읽기
with open('image.jpg', 'rb') as file:
    content = file.read()
# 바이너리 파일 쓰기
with open('copy.jpg', 'wb') as file:
    file.write(content)

간단한 HTTP API 작업

1. 기본 GET 요청

API 엔드포인트에서 GET 요청을 사용하여 데이터를 가져오는 방법:

import requests
response = requests.get('https://api.example.com/data')
data = response.json()  # 응답이 JSON 형식일 경우
print(data)

2. 쿼리 매개변수를 포함한 GET 요청

쿼리 매개변수를 포함한 GET 요청을 보내려면:

import requests
params = {'key1': 'value1', 'key2': 'value2'}
response = requests.get('https://api.example.com/search', params=params)
data = response.json()
print(data)

3. HTTP 오류 처리하기

가능한 HTTP 오류를 공손하게 처리하기 위해:

import requests
response = requests.get('https://api.example.com/data')
try:
    response.raise_for_status()  # 상태가 4xx, 5xx인 경우 HTTPError를 발생시킵니다
    data = response.json()
    print(data)
except requests.exceptions.HTTPError as err:
    print(f'HTTP 오류 발생: {err}')

4. API 요청에 대한 Timeout 설정

API 요청이 무한 대기되지 않도록 Timeout을 설정하는 방법:

import requests
try:
    response = requests.get('https://api.example.com/data', timeout=5)  # Timeout은 초 단위로 설정
    data = response.json()
    print(data)
except requests.exceptions.Timeout:
    print('요청 시간이 초과되었습니다')

5. 요청에서 헤더 사용하기

요청에 헤더를 포함하려면 (예: 권한을 위해):

import requests
headers = {'Authorization': 'Bearer YOUR_ACCESS_TOKEN'}
response = requests.get('https://api.example.com/protected', headers=headers)
data = response.json()
print(data)

6. JSON Payload을 사용한 POST 요청

JSON 페이로드를 사용하여 POST 요청을 통해 API 엔드포인트로 데이터를 전송하려면:

import requests
payload = {'key1': 'value1', 'key2': 'value2'}
headers = {'Content-Type': 'application/json'}
response = requests.post('https://api.example.com/submit', json=payload, headers=headers)
print(response.json())

7. 응답 인코딩 처리

올바르게 응답 인코딩을 처리하려면:

import requests
response = requests.get('https://api.example.com/data')
response.encoding = 'utf-8'  # 응답 형식과 일치하도록 인코딩 설정
data = response.text
print(data)

8. 세션과 함께 Requests 사용하기

같은 호스트로 여러 요청을 보내기 위해 세션 객체를 사용하면 성능을 향상시킬 수 있어요:

import requests
with requests.Session() as session:
    session.headers.update({'Authorization': 'Bearer 여러분의_액세스_토큰'})
    response = session.get('https://api.example.com/data')
    print(response.json())

9. 리디렉션 처리

리퀘스트에서 리디렉션을 처리하거나 비활성화하려면:

import requests
response = requests.get('https://api.example.com/data', allow_redirects=False)
print(response.status_code)

10. 대용량 응답 스트리밍

대용량 응답을 처리하기 위해 모두 메모리에 로드하는 대신 청크 단위로 처리하려면:

import requests
response = requests.get('https://api.example.com/large-data', stream=True)
for chunk in response.iter_content(chunk_size=1024):
    process(chunk)  # 실제 처리 함수로 'process'를 교체하세요

리스트 작업

1. 리스트 만들기

리스트를 만들려면:

# 신비한 요소 목록
elements = ['Earth', 'Air', 'Fire', 'Water']

2. 리스트에 추가하기

리스트 끝에 새 요소를 추가하려면:

elements.append("Aether");

3. 리스트에 삽입하기

특정 위치에 요소를 삽입하려면:

# 인덱스 1'Spirit' 삽입
elements.insert(1, 'Spirit')

4. 리스트에서 제거하기

리스트에서 값을 기준으로 요소를 제거하는 방법은 다음과 같아요:

elements.remove('Earth')  # 'Earth'의 첫 번째 발생을 제거합니다

5. 리스트에서 요소를 뽑아내기

주어진 인덱스에서 요소를 제거하고 반환하는 방법은 다음과 같아요:

last_element = elements.pop()  # 마지막 요소를 제거하고 반환합니다

6. 요소의 인덱스 찾기

첫 번째 발생 요소의 인덱스를 찾으려면:

index_of_air = elements.index("Air");

7. 리스트 슬라이싱

리스트를 슬라이스하여 하위 리스트를 얻으려면:

# 인덱스 1부터 3까지 요소 가져오기
sub_elements = elements[1:4]

8. 리스트 컴프리헨션

기존 목록의 각 요소에 식을 적용하여 새 목록을 만들려면:

# 각 요소의 길이로 새 목록 생성
lengths = [len(element) for element in elements]
  1. 목록 정렬

목록을 오름차순으로 정렬하려면 (위치 기준으로):

elements.sort();

10. 리스트 뒤집기

리스트의 요소를 제자리에서 뒤집으려면:

elements.reverse();

딕셔너리 사용하기

1. 딕셔너리 생성하기

새로운 딕셔너리를 만들려면:

# 요소와 그들의 기호에 관한 책
elements = {'Hydrogen': 'H', 'Helium': 'He', 'Lithium': 'Li'}

2. 항목 추가 또는 업데이트

새로운 항목을 추가하거나 기존 항목을 업데이트하려면:

elements['Carbon'] = 'C'  # 'Carbon'을 추가하거나 그 값이 'C'로 업데이트됩니다

3. 항목 삭제

사전에서 항목을 삭제하려면:

del elements['Lithium']  # 'Lithium' 키와 값을 삭제합니다

4. 키 존재 여부 확인

키가 사전 안에 있는지 확인하려면:

if 'Helium' in elements:
    print('Helium is present')

5. 키를 반복하는 법

딕셔너리의 키를 반복하려면:

for element in elements:
    print(element)  # 각 키를 출력합니다

6. 값 순회하기

딕셔너리에서 값들을 순회하려면:

for symbol in elements.values():
    print(symbol)  # 각 값 출력하기

7. 항목 순회하기

두 가지를 통합하여 여행하기:

elements.items()안에서 element, symbol에 대해:
    print(f'{element}: {symbol}')

8. 사전 컴프리헨션

반복 가능한 항목 위에 주문을 통해 새로운 사전을 창조하다:

0부터 4까지의 숫자의 제곱

squares = {x: x**2 for x in range(5)}

9. 딕셔너리 병합

두 개 이상의 딕셔너리를 병합하여 그 항목들의 새로운 동맹을 형성합니다:

alchemists = {'Paracelsus': 'Mercury'} philosophers = {'Plato': 'Aether'} merged = {**alchemists, **philosophers} # Python 3.5+

10. 기본값과 함께 값 가져오기

값을 안전하게 가져오려면, 없는 키에 대한 기본값을 제공합니다:

element = elements.get('Neon', 'Unknown')  # 'Neon'이 발견되지 않을 경우 'Unknown'을 반환합니다

운영 체제와 작업하기

1. 파일 경로 탐색

파일 경로를 만들고 분해하여 다양한 환경(운영 체제)에서 호환성을 보장합니다:

import os
# 운영 체제와 호환되는 경로 만들기
path = os.path.join('mystic', 'forest', 'artifact.txt')
# 고서가 있는 디렉토리 검색
directory = os.path.dirname(path)
# 유물의 이름 공개
artifact_name = os.path.basename(path)

2. 디렉터리 내용 나열

신비로운 디렉토리 안의 모든 엔티티를 공개하기 위해:

import os
contents = os.listdir('enchanted_grove')
print(contents)

3. 디렉토리 생성하기

파일 시스템의 직물 속에 새로운 디렉토리를 창조하기 위해:

import os
# 단일 디렉토리 생성
os.mkdir('alchemy_lab')
# 디렉토리 계층 생성
os.makedirs('alchemy_lab/potions/elixirs')

4. 파일 및 디렉토리 삭제

파일이나 디렉토리를 지우고, 그 본질을 추방하려면:

import os
# 파일 삭제
os.remove('unnecessary_scroll.txt')
# 빈 디렉토리 삭제
os.rmdir('abandoned_hut')
# 디렉토리와 그 내용물 삭제
import shutil
shutil.rmtree('cursed_cavern')

5. 셸 명령 실행하기

파이썬에서 쉘의 고대적인 힘을 직접 호출하려면:

import subprocess
# 'echo' 주문 호출
result = subprocess.run(['echo', 'Revealing the arcane'], capture_output=True, text=True)
print(result.stdout)

6. 환경 변수 사용하기

에테리얼 환경 변수를 읽고 기록하려면:

import os
# 'PATH' 변수 읽기
path = os.environ.get('PATH')
# 새 환경 변수 생성
os.environ['MAGIC'] = 'Arcane'

7. 현재 작업 디렉토리 변경

파일 시스템 내에서 다른 디렉토리로 이동하려면:

import os
# 'arcane_library' 디렉토리로 이동
os.chdir('arcane_library')

8. 경로의 존재 및 유형

경로의 존재 및 유형을 구분하는 방법 — 파일인지 디렉토리인지 확인하기:

import os
# 경로가 존재하는지 확인
exists = os.path.exists('mysterious_ruins')
# 경로가 디렉토리인지 확인
is_directory = os.path.isdir('mysterious_ruins')
# 경로가 파일인지 확인
is_file = os.path.isfile('ancient_manuscript.txt')

9. 임시 파일 작업

임시 파일과 디렉토리를 소환하려면, 일시적이며 덧없습니다:

import tempfile
# 임시 파일 생성
temp_file = tempfile.NamedTemporaryFile(delete=False)
print(temp_file.name)
# 임시 디렉토리 생성
temp_dir = tempfile.TemporaryDirectory()
print(temp_dir.name)

10. 시스템 정보 가져오기

호스트 시스템에 대한 정보, 시스템 이름 및 해당 지원하는 마법을 알아보려면:

import os
import platform
# 운영 체제 확인
os_name = os.name  # 'posix', 'nt', 'java'
# 자세한 시스템 정보 확인
system_info = platform.system()  # 'Linux', 'Windows', 'Darwin'

CLI 작업 — 표준 입력, 표준 출력, 표준 에러

1. 사용자 입력 읽기

STDIN에서 입력 받기:

user_input = input("지혜를 나누어주세요: ")
print(f"당신이 공유한 내용: {user_input}")

2. STDOUT로 출력하기

콘솔에 메시지 출력하기:

print("Behold, the message of the ancients!");

3. 포맷팅된 출력

우아하고 정확하게 변수를 메시지에 작살낼 때:

name = "Merlin"
age = 300
print(f"{name}, of {age} years, speaks of forgotten lore.")

4. 표준 입력에서 행 읽기

표준 입력에서 행마다 공백을 제거하세요:

import sys
for line in sys.stdin:
    print(f"Echo from the void: {line.strip()}")

5. 표준 에러로 쓰기

STDERR로 메시지를 보내려면:

import sys
sys.stderr.write("조심하세요! 그 길에는 위험이 가득합니다.\n")

6. STDOUT 리다이렉션

STDOUT을 리다이렉션하려면:

import sys
original_stdout = sys.stdout  # 원래 STDOUT을 보존합니다
with open('mystic_log.txt', 'w') as f:
    sys.stdout = f  # STDOUT을 파일로 리디렉션합니다
    print("이 메시지는 mystic_log.txt 파일 안에 새겨졌습니다.")
sys.stdout = original_stdout  # STDOUT을 본래의 상태로 복원합니다

7. STDERR 리디렉션

STDERR 리디렉션:

import sys
with open('warnings.txt', 'w') as f:
    sys.stderr = f  # STDERR를 리디렉션합니다
    print("이 경고는 warnings.txt 파일 안에 봉인되었습니다.", file=sys.stderr)

8. 비밀번호 요청하기

비밀번호를 요청하려면:

import getpass
secret_spell = getpass.getpass("비밀 주문을 속삭여주세요: ")

9. 명령줄 인수

커맨드 라인 인수를 처리하고 작업하는 중:

import sys
# 스크립트의 이름은 첫 번째 인수이며, 호출자가 전달한 것이 이어집니다
script, first_arg, second_arg = sys.argv
print(f"신성한 토큰과 함께 호출됨: {first_arg}{second_arg}")

10. 복잡한 CLI 상호작용을 위한 Argparse 사용

설명과 옵션/인수 추가하기:

import argparse
parser = argparse.ArgumentParser(description="Summon the power of the ancient scripts.")
parser.add_argument('spell', help="Specify the spell to cast")
parser.add_argument('--power', type=int, help="Indicate the power level of the spell")
args = parser.parse_args()
print(f"Invoking {args.spell} with a power level of {args.power}")

Working with Mathematical Operations and Permutations

1. Basic Arithmetic Operations

For basic arithmetic operations:

sum = 7 + 3  # 더하기
difference = 7 - 3  # 빼기
product = 7 * 3  # 곱하기
quotient = 7 / 3  # 나누기
remainder = 7 % 3  # 나머지
power = 7 ** 3  # 지수

2. 복소수 다루기

복소수를 다루기 위해:

z = complex(2, 3)  # 복소수 2 + 3j 생성
real_part = z.real  # 실수부 추출
imaginary_part = z.imag  # 허수부 추출
conjugate = z.conjugate()  # 켤레복소수 구하기

3. 수학 함수

일반적인 수학 함수:

import math
root = math.sqrt(16)  # 제곱근
logarithm = math.log(100, 10)  # 밑이 10100의 로그값
sine = math.sin(math.pi / 2)  # 90도의 사인 (라디안 단위)

4. 순열 생성

아래는 주어진 집합에서 순열을 생성하는 간단한 방법입니다:

from itertools import permutations
paths = permutations([1, 2, 3])  # 리스트 [1, 2, 3]의 모든 순열을 생성합니다.
for path in paths:
    print(path)

5. 조합 생성하기

조합을 생성하는 간단한 방법입니다.

from itertools import combinations
combos = combinations([1, 2, 3, 4], 2)  # 모든 2개 요소 조합 생성
for combo in combos:
    print(combo)

6. 랜덤 숫자 생성

랜덤 숫자를 얻으려면:

import random
num = random.randint(1, 100)  # 1부터 100 사이의 랜덤 정수 생성

7. 분수 작업하기

분수를 다룰 때는:

from fractions import Fraction
f = Fraction(3, 4)  # 3/4 분수를 생성합니다
print(f + 1)  # 분수와 정수를 더합니다

8. 통계 함수

평균, 중앙값 및 표준 편차를 얻으려면:

import statistics
data = [1, 2, 3, 4, 5]
mean = statistics.mean(data)  # 평균
median = statistics.median(data)  # 중앙값
stdev = statistics.stdev(data)  # 표준 편차

9. 삼각 함수

삼각함수 작업하기:

import math
angle_rad = math.radians(60)  # 60도를 라디안으로 변환
cosine = math.cos(angle_rad)  # 해당 각도의 코사인

10. 무한대 및 NaN 다루기

무한대 및 NaN을 다루는 방법:

import math
infinity = math.inf  # 무한대 표현
not_a_number = math.nan  # 숫자가 아닌 값을 나타내는 NaN

데이터베이스 작업

1. 연결 설정

포스트그레스 데이터베이스에 연결을 생성하려면:

import psycopg2
connection = psycopg2.connect(
    dbname='your_database',
    user='your_username',
    password='your_password',
    host='your_host'
)

2. 커서 만들기

데이터베이스 커서를 생성하여 레코드를 이동하고 조작할 수 있습니다:

cursor = connection.cursor();

3. 쿼리 실행

데이터베이스에서 데이터 선택하기:

cursor.execute("SELECT * FROM your_table");

4. 쿼리 결과 가져오기

커서를 사용하여 데이터 가져오기:

records = cursor.fetchall()
for record in records:
    print(record)

5. 레코드 삽입

데이터를 데이터베이스 테이블에 삽입하는 방법:

cursor.execute("INSERT INTO your_table (column1, column2) VALUES (%s, %s)", ('value1', 'value2'))
connection.commit()  # 트랜잭션을 완료합니다

6. 레코드 업데이트

레코드를 변경하려면:

cursor.execute("UPDATE your_table SET column1 = %s WHERE column2 = %s", ("new_value", "condition_value"));
connection.commit();

7. 레코드 삭제

테이블에서 레코드를 삭제하려면:

cursor.execute("DELETE FROM your_table WHERE condition_column = %s", ('condition_value',))
connection.commit()

8. 테이블 생성

새로운 테이블을 생성하려면, 구조를 정의하세요.

cursor.execute("""
    CREATE TABLE your_new_table (
        id SERIAL PRIMARY KEY,
        column1 VARCHAR(255),
        column2 INTEGER
    )
""")
connection.commit()

9. 테이블 삭제하기

테이블을 삭제하려면:

cursor.execute("DROP TABLE if exists your_table");
connection.commit();

10. 트랜잭션 사용하기

원자성을 위해 트랜잭션을 사용하는 방법입니다:

try:
    cursor.execute("첫 번째 트랜잭션 쿼리")
    cursor.execute("두 번째 트랜잭션 쿼리")
    connection.commit()  # 모든 것이 잘되면 커밋
except Exception as e:
    connection.rollback()  # 문제 발생 시 롤백
    print(f"오류 발생: {e}")

비동기 IO 작업하기 (비동기 프로그래밍)

1. 비동기 함수 정의하기

async 함수를 선언하려면 다음과 같이 작성할 수 있습니다:

import asyncio
async def fetch_data():
    print("데이터 가져오는 중...")
    await asyncio.sleep(2)  # I/O 작업 시뮬레이션
    print("데이터를 가져왔습니다.")

2. 비동기 함수 실행하기

비동기 함수를 호출하고 기다리려면:

async def main():
    await fetch_data()
asyncio.run(main())

3. 여러 코루틴 기다리기

여러 비동기 함수를 호출하고 모두 기다리려면:

비동기로 주요 함수():
    작업1 = 데이터_가져오기()
    작업2 = 데이터_가져오기()
    await asyncio.gather(작업1, 작업2)
asyncio.run(주요 함수())

4. 작업 생성하기

작업을 보내려면:

비동기로 주요 함수():
    작업1 = asyncio.create_task(데이터_가져오기())
    작업2 = asyncio.create_task(데이터_가져오기())
    await 작업1
    await 작업2
asyncio.run(주요 함수())

5. 비동기 반복

비동기적으로 횡행하면서 다른 함수에 시간을 주는 방법:

async def fetch_item(item):
    await asyncio.sleep(1)  # I/O 작업을 시뮬레이션합니다
    print(f"{item}을 가져왔습니다")
async def main():
    items = ['물약', '스크롤', '마법봉']
    for item in items:
        await fetch_item(item)
asyncio.run(main())

6. 비동기적인 컨텍스트 매니저 사용하기

비동기 함수 내에서 리소스가 적절하게 관리되도록 하려면:

async def async_context_manager():
    print("컨텍스트 진입 중")
    await asyncio.sleep(1)
    print("컨텍스트 종료 중")
async def main():
    async with async_context_manager():
        print("컨텍스트 내부에 있음")
asyncio.run(main())

7. 비동기 코드에서 예외 처리

비동기 함수에서 에러를 우아하게 처리하고 관리하려면:

async def risky_spell():
    await asyncio.sleep(1)
    raise ValueError("주문이 실패했습니다!")
async def main():
    try:
        await risky_spell()
    except ValueError as e:
        print(f"에러가 발생했습니다: {e}")
asyncio.run(main())

8. 비동기 생성기

개별 시간에 도착하는 각각의 비동기 생성기를 생성하려면:

async def fetch_items():
    items = ['크리스탈', '부적', '단검']
    for item in items:
        await asyncio.sleep(1)
        yield item
async def main():
    async for item in fetch_items():
        print(f"{item}을(를) 찾았습니다")
asyncio.run(main())

9. 세마포어 사용하기

동시 작업의 수를 제한하려면:

async def guarded_spell(semaphore, item):
    async with semaphore:
        print(f"{item} 처리 중")
        await asyncio.sleep(1)
async def main():
    semaphore = asyncio.Semaphore(2)  # 동시 작업 2개 허용
    await asyncio.gather(*(guarded_spell(semaphore, i) for i in range(5)))
asyncio.run(main())

10. 이벤트 루프

비동기 루프와 직접 상호 작용하여 실행 흐름을 사용자 정의할 수 있습니다:

async def perform_spell():
    print("주문 시전 중...")
    await asyncio.sleep(1)
    print("주문 완료.")
loop = asyncio.get_event_loop()
try:
    loop.run_until_complete(perform_spell())
finally:
    loop.close()

네트워크, 소켓 및 네트워크 인터페이스 작업

1. 소켓 생성

네트워크 통신용 소켓을 만들려면:

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

2. 원격 서버에 연결하기

소켓을 통해 원격 서버와 연결을 설정합니다.

s.connect(('example.com', 80))  # Connect to example.com on port 80

3. Sending Data

To dispatch data through the network to a connected entity:

s.sendall(b'Hello, server')

4. 데이터 수신

네트워크로부터 데이터를 수신하려면:

data = s.recv(1024)  # 최대 1024바이트까지 수신
print('수신 완료', repr(data))

5. 소켓 닫기

기분 좋은 마음으로 다음과 같이 번역합니다.

네트워크 링크를 끊고 소켓을 차분히 종료하려면:

s.close();

6. 수신 소켓 생성

들어오는 연결을 수신하기 위해 소켓을 열려면:

serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serversocket.bind(('localhost', 8080))  # localhost와 포트 8080에 바인딩합니다.
serversocket.listen()  # 들어오는 연결을 대기합니다.

7. 연결 수락하기

네트워크 링크를 수락하고 설정하기 위해서:

clientsocket, address = serversocket.accept()
print(f"Connection from {address} has been established.")

8. 블로킹되지 않는 소켓 작업

소켓의 모드를 블로킹되지 않도록 설정하려면:

s.setblocking(False);

9. UDP 소켓 사용하기

UDP 소켓을 생성하여 더 빠르지만 덜 신뢰성있는 통신을 위한 프로토콜이 필요합니다:

udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udp_socket.bind(('localhost', 8081))  # UDP 소켓을 로컬호스트의 8081 포트에 바인딩합니다

10. 네트워크 인터페이스 나열하기

기계의 네트워크 인터페이스의 이름과 주소를 확인하려면:

import socket
import netifaces
for interface in netifaces.interfaces():
    addr = netifaces.ifaddresses(interface).get(netifaces.AF_INET)
    if addr:
        print(f"Interface: {interface}, Address: {addr[0]['addr']}")

판다 라이브러리 (데이터프레임) 사용하기

1. 데이터프레임 생성하기

자신만의 열과 데이터로 DataFrame을 만들려면:

import pandas as pd
data = {
    'Element': ['Earth', 'Water', 'Fire', 'Air'],
    'Symbol': ['🜃', '🜄', '🜂', '🜁']
}
df = pd.DataFrame(data)

2. CSV 파일에서 데이터 읽기

CSV 파일에서 데이터를 읽어와 DataFrame으로 변환하기:

df = pd.read_csv("elements.csv");

3. 처음 몇 개 행 확인하기

데이터프레임에서 처음 행들을 얻으려면:

print(df.head());

4. 열 선택하기

데이터프레임에서 특정 열을 선택하려면:

symbols = df["Symbol"];

5. 행 필터링하기

DataFrame을 살펴보고, 기준을 충족하는 행을 선택하려면:

fire_elements = df[df["Element"] == "Fire"];

6. 새 열 만들기

데이터 내에서 파생된 DataFrame에 새 열을 만들려면:

df["Length"] = df["Element"].apply(len);

7. 데이터 그룹화 및 집계

데이터를 그룹으로 모으고 집계를 통해 새로운 데이터를 추출하려면:

element_groups = df.groupby("Element").agg({ Length: "mean" });

8. 데이터프레임 병합

두 데이터프레임을 공통 키를 기준으로 결합하려면:

df2 = pd.DataFrame({ Element: ["Earth", "Fire"], Quality: ["Solid", "Plasma"] });
merged_df = pd.merge(df, df2, (on = "Element"));

9. 누락된 데이터 처리

DataFrame을 정리하여 데이터가 없는 곳에 값이 존재하는 빈 칸을 채우는 방법입니다:

df.fillna((value = "Unknown"), (inplace = True));

10. 데이터 변환 및 형태 재구성

DataFrame의 형태를 변환하여 pivot 작업을 통해 숨겨진 패턴과 구조를 드러내는 방법:

pivoted_df = df.pivot(index='Element', columns='Symbol', values='Length')

넘파이 라이브러리 (배열) 작업

1. 넘파이 배열 생성하기

배열을 생성하려면:

import numpy as np
array = np.array([1, 2, 3, 4, 5])

2. 영이나 일의 배열

영으로 채워진 배열을 생성하려면:

zeros = np.zeros((3, 3))  # 3x3 크기의 영으로 채워진 배열
ones = np.ones((2, 4))  # 2x4 크기의 일로 채워진 배열

3. 숫자 범위 생성하기

일련의 숫자를 만들려면:

range_array = np.arange(10, 50, 5)  # 10부터 50까지, 간격은 5

아래와 같이 두 경계 사이에 균일하게 분포된 값들의 시리즈를 만들 수 있습니다:

linear_spaced = np.linspace(0, 1, 5)  # 0부터 1까지 5개의 값

5. 배열 형태 재구성

배열의 모양을 변경하여 차원을 수정할 수 있습니다.

reshaped = np.arange(9).reshape(3, 3)  # 1차원 배열을 3x3 2차원 배열로 재구성합니다

6. 기본 배열 작업

배열에 원소별 조작을 수행하려면:

a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
sum = a + b  # 원소별 덧셈
difference = b - a  # 원소별 뺄셈
product = a * b  # 원소별 곱셈

7. 행렬 곱셈

기본 점곱 연산:

result = np.dot(a.reshape(1, 3), b.reshape(3, 1))  # a와 b의 점곱

8. 배열 요소에 액세스하기

유용한 구문을 사용하여 배열 요소에 액세스하기:

element = a[2]  # 배열 'a'의 세 번째 요소를 가져옵니다
row = reshaped[1, :]  # 'reshaped'의 두 번째 행을 가져옵니다

9. 부울 인덱싱

배열 요소를 조건문의 체로 필터링합니다:

필터링된 = a[a > 2]  # 'a'의 원소 중 2보다 큰 것들

10. 집계 및 통계

np 배열에 대한 통계 연산:

평균 = np.mean(a);
최대값 = np.max(a);
합 = np.sum(a);

Matplotlib 라이브러리 사용하기 (데이터 시각화)

1. 기본 플롯 만들기

시각화 플롯을 만들려면:

import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]
plt.plot(x, y)
plt.show()

2. 제목과 라벨 추가하기

축에 이름을 지어 그래프에 더 나은 맥락을 부여하고 제목을 달기 위해서:

plt.plot(x, y);
plt.title("시간 경과에 따른 성장");
plt.xlabel("시간");
plt.ylabel("성장");
plt.show();

3. 산점도 그래프 생성하기

산점도를 만들어 봅시다:

plt.scatter(x, y);
plt.show();

4. 선 스타일 및 마커 사용자 정의

플롯에 기호를 추가하여 유용성을 높일 수 있습니다.

plt.plot(x, y, (linestyle = "--"), (marker = "o"), (color = "b"));
plt.show();

5. Creating Multiple Plots on the Same Axes

Creating Multiple Plots on the Same Axes:

z = [2, 3, 4, 5, 6];
plt.plot(x, y);
plt.plot(x, z);
plt.show();

6. 서브플롯 만들기

서브플롯을 만들려면:

fig, ax = plt.subplots(2, 1)  # 2개의 행, 1개의 열
ax[0].plot(x, y)
ax[1].plot(x, z)
plt.show()

7. 히스토그램 만들기

히스토그램을 생성하려면:

data = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4];
plt.hist(data, (bins = 4));
plt.show();

8. 범례 추가

플롯에 범례를 만드는 방법:

plt.plot(x, y, (label = "성장"));
plt.plot(x, z, (label = "감소"));
plt.legend();
plt.show();

9. 눈금 맞춤

축에 직접 마킹을 추가하여 값의 스케일을 정의할 수 있습니다:

plt.plot(x, y);
plt.xticks([1, 2, 3, 4, 5], ["일", "이", "삼", "사", "오"]);
plt.yticks([0, 5, 10, 15, 20, 25], ["0", "5", "10", "15", "20", "25+"]);
plt.show();

10. 그림 저장하기

그림을 .png 파일로 저장하려면:

plt.plot(x, y);
plt.savefig("growth_over_time.png");

Scikit-Learn 라이브러리 활용하기 (머신러닝)

1. 데이터셋 불러오기

ML 실험을 위해 데이터셋을 사용하려면

from sklearn import datasets
iris = datasets.load_iris()
X, y = iris.data, iris.target

2. 데이터를 훈련 세트와 테스트 세트로 나누기

데이터를 나눠서 학습 및 평가할 때 사용하세요:

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

3. 모델 학습

RandomForestClassifier를 사용하여 ML 모델을 학습합니다:

from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier()
model.fit(X_train, y_train)

4. 예측하기

모델 예측 결과를 확인하려면:

predictions = model.predict(X_test)

5. 모델 성능 평가

모델을 평가하려면 예측 정확성을 측정해야 합니다:

from sklearn.metrics import accuracy_score
accuracy = accuracy_score(y_test, predictions)
print(f"모델 정확도: {accuracy}")

6. 교차 검증 사용하기

교차 검증을 사용하려면:

from sklearn.model_selection import cross_val_score
scores = cross_val_score(model, X, y, cv=5)
print(f"교차 검증 점수: {scores}")

7. 피처 스케일링

당신의 피처들에 적절한 스케일을 만들어 모델이 더 효율적으로 학습할 수 있도록하세요:

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

8. 그리드 서치를 사용한 매개변수 튜닝

모델의 매개변수를 미세 조정하여 최적의 조합을 찾아냅니다:

from sklearn.model_selection import GridSearchCV
param_grid = {'n_estimators': [10, 50, 100], 'max_depth': [None, 10, 20]}
grid_search = GridSearchCV(model, param_grid, cv=5)
grid_search.fit(X_train, y_train)

9. 파이프라인 생성

데이터 처리 및 모델링 단계를 간편하게 만들기 위해 원활한 흐름을 만들어주세요:

from sklearn.pipeline import Pipeline
pipeline = Pipeline([
    ('scaler', StandardScaler()),
    ('classifier', RandomForestClassifier())
])
pipeline.fit(X_train, y_train)

10. 모델 저장 및 불러오기

모델을 보존하기 위해서:

import joblib
# 모델 저장하기
joblib.dump(model, 'model.joblib')
# 모델 불러오기
loaded_model = joblib.load('model.joblib')

Plotly 라이브러리 활용 (상호작용적 데이터 시각화)

1. 기본 선 그래프 만들기

라인 차트를 만드는 방법:

import plotly.graph_objs as go
import plotly.io as pio
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]
fig = go.Figure(data=go.Scatter(x=x, y=y, mode='lines'))
pio.show(fig)

2. 산점도 그래프 만들기

산점도 그래프를 만드는 방법:

fig = go.Figure((data = go.Scatter((x = x), (y = y), (mode = "markers"))));
pio.show(fig);

3. Creating a Bar Chart

To Create a Bar Chart:

categories = ["A", "B", "C", "D", "E"];
values = [10, 20, 15, 30, 25];
fig = go.Figure((data = go.Bar((x = categories), (y = values))));
pio.show(fig);

4. 원형 차트 만들기

원형 차트를 만들려면:

labels = ["지구", "물", "불", "바람"];
sizes = [25, 35, 20, 20];
fig = go.Figure((data = go.Pie((labels = labels), (values = sizes))));
pio.show(fig);

5. 히스토그램 만들기

히스토그램을 만들려면:

data = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4];
fig = go.Figure((data = go.Histogram((x = data))));
pio.show(fig);

6. 상자 그림 만들기

상자 그림을 만들려면:

데이터 = [1, 2, 2, 3, 4, 4, 4, 5, 5, 6];
피그 = go.Figure((data = go.Box((y = 데이터))));
pio.show(피그);

7. 히트맵 생성하기

히트맵을 생성하려면:

import numpy as np
z = np.random.rand(10, 10)  # 임의의 데이터 생성
피그 = go.Figure(data=go.Heatmap(z=z))
pio.show(피그)

8. 3D 표면 플롯 만들기

3D 표면 플롯을 만들려면:

z = np.random.rand(20, 20)  # 랜덤 데이터 생성
fig = go.Figure(data=go.Surface(z=z))
pio.show(fig)

9. 서브플롯 만들기

서브플롯을 만들려면:

from plotly.subplots import make_subplots
fig = make_subplots(rows=1, cols=2)
fig.add_trace(go.Scatter(x=x, y=y, mode='lines'), row=1, col=1)
fig.add_trace(go.Bar(x=categories, y=values), row=1, col=2)
pio.show(fig)

10. 대화형 시계열 생성

시계열 작업을 위해서:

import pandas as pd
dates = pd.date_range('20230101', periods=5)
values = [10, 11, 12, 13, 14]
fig = go.Figure(data=go.Scatter(x=dates, y=values, mode='lines+markers'))
pio.show(fig)

날짜와 시간 다루기

1. 현재 날짜와 시간 얻기

현재 날짜와 시간을 얻으려면:

from datetime import datetime
now = datetime.now()
print(f"Current date and time: {now}")

2. Creating Specific Date and Time

To conjure a moment from the past or future, crafting it with precision:

specific_time = datetime(2023, 1, 1, 12, 30)
print(f"Specific date and time: {specific_time}")

3. 날짜와 시간 형식 지정하기

날짜와 시간 형식 지정하기:

formatted = now.strftime("%Y-%m-%d %H:%M:%S")
print(f"형식화된 날짜와 시간: {formatted}")

4. 문자열에서 날짜와 시간 구문 분석하기

문자열에서 날짜와 시간을 파싱하려면:

date_string = "2023-01-01 15:00:00"
parsed_date = datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S")
print(f"Parsed date and time: {parsed_date}")

5. 시간 간격 다루기

시간을 통해 앞뒤로 시간을 건너뛰며 순간 간의 거리를 이동하려면:

from datetime import timedelta
delta = timedelta(days=7)
future_date = now + delta
print(f"7일 후의 날짜: {future_date}")

6. 날짜와 시간 비교

날짜 및 시간 비교:

if specific_time > now:
    print("특정 시간은 미래에 있습니다.")
else:
    print("특정 시간은 지났습니다.")

7. 날짜/시간에서 구성 요소 추출하기

년, 월, 일 및 더 많은 것들을 추출하려면:

year = now.year
month = now.month
day = now.day
hour = now.hour
minute = now.minute
second = now.second
print(f"Year: {year}, Month: {month}, Day: {day}, Hour: {hour}, Minute: {minute}, Second: {second}")

8. 시간대 처리하기

현지 시간을 준수하는 시간대에서 작업하기:

from datetime import timezone, timedelta
utc_time = datetime.now(timezone.utc)
print(f"현재 UTC 시간: {utc_time}")
# 특정 시간대에 맞게 조정하기 (예: EST)
est_time = utc_time - timedelta(hours=5)
print(f"현재 EST 시간: {est_time}")

9. 요일 가져오기

한 주의 요일을 식별하기:

weekday = now.strftime("%A")
print(f"오늘은: {weekday}")

10. 유닉스 타임스탬프 작업

고대 시대와 대화하며, 유닉스 탄생의 숫자를 번역합니다:

timestamp = datetime.timestamp(now)
print(f"현재 타임스탬프: {timestamp}")
# 타임스탬프를 날짜로 다시 변환
date_from_timestamp = datetime.fromtimestamp(timestamp)
print(f"타임스탬프에서 날짜로: {date_from_timestamp}")

더 고급 리스트 컴프리헨션과 람다 함수 사용하기

1. 중첩된 리스트 컴프리헨션

중첩된 리스트 컴프리헨션을 사용하려면:

matrix = [[j for j in range(5)] for i in range(3)]
print(matrix)  # 3x5 행렬을 생성합니다

2. 조건부 리스트 컴프리헨션

원하는 조건을 충족하는 요소를 필터링하려면:

filtered = [x for x in range(10) if x % 2 == 0]
print(filtered)  # 0부터 9까지의 짝수

3. 다중 이터러블을 사용한 리스트 컴프리헨션

여러 원본에서 요소를 병합하고 변환하여 하나의 춤으로 표현하기:

pairs = [(x, y) for x in [1, 2, 3] for y in [3, 1, 4] if x != y]
print(pairs)  # 서로 다른 요소의 쌍을 출력

4. Lambda 함수 사용

익명 함수를 소환하여 일회성이자 간결하게 마술의 행위를 하나 생성합니다.

square = lambda x: x**2
print(square(5))  # Returns 25

5. Lambda Functions in List Comprehensions

To employ lambda functions within your list comprehensions:

squared = [(lambda x: x**2)(x) for x in range(5)]
print(squared)  # Squares of numbers from 0 to 4

6. 리스트를 평평하게 만드는 리스트 컴프리헨션

중첩된 리스트를 평탄화하면 해당 요소들이 한 차원으로 펼쳐집니다:

nested = [[1, 2, 3], [4, 5], [6, 7]]
flattened = [x for sublist in nested for x in sublist]
print(flattened)

7. 요소에 함수 적용하기

각 요소에 변환 함수를 적용하려면:

import math
transformed = [math.sqrt(x) for x in range(1, 6)]
print(transformed)  # 1부터 5까지 숫자의 제곱근

8. Map 및 Filter와 함께 람다 사용

리스트를 매핑하고 필터링하는 방법:

mapped = list(map(lambda x: x**2, range(5)))
filtered = list(filter(lambda x: x > 5, mapped))
print(mapped)    # 0부터 4까지 숫자의 제곱
print(filtered)  # 5보다 큰 요소들

9. 조건 표현식을 사용한 리스트 컴프리헨션

조건 표현식을 사용한 리스트 컴프리헨션:

conditional = [x if x > 2 else x**2 for x in range(5)]
print(conditional)  # 2보다 작거나 같은 숫자의 제곱, 그 외에는 동일하게

10. 람다를 사용한 복잡한 변환

복잡한 변환을 수행하기 위해서는 람다 함수를 사용하세요:

complex_transformation = list(map(lambda x: x**2 if x % 2 == 0 else x + 5, range(5)))
print(complex_transformation)  # 짝수-홀수 조건에 따라 다른 변환을 적용합니다

객체 지향 프로그래밍으로 작업하기

1. 클래스 정의하기

클래스 만들기:

class Wizard:
    def __init__(self, name, power):
        self.name = name
        self.power = power
    def cast_spell(self):
        print(f"{self.name}이(가) 힘 {self.power}으로 주문을 사용합니다!")

2. 인스턴스 생성

클래스의 인스턴스를 생성하려면:

merlin = Wizard("Merlin", 100);

3. 메서드 호출

클래스 인스턴스의 메서드를 호출하려면:

merlin.cast_spell();

4. 상속

서브클래싱:

class ArchWizard(Wizard):
    def __init__(self, name, power, realm):
        super().__init__(name, power)
        self.realm = realm
    def summon_familiar(self):
        print(f"{self.name}가 {self.realm} 영역에서 친구를 소환합니다.")

5. 메서드 오버라이딩

기본 클래스를 오버라이드하려면:

class Sorcerer(Wizard):
    def cast_spell(self):
        print(f"{self.name}이(가) 강력한 암흑 주문을 사용합니다!")

6. 다형성

다양한 형태와 상호작용하기 위해 공통 인터페이스를 통해:

def unleash_magic(wizard):
    wizard.cast_spell()
unleash_magic(merlin)
unleash_magic(Sorcerer("Voldemort", 90))

7. 캡슐화

정보 은닉을 사용하려면:

class Alchemist:
    def __init__(self, secret_ingredient):
        self.__secret = secret_ingredient
    def reveal_secret(self):
        print(f"The secret ingredient is {self.__secret}")

8. Composition

To assemble Objects from simpler ones:

class Spellbook:
    def __init__(self, spells):
        self.spells = spells
class Mage:
    def __init__(self, name, spellbook):
        self.name = name
        self.spellbook = spellbook

9. 클래스 메소드와 정적 메소드

클래스 메소드와 정적 메소드를 사용하여 클래스에 특정 작업을 묶거나 인스턴스에 제한 없이 사용하여 더 넓은 목적에 부합하도록 합니다:

class Enchanter:
    @staticmethod
    def enchant(item):
        print(f"{item}이(가) 마법으로 걸렸습니다!")
    @classmethod
    def summon(cls):
        print("새로운 마법사가 소환되었습니다.")

엔티티의 속성에 접근을 우아하게 관리하여 사용 및 보호를 안내하기 위해:

class Elementalist:
    def __init__(self, element):
        self._element = element

    @property
    def element(self):
        return self._element

    @element.setter
    def element(self, value):
        if value in ["Fire", "Water", "Earth", "Air"]:
            self._element = value
        else:
            print("잘못된 속성입니다!")

데코레이터로 작업하기

1. 기본 데코레이터

간단한 데코레이터를 만들려면:

def my_decorator(func):
    def wrapper():
        print("함수가 호출되기 전에 무언가가 발생합니다.")
        func()
        print("함수가 호출된 후에 무언가가 발생합니다.")
    return wrapper

@my_decorator
def say_hello():
    print("안녕!")

say_hello()

2. 인수를 전달하는 데코레이터

데코레이터 내에서 함수에 인수를 전달하려면:

def my_decorator(func):
    def wrapper(*args, **kwargs):
        print("함수 호출 전")
        result = func(*args, **kwargs)
        print("함수 호출 후")
        return result
    return wrapper

@my_decorator
def greet(name):
    print(f"{name}님 안녕하세요")

greet("Alice")

3. functools.wraps 사용

원본 함수의 메타데이터를 보존하려면 데코레이팅할 때 다음을 사용하세요:

from functools import wraps

def my_decorator(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
        """래핑 함수"""
        return func(*args, **kwargs)
    return wrapper

@my_decorator
def greet(name):
    """누군가에게 인사하기"""
    print(f"{name}님 안녕하세요")

print(greet.__name__)  # 출력: 'greet'
print(greet.__doc__)   # 출력: '누군가에게 인사하기'

4. 클래스 데코레이터

클래스를 사용하여 데코레이터를 만드는 방법은 다음과 같습니다:

class MyDecorator:
    def __init__(self, func):
        self.func = func
    def __call__(self, *args, **kwargs):
        print("함수 호출 전")
        self.func(*args, **kwargs)
        print("함수 호출 후")

@MyDecorator
def greet(name):
    print(f"안녕 {name}")

greet("Alice")

5. 인수를 받는 데코레이터

자신의 인수를 받아들이는 데코레이터를 작성하려면:

def repeat(times):
    def decorator(func):
        @wraps(func)
        def wrapper(*args, **kwargs):
            for _ in range(times):
                func(*args, **kwargs)
        return wrapper
    return decorator

@repeat(3)
def say_hello():
    print("Hello")

say_hello()

6. 메소드 데코레이터

클래스 내부의 메소드에 데코레이터를 적용하려면:

def method_decorator(func):
    @wraps(func)
    def wrapper(self, *args, **kwargs):
        print("메소드 데코레이터")
        return func(self, *args, **kwargs)
    return wrapper

class MyClass:
    @method_decorator
    def greet(self, name):
        print(f"안녕 {name}")

obj = MyClass()
obj.greet("Alice")

7. 데코레이터 중첩

하나의 함수에 여러 데코레이터를 적용하려면:

@my_decorator
@repeat(2)
def greet(name):
    print(f"안녕 {name}")

greet("Alice")

8. 선택적 인수를 가진 데코레이터

인수를 사용하여 작동하는 데코레이터를 만들어 보겠습니다:

def smart_decorator(arg=None):
    def decorator(func):
        @wraps(func)
        def wrapper(*args, **kwargs):
            if arg:
                print(f"Argument: {arg}")
            return func(*args, **kwargs)
        return wrapper
    if callable(arg):
        return decorator(arg)
    return decorator

@smart_decorator
def no_args():
    print("인수 없음")

@smart_decorator("인수 포함")
def with_args():
    print("인수 포함")

no_args()
with_args()

9. 클래스 메서드 데코레이터

클래스 메소드를 꾸미려면:

class MyClass:
    @classmethod
    @my_decorator
    def class_method(cls):
        print("Class method called")

MyClass.class_method()

10. 정적 메소드를 위한 데코레이터

정적 메소드를 꾸미려면:

class MyClass:
    @staticmethod
    @my_decorator
    def static_method():
        print("Static method called")

MyClass.static_method()

GraphQL 작업

1. GraphQL 클라이언트 설정

GraphQL 작업을 위해서는:

from gql import gql, Client
from gql.transport.requests import RequestsHTTPTransport
transport = RequestsHTTPTransport(url='https://your-graphql-endpoint.com/graphql')
client = Client(transport=transport, fetch_schema_from_transport=True)

2. Executing a Simple Query

Executing a Query:

query = gql('''
{
  allWizards {
    id
    name
    power
  }
}
''')

result = client.execute(query)
print(result)

3. 변수를 사용하여 쿼리 실행하기

변수를 사용한 쿼리:

query = gql('''
query GetWizards($element: String!) {
  wizards(element: $element) {
    id
    name
  }
}
''')
params = {"element": "Fire"}
result = client.execute(query, variable_values=params)
print(result)

4. 뮤테이션

변이를 생성하고 실행하려면:

mutation = gql('''
mutation CreateWizard($name: String!, $element: String!) {
  createWizard(name: $name, element: $element) {
    wizard {
      id
      name
    }
  }
}
''')
params = {"name": "Gandalf", "element": "Light"}
result = client.execute(mutation, variable_values=params)
print(result)

5. 에러 처리

에러 처리:

from gql import gql, Client
from gql.transport.exceptions import TransportQueryError

try:
    result = client.execute(query)
except TransportQueryError as e:
    print(f"GraphQL Query Error: {e}")

6. Subscriptions

Working with Subscriptions:

subscription = gql('''
subscription {
  wizardUpdated {
    id
    name
    power
  }
}
''')

for result in client.subscribe(subscription):
    print(result)

7. 단편

단편 사용 방법:

query = gql('''
fragment WizardDetails on Wizard {
  name
  power
}
query {
  allWizards {
    ...WizardDetails
  }
}
''')
result = client.execute(query)
print(result)

8. 인라인 단편

위의 표를 마크다운 형식으로 변경해주세요.

query = gql('''
query 위자드얻기($withPower: Boolean!) {
  allWizards {
    name
    power @include(if: $withPower)
  }
}
''')
params = {"withPower": True}
result = client.execute(query, variable_values=params)
print(result)

10. 요청 일괄 처리

여러 작업을 하나의 요청으로 결합하여 네트워크 오버헤드를 줄이는 방법:

from gql import gql, Client
from gql.transport.requests import RequestsHTTPTransport

transport = RequestsHTTPTransport(url='https://your-graphql-endpoint.com/graphql', use_json=True)
client = Client(transport=transport, fetch_schema_from_transport=True)

query1 = gql('query { wizard(id: "1") { name } }')
query2 = gql('query { allSpells { name } }')

results = client.execute([query1, query2])
print(results)

정규 표현식 사용하기

1. 기본 패턴 매칭

문자열 내에서 패턴과 일치하는 항목을 찾으려면:

import re
text = "Search this string for patterns."
match = re.search(r"patterns", text)
if match:
    print("패턴을 찾았습니다!")

2. 정규 표현식 컴파일하기

정규 표현식을 반복적으로 사용하려면 다음과 같이 컴파일하세요:

pattern = re.compile(r"patterns")
match = pattern.search(text)

3. 시작 또는 끝에서 매칭하기

문자열이 특정 패턴으로 시작하거나 끝나는지 확인하려면:

if re.match(r"^Search", text):
    print("Starts with 'Search'")
if re.search(r"patterns.$", text):
    print("Ends with 'patterns.'")

4. 모든 일치 항목 찾기

문자열에서 특정 패턴의 모든 발생을 찾으려면:

all_matches = re.findall(r"t\w+", text)  # 't'로 시작하는 단어를 찾습니다.
print(all_matches)

5. 검색 및 대체 (치환)

문자열 내에서 패턴의 발생을 대체하는 방법:

replaced_text = re.sub(r"string", "sentence", text)
print(replaced_text)

6. 문자열 분할하기

패턴의 발생에 따라 문자열을 분할하려면:

words = re.split(r"\s+", text)  # 하나 이상의 공백으로 분할
print(words)

7. 특수 문자 이스케이프하기

특수 문자를 그대로 비교하려면 이스케이프 처리를 해야 합니다:

escaped = re.search(r"\bfor\b", text)  # \b는 단어 경계를 의미합니다

8. 그룹 지정 및 캡처

패턴의 부분을 그룹으로 묶어서 값을 추출하기 위해:

match = re.search(r"(\w+) (\w+)", text)
if match:
    print(match.group())  # 전체 매치
    print(match.group(1)) # 첫 번째 그룹

9. 캡처하지 않는 그룹

캡처하지 않고 그룹을 정의하는 방법:

match = re.search(r"(?:\w+) (\w+)", text)
if match:
    print(match.group(1))  # 첫 번째 (그리고 유일한) 그룹

10. 룩어헤드 및 룩비하인드 어설션

결과에 포함되지 않고 패턴을 일치시키려면 주변에 오는 내용을 기반으로 합니다:

lookahead = re.search(r"\b\w+(?= string)", text)  # ' string' 앞에 있는 단어
lookbehind = re.search(r"(?<=Search )\w+", text)  # 'Search ' 뒤에 있는 단어
if lookahead:
    print(lookahead.group())
if lookbehind:
    print(lookbehind.group())

11. 패턴 일치 동작 수정을 위한 플래그

아래와 같이 플래그를 사용하여 re.IGNORECASE와 같이 패턴이 일치하는 방식을 변경할 수 있어요:

대소문자_무시 = re.findall(r"search", text, re.IGNORECASE)
print(대소문자_무시)

12. 명명된 그룹 사용하기

그룹에 이름을 할당하고 이름으로 참조할 수 있어요:

match = re.search(r"(?P\w+) (?P\w+)", text) if match: print(match.group('first')) print(match.group('second'))

13. 여러 줄에 걸쳐 매칭하기

re.MULTILINE 플래그를 사용하여 여러 줄에 걸쳐 패턴을 매칭하려면:

multi_line_text = "Start\nmiddle end"
matches = re.findall(r"^m\w+", multi_line_text, re.MULTILINE)
print(matches)

14. 게으른 양자

가능한 한 적은 문자와 일치시키려면 게으른 양자 (*?, +?, ??)를 사용하세요:

html = "<body><h1>Title</h1></body>"
match = re.search(r"<.*?>", html)
if match:
    print(match.group())  # '<body>'와 일치합니다

15. 상세한 정규 표현식

re.VERBOSE를 사용하여 더 읽기 쉬운 정규 표현식을 사용할 수 있습니다:

pattern = re.compile(r"""
    \b      # 단어 경계
    \w+     # 하나 이상의 단어 문자
    \s      # 공백
    """, re.VERBOSE)
match = pattern.search(text)

문자열 다루기

1. 문자열 연결하기

문자열을 합치려면:

greeting = "Hello";
name = "Alice";
message = greeting + ", " + name + "!";
print(message);

2. str.format을 사용한 문자열 서식 지정

문자열 템플릿에 값을 삽입하는 방법:

message = "{}, {}. Welcome!".format(greeting, name);
print(message);

3. Formatted String Literals (f-strings)

To embed expressions inside string literals (Python 3.6+):

message = f"{greeting}, {name}. Welcome!"
print(message)

4. 문자열 메소드 — 대소문자 변환

문자열의 대소문자를 변경하려면:

s = "Python"
print(s.upper())  # 대문자로 변환
print(s.lower())  # 소문자로 변환
print(s.title())  # 제목 케이스로 변환

5. 문자열 메소드 — strip, rstrip, lstrip

문자열 끝에서 공백이나 특정 문자를 제거하려면:

s = "   trim me   "
print(s.strip())   # 양쪽 끝
print(s.rstrip())  # 오른쪽 끝
print(s.lstrip())  # 왼쪽 끝

6. 문자열 메소드 — startswith, endswith

특정 텍스트를 찾아 문자열의 시작 또는 끝을 확인하려면:

s = "filename.txt"
print(s.startswith("file"))  # True
print(s.endswith(".txt"))    # True

7. 문자열 메서드 — split, join

문자열을 리스트로 나누거나 리스트를 문자열로 결합하려면:

s = "split,this,string"
words = s.split(",")        # 문자열을 리스트로 분할
joined = " ".join(words)    # 리스트를 문자열로 결합
print(words)
print(joined)

8. 문자열 메소드 — replace

문자열의 일부를 다른 문자열로 바꾸려면:

s = "Hello world";
new_s = s.replace("world", "Python");
print(new_s);

9. 문자열 메소드 — find, index

서브스트링이 문자열 내에서의 위치를 찾으려면:

s = "look for a substring"
position = s.find("substring")  # 찾지 못하면 -1 반환
index = s.index("substring")    # 찾지 못하면 ValueError를 일으킴
print(position)
print(index)

10. 문자열 메소드 — 문자와 작업하기

문자열 내 개별 문자를 처리하려면:

s = "characters"
for char in s:
    print(char)  # Prints each character on a new line

11. 문자열 메서드 — isdigit, isalpha, isalnum

문자열이 숫자만, 알파벳 문자만, 또는 알파벳 및 숫자만을 포함하는지 확인하려면:

print("123".isdigit())   # True
print("abc".isalpha())   # True
print("abc123".isalnum())# True

12. 문자열 슬라이싱

슬라이싱을 사용하여 부분 문자열을 추출하려면:

s = "나를 슬라이스해봐"
sub = s[2:7]  # 3번째부터 7번째 문자까지
print(sub)

13. len으로 문자열 길이 계산

문자열의 길이를 구하려면:

s = "length"
print(len(s))  # 6

14. 여러 줄을 포함하는 문자열

여러 줄에 걸쳐 있는 문자열을 다루려면:

multi = """Line one
Line two
Line three"""
print(multi)

15. 원시 문자열

백슬래시를 리터럴 문자로 취급하려면 정규식 패턴 및 파일 경로에 유용합니다:

path = r"C:\User\name\folder"
print(path)

웹 스크레이핑 작업 중

1. requests를 사용하여 웹 페이지 가져오기

웹 페이지의 내용을 검색하는 방법:

import requests

url = 'https://example.com'
response = requests.get(url)
html = response.text

2. BeautifulSoup을 사용하여 HTML 구문 분석

HTML을 구문 분석하고 데이터를 추출하려면:

from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'html.parser')
print(soup.prettify())  # HTML을 예쁘게 출력

3. HTML 트리 내비게이션

태그를 사용하여 요소를 찾는 방법:

title = soup.title.text  # 페이지 제목 가져오기
headings = soup.find_all('h1')  # 모든 <h1> 태그 목록

4. CSS 선택자 사용

CSS 선택자를 사용하여 요소를 선택하는 방법:

articles = soup.select('div.article') #

태그 안에 클래스 'article'을 가진 모든 요소 선택

5. 태그로부터 데이터 추출

HTML 요소에서 텍스트와 속성을 추출하려면:

for article in articles:
    title = article.h2.text  # <h2> 태그 안의 텍스트
    link = article.a['href']  # <a> 태그의 'href' 속성
    print(title, link)

6. 상대 URL 다루기

상대 URL을 절대 URL로 변환하려면:

from urllib.parse import urljoin
absolute_urls = [urljoin(url, link) for link in relative_urls]

7. 페이지네이션 다루기

여러 페이지에서 콘텐츠를 스크래핑하기:

base_url = "https://example.com/page/"
for page in range(1, 6):  # 5페이지에 대해
    page_url = base_url + str(page)
    response = requests.get(page_url)
    # 각 페이지의 콘텐츠 처리

8. AJAX 요청 처리

AJAX 요청으로 로드된 데이터를 스크래핑하기

# AJAX 요청의 URL을 찾아보세요 (브라우저의 개발자 도구 사용) 그리고 가져와보세요
ajax_url = 'https://example.com/ajax_endpoint'
data = requests.get(ajax_url).json()  # 응답이 JSON 형식일 것으로 가정합니다

9. 정규 표현식을 활용한 웹 스크래핑

정규 표현식을 사용하여 데이터를 추출하려면:

import re
emails = re.findall(r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b', html)

10. 로봇 파일 (robots.txt) 존중하기

스크래핑 권한을 확인하려면 다음과 같이 robots.txt를 확인하세요:

from urllib.robotparser import RobotFileParser

rp = RobotFileParser()
rp.set_url('https://example.com/robots.txt')
rp.read()
can_scrape = rp.can_fetch('*', url)

11. 세션 및 쿠키 사용하기

세션 유지 및 쿠키 처리를 위해:

session = requests.Session()
session.get('https://example.com/login')
session.cookies.set('key', 'value')  # 필요한 경우 쿠키 설정
response = session.get('https://example.com/protected_page')

12. 브라우저 자동화를 통한 스크래이핑 (selenium 라이브러리)

자바스크립트로 렌더링된 동적 콘텐츠를 스크래이핑하려면:

from selenium import webdriver
browser = webdriver.Chrome()
browser.get('https://example.com')
content = browser.page_source
# BeautifulSoup 등을 사용하여 데이터를 파싱하고 추출합니다.
browser.quit()

13. 웹 스크래핑에서의 오류 처리

오류와 예외를 처리하는 방법:

try:
    response = requests.get(url, timeout=5)
    response.raise_for_status()  # 나쁜 상태 코드에 대해 오류를 발생시킵니다.
except requests.exceptions.RequestException as e:
    print(f"오류 발생: {e}")

14. 비동기 웹 스크래핑

데이터를 빠르게 검색하기 위해 웹 사이트를 비동기적으로 스크랩하려면:

import aiohttp
import asyncio

async def fetch(url):
    async with aiohttp.ClientSession() as session:
        async with session.get(url) as response:
            return await response.text()

urls = ['https://example.com/page1', 'https://example.com/page2']
loop = asyncio.get_event_loop()
pages = loop.run_until_complete(asyncio.gather(*(fetch(url) for url in urls)))

15. 데이터 저장 (CSV, 데이터베이스)

크롤링한 데이터를 CSV 파일이나 데이터베이스에 저장하는 방법:

import csv

with open('output.csv', 'w', newline='') as file:
    writer = csv.writer(file)
    writer.writerow(['Title', 'URL'])
    for article in articles:
        writer.writerow([article['title'], article['url']])

pip로 작업하기 (패키지 관리)

1. 패키지 설치

거대한 저장소에서 라이브러리를 불러와서 그 힘을 환경에 통합하려면:

pip install numpy

2. 설치된 패키지 나열

당신의 영역에 존재하는 라이브러리들을 조사하여 버전과 계열을 확인하려면:

pip list

3. 패키지 업그레이드

설치된 라이브러리에 강화된 기능과 능력을 부여하여 최신 버전으로 업그레이드하는 방법:

pip install --upgrade numpy

4. 패키지 삭제

패키지를 삭제하려면:

pip uninstall numpy

5. 패키지 검색

패키지를 검색 중입니다:

pip search "data visualization"

6. 패키지의 특정 버전 설치하기

특정 버전을 설치하려면:

pip install numpy==1.18.5

7. Requirements 파일 생성하기

Requirements 파일:

pip freeze > requirements.txt

8. 요구 사항 파일에서 패키지 설치하기

친구야, 너의 요구 사항의 노트에 맞게 조율된 라이브러리의 교향곡을 창작할 때:

pip install -r requirements.txt

9. 가상 환경 사용하기

패키지 충돌을 관리하기 위해 가상 환경을 생성하세요:

# 'venv'라는 이름의 가상 환경 생성
python -m venv venv

# 가상 환경 활성화
# Windows에서는
.\venv\Scripts\activate

# UnixMacOS에서는
source venv/bin/activate

10. 패키지 의존성 확인

의존성 이해:

pip show numpy

일반 내장 함수 및 패키지 사용하기

1. os - 운영 체제 인터페이스

운영 체제와 상호 작용하기 위해서:

import os
current_directory = os.getcwd()  # 현재 작업 디렉토리 가져오기

2. sys - 시스템별 매개변수 및 함수

시스템별 매개변수 및 함수에 액세스하려면:

import sys
sys.exit()  # 스크립트 종료

3. datetime - 기본 날짜와 시간 유형

날짜 및 시간을 다루려면:

from datetime import datetime
now = datetime.now()  # 현재 날짜와 시간

4. math - 수학 함수

수학적인 연산을 수행하려면:

import math
result = math.sqrt(16)  # 제곱근

5. random - 유사 난수 생성

유사 난수를 생성하려면:

import random
number = random.randint(1, 10)  # 1부터 10 사이의 난수 생성

6. json - JSON 인코더 및 디코더

JSON 데이터를 구문 분석하고 생성하기 위해:

import json
json_string = json.dumps({'name': 'Alice', 'age': 30})  # 딕셔너리를 JSON 문자열로 변환

7. 정규 표현식을 사용하기

정규 표현식을 사용하려면:

import re
match = re.search('Hello', 'Hello, world!')  # 문자열에서 'Hello'를 검색함

8. urllib - URL 처리 모듈

URL과 함께 작업하려면:

from urllib.request import urlopen
content = urlopen('http://example.com').read()  # 웹 페이지의 내용을 가져오기

9. http - HTTP 모듈

HTTP 서버를 만들고 HTTP 요청을 처리하려면:

from http.server import HTTPServer, BaseHTTPRequestHandler
class SimpleHTTPRequestHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.send_header('Content-type', 'text/html')
        self.end_headers()
        self.wfile.write(b'<html><head><title>Python HTTP Server</title></head>')
        self.wfile.write(b'<body><h1>Hello from a simple Python HTTP server!</h1></body></html>')

def run(server_class=HTTPServer, handler_class=SimpleHTTPRequestHandler):
    server_address = ('', 8000)  # Serve on all addresses, port 8000
    httpd = server_class(server_address, handler_class)
    print("Server starting on port 8000...")
    httpd.serve_forever()

if __name__ == '__main__':
    run()

10. subprocess - Subprocess Management

새로운 프로세스를 생성하고 그들의 입력/출력/에러 파이프에 연결하려면:

import subprocess
subprocess.run(['ls', '-l'])  # 'ls -l' 명령 실행

11. 소켓 - 저수준 네트워킹 인터페이스

네트워크 클라이언트와 서버를 만들려면:

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  # TCP/IP 소켓 만들기

12. threading - 스레드 기반 병렬 처리

동시에 코드를 실행하는 방법을 알아보세요:

import threading
def worker():
    print("작업자 스레드 실행 중")
thread = threading.Thread(target=worker)
thread.start()

13. multiprocessing - 프로세스 기반 병렬 처리

동시에 실행중인 프로세스를 관리하기 위해:

from multiprocessing import Process
def worker():
    print("작업자 프로세스")
p = Process(target=worker)
p.start()

14. argparse - 명령행 옵션, 인수 및 하위 명령어를 위한 파서

명령행 인수를 구문 분석하려면:

import argparse
parser = argparse.ArgumentParser(description="일부 정수를 처리합니다.")
args = parser.parse_args()

15. logging - 로깅 시스템

메시지를 기록하려면 (debug, info, warning, error 및 critical):

import logging
logging.warning('이것은 경고 메시지입니다.')

16. unittest - 단위 테스트 프레임워크

단위 테스트를 작성하고 실행하는 방법은 다음과 같습니다:

import unittest
class TestStringMethods(unittest.TestCase):
    def test_upper(self):
        self.assertEqual('foo'.upper(), 'FOO')

17. pathlib - 객체 지향형 파일 시스템 경로

파일 시스템 경로를 객체 지향적으로 다루려면:

from pathlib import Path
p = Path('.')

18. functools - 고계 함수 및 호출 가능 객체에 대한 작업

고계 함수 및 호출 가능 객체에 대해 작업하려면:

from functools import lru_cache
@lru_cache(maxsize=None)
def fib(n):
    if n < 2:
        return n
    return fib(n-1) + fib(n-2)

19. collections - Container Data Types

특수화된 컨테이너 데이터 타입 (deque, Counter, OrderedDict 등)을 사용하려면:

from collections import Counter
c = Counter('hello world')

20. itertools - 효율적인 루핑을 위한 반복자 생성 함수

효율적인 루핑을 위해 반복자를 생성하고 사용하는 방법은 다음과 같습니다:

import itertools
for combination in itertools.combinations('ABCD', 2):
    print(combination)

21. hashlib - 안전한 해시 및 메시지 다이제스트 알고리즘

데이터를 해싱하기 위해:

import hashlib
hash_object = hashlib.sha256(b'Hello World')
hex_dig = hash_object.hexdigest()

22. csv - CSV 파일 읽기 및 쓰기

CSV 파일에서 읽고 쓰려면:

import csv
with open('file.csv', mode='r') as infile:
    reader = csv.reader(infile)

23. xml.etree.ElementTree - The ElementTree XML API

To parse and create XML data:

import xml.etree.ElementTree as ET
tree = ET.parse('file.xml')
root = tree.getroot()

24. sqlite3 - SQLite 데이터베이스를 위한 DB-API 2.0 인터페이스

SQLite 데이터베이스와 상호 작용하려면:

import sqlite3
conn = sqlite3.connect('example.db')

25. tkinter - GUI 도구 상자

GUI 애플리케이션을 만들려면:

import tkinter as tk
root = tk.Tk()

26. pickle - Python 객체 직렬화

Python 객체 구조를 직렬화하고 역직렬화하는 데 사용됩니다.

import pickle
serialized_obj = pickle.dumps(obj)

27. io - Core Tools for Working with Streams

To handle streams (file-like objects):

from io import StringIO
f = StringIO("some initial text data")

28. time - 시간 액세스 및 변환

시간 관련 함수에 접근하기 위해서:

import time
time.sleep(1)  # 1초 동안 대기

29. calendar - 일반 캘린더 관련 함수

달력을 활용하려면:

import calendar
print(calendar.month(2023, 1))  # 2023년 1월 달력 출력

30. queue - 동기화된 큐 클래스

멀티스레드 프로그래밍에 유용한 큐를 관리하세요:

from queue import Queue
q = Queue()

31. shutil - 고수준 파일 작업

고수준 파일 작업을 수행하려면 복사 및 아카이빙과 같은 작업을 사용합니다:

import shutil
shutil.copyfile('source.txt', 'dest.txt')

32. glob - Unix 스타일의 경로명 패턴 확장

지정된 패턴과 일치하는 파일을 찾기:

import glob
for file in glob.glob("*.txt"):
    print(file)

33. tempfile - 임시 파일 및 디렉토리 생성

임시 파일과 디렉토리를 생성하려면:

import tempfile
temp = tempfile.TemporaryFile()

34. bz2 - Bzip2 압축 지원

bzip2 압축을 사용하여 데이터를 압축하고 해제하려면:

import bz2
compressed = bz2.compress(b'여기에 데이터를 입력하세요')

35. gzip - Gzip 압축 지원

gzip 압축을 사용하여 데이터를 압축 및 해제하는 방법:

import gzip
with gzip.open('file.txt.gz', 'wt') as f:
    f.write('여기에 데이터를 입력하세요')

36. ssl - TLS/SSL Wrapper for Socket Objects

네트워크 소켓에서 TLS/SSL 암호화 및 피어 인증을 처리하기 위해:

import ssl
ssl.wrap_socket(sock)

37. imaplib - IMAP4 프로토콜 클라이언트

IMAP4를 통해 메일에 액세스하고 조작하려면:

import imaplib
mail = imaplib.IMAP4_SSL('imap.example.com')

38. smtplib - SMTP 프로토콜 클라이언트

Simple Mail Transfer Protocol (SMTP)를 사용하여 메일을 보내려면:

import smtplib
server = smtplib.SMTP('smtp.example.com', 587)

39. email - 이메일 메시지 관리

이메일 메시지를 관리하려면 MIME 및 다른 RFC 2822 기반 메시지 문서를 포함합니다:

from email.message import EmailMessage
msg = EmailMessage()

40. base64 - Base16, Base32, Base64, Base85 Data Encodings

베이스64를 사용하여 데이터를 인코딩 및 디코딩하는 방법:

import base64
encoded_data = base64.b64encode(b'data to encode')

41. difflib - Deltas를 계산하는 도우미

시퀀스를 비교하고 사람이 읽기 쉬운 차이를 생성하려면:

import difflib
diff = difflib.ndiff('one\ntwo\nthree\n'.splitlines(keepends=True),
                     'ore\ntree\nemu\n'.splitlines(keepends=True))
print(''.join(diff))

42. gettext - 다국어 지역화 서비스

파이썬 프로그램의 국제화를 위해:

import gettext
gettext.install('myapp')

43. locale - Internationalization Services

To access a database of culture-specific data formats:

import locale
locale.setlocale(locale.LC_ALL, '')

44. secrets - 시크릿 관리를 위한 안전한 무작위 숫자 생성

시크릿 관리를 위해 안전한 무작위 숫자를 생성하려면 토큰이나 비밀번호와 같은 비밀을 생성합니다:

import secrets
secure_token = secrets.token_hex(16)

45. uuid - RFC 4122에 따른 UUID 개체

유니버설 유니크 식별자(UUID)를 생성하려면:

import uuid
unique_id = uuid.uuid4()

46. html - 하이퍼텍스트 마크업 언어 지원

HTML 개체를 처리하고 조작하려면:

import html
escaped = html.escape('<a href="https://example.com">link</a>')

47. ftplib - FTP Protocol Client

FTP 프로토콜을 통해 파일을 교환 및 상호 작용하기 위해:

from ftplib import FTP
ftp = FTP('ftp.example.com')

48. tarfile - Tar 아카이브 파일 읽고 쓰기

tar 아카이브 파일을 다루는 방법입니다. 아카이빙하고 압축/압축해제할 수 있습니다:

import tarfile
with tarfile.open('sample.tar.gz', 'w:gz') as tar:
    tar.add('sample.txt')

요약하자면, 여기까지가 전부에요. 여기서 제공된 목록이 빠르게 숙련되는 데 도움이 되었으면 좋겠어요. 만약 마음에 드셨다면 공유하거나 좋아요를 눌러주세요 (참 많은 도움이 됩니다!).

더 자세하고 포괄적인 Python 개발 가이드가 필요하시다면, 제가 실용적인 Python 개발에 대해 가장 좋은 자료로 발견한 두 권의 책이 있습니다. 이 책들을 강력히 추천합니다:

  • 파이썬 졸업반 — 제3판
  • 따분한 일 자동화하기 — 제2판

읽어 주셔서 감사합니다! 댓글에 놓친 부분이 있다면 언제든 댓글로 남겨주세요!

Stackademic 🎓

끝까지 읽어주셔서 감사합니다. 떠나시기 전에:

  • 작가를 응원하고 팔로우해주세요! 👏
  • 저희를 팔로우하기: X | LinkedIn | YouTube | Discord
  • 다른 플랫폼 방문하기: In Plain English | CoFeed | Venture | Cubed
  • 더 많은 콘텐츠: Stackademic.com