728x90

 Python ์ฒ˜์Œ ์ ‘ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด ํ•˜๋Š” ํ”ํ•œ ์‹ค์ˆ˜

1) try ~ except~ ๊ตฌ๋ฌธ

 ๊ตฌ๋ฌธ ์‚ฌ์šฉํ•  ๋•Œ error๋ฌธ์„ ์ง์ ‘ ๊ทธ๊ฒƒ๋„ ์ด์ƒํ•˜๊ฒŒ ์ž‘์„ฑํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. python์—์„œ ์‚ฌ์šฉํ•˜๋Š” error ๊ตฌ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋  ์ผ์„ ๋‚˜๋งŒ์ด ์•Œ์•„๋ณด๊ฒŒ ํ•ด๋†“๋Š”๊ฒƒ์ด ํฐ ์‹ค์ˆ˜๋กœ ์ด์–ด์ง„๋‹ค. 

[Worse]

total: float = 0

while True:
    user_input: str = input("Add: ")

    try:
        total += float(user_input)

    except:
        print('์ˆซ์ž๋งŒ ์ž…๋ ฅํ•ด์ฃผ์‹œ์˜ค.')

    print(f"Current: {total}")

[Better]

total: float = 0

while True:
    user_input: str = input("Add: ")

    try:
        total += float(user_input)

    except Exception as e:
        print(repr(e))

    print(f"Current: {total}")

 

2) type ์„ ์–ธ 

static ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด append ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ๋ณด์ž.

[Worse]

from typing import Iterable, TypeVar, Any

T = TypeVar('T') # static type checking

def append_to_list(elements: Iterable[T], target: list[T]=[]) -> list[Any]:
    target.extend(elements)
    return target

print(append_to_list([1, 2])) # [1, 2]
print(append_to_list([3, 4])) # [1, 2, 3, 4]
print(append_to_list([5, 6],[])) # ??? [5, 6]
print(append_to_list(["a","b"])) # [1, 2, 3, 4, 5, 6, 'a', 'b']

 

์œ„ ๊ฒฐ๊ณผ ๊ธฐ์กด์˜ ๋ณ€์ˆ˜๊ฐ€ ๋‚จ์•„  List append๊ฐ€ ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. 

 

append_to_list์˜ target์ด ์žˆ์„ ๋•Œ ์—†์„๋•Œ ๋‚˜๋ˆ„์–ด ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค๋ฉด ๊ธฐ์กด list๋ฅผ ์ฐธ์กฐํ•˜์ง€ ์•Š๊ณ  ๋„˜๊ธธ ์ˆ˜ ์žˆ๋‹ค.

[Better]

from typing import Iterable, TypeVar, Any

T = TypeVar('T') # static type checking

def append_to_list(elements: Iterable[T], target: list[T]=None) -> list[Any]:
    if target is None:
        target = []
    target.extend(elements)
    return target

print(append_to_list([1, 2])) # [1, 2]
print(append_to_list([3, 4])) # [3, 4]
print(append_to_list([5, 6],[])) # [5, 6]
print(append_to_list(["a","b"],["c"])) # ["a", "b", "c"]

 

3) ๋” ์ด์ƒ range๋ฅผ ๋ฌด์‹œํ•˜์ง€ ๋งˆ๋ผ

 range๋ฅผ ๋‹ค์‹œ list๋กœ ๋ฐ›์•„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ์ด ๊ฒฝ์šฐ range์—์„œ ์‚ฌ์šฉํ•  iteration์„ ๋ชจ๋‘ list์— ๋‹ด์•„์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ƒ๋‹นํžˆ ๋Š˜์–ด๋‚œ๋‹ค. 

from sys import getsizeof
my_range : range = range(10**6)
print(type(my_range))
print(getsizeof(my_range), 'bytes')
# <class 'range'>
# 48 bytes

my_range : list[int] = list(range(10**6))
print(type(my_range))
print(getsizeof(my_range), 'bytes')
# <class 'list'>
# 8000056 bytes

 

range, map, filter ์ด ์ฒ˜๋Ÿผ iteration์„ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜์˜ ๊ฒฝ์šฐ ๋ณ€ํ™˜์„ ํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ๋น ๋ฅด๋‹ค.

 

 

๋ฐ˜์‘ํ˜•

'๐Ÿ Python' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

string method. 1~20  (0) 2024.04.28
[Python] f-string trick (2)  (0) 2024.03.17
[Python] f-string trick (1)  (0) 2024.03.02
FastAPI - starlette.routing.NoMatchFound: No route exists for name  (0) 2024.01.19
[pip] WARNING: Skipping due to invalid metadata entry 'name'  (0) 2023.12.30
๋‹คํ–ˆ๋‹ค