์•Œ๊ณ ๋ฆฌ์ฆ˜๐Ÿฅš/๋ฌธ์ œํ’€์ด (Python)

[python] 2. ์ฝ”๋”ฉํ…Œ์ŠคํŠธ์—์„œ ์‚ฌ์šฉ๋˜๋Š” Python ๊ธฐ๋ณธ

๐Ÿช„ํ•˜๋ฃจ๐Ÿช„ 2023. 4. 30. 23:36
728x90

 

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ์—์„œ ์‚ฌ์šฉ๋˜๋Š” Python ๊ธฐ๋ณธ

 

๐ŸŽต์ธ๋ดํŠธ

๊ณต๋ฐฑ 4์นธ์ด ์›์น™

 

๐ŸŽต๋„ค์ด๋ฐ ์›์น™

Snake Case์„ ์ง€ํ–ฅ - ์†Œ๋ฌธ์ž + ๋‹จ์–ด๋ฅผ ๋ฐ‘์ค„(_)๋กœ ๊ตฌ๋ถ„

 

๐ŸŽต๋žŒ๋‹ค ํ‘œํ˜„์‹

lambda ๋งค๊ฐœ๋ณ€์ˆ˜: ํ‘œํ˜„์‹์˜ ํ˜•ํƒœ๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ,

 

์ฃผ๋กœ map ํ•จ์ˆ˜์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋จ

map(lambda ๋งค๊ฐœ๋ณ€์ˆ˜: ํ‘œํ˜„์‹, input๊ฐ’)

 

๐ŸŽตList Comprehension

: ๊ธฐ์กด ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ƒˆ๋กœ์šด ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค์–ด๋‚ด๋Š” ๋ฌธ์žฅ(๋ฒ„์ „ 2.7 ์ดํ›„ ๋”•์…”๋„ˆ๋ฆฌ๋„ ๊ฐ€๋Šฅ)

๋ฌธ๋ฒ•๊ณผ ์˜๋ฏธ๋ฅผ ์ถ•์•ฝํ•˜์—ฌ ๋‚˜ํƒ€๋‚ด๊ธฐ ๋•Œ๋ฌธ์— ๋งค์šฐ ๊ฐ•๋ ฅํ•˜์ง€๋งŒ, ๊ฐ€๋…์„ฑ์„ ๋–จ์–ด๋œจ๋ฆฌ๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

 

์˜ˆ์ œ) 100 ์ดํ•˜ ์ง์ˆ˜์— 100์„ ๊ณฑํ•˜์—ฌ๋ผ

[n*100 for n in range(1, 100+1) if n%2==0]

 

๐ŸŽตGenerator

: ๋ฐ˜๋ณต๋ฌธ์˜ ๋™์ž‘์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ฃจํ‹ด ํ˜•ํƒœ

๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜์ง€ ์•Š๊ณ , ์—ฐ์‚ฐ๋งŒ ๋งŒ๋“ค์–ด ๋‘” ๋‹ค์Œ(yield) ์‚ฌ์šฉ(next) ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ณต๊ฐ„ ๋ณต์žก๋„๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Œ

์—ฌ๋Ÿฌ ํƒ€์ž…์˜ ๊ฐ’์„ ํ•˜๋‚˜์˜ ํ•จ์ˆ˜์—์„œ ์ƒ์„ฑ ๊ฐ€๋Šฅ

 

์˜ˆ์ œ) ์ž์—ฐ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” Generator์„ ๋งŒ๋“ค๊ณ  100 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์˜ ํ•ฉ์„ ๊ตฌํ•˜์—ฌ๋ผ.

def get_natural_number():
    num=0
    while True:
        num+=1
        yield num
        
g=get_natural_number()
for _ in range(0, 100+1):
    sum+=next(g)
print(sum)

 

์˜ˆ์ œ) ๋‹ค์–‘ํ•œ ์ž๋ฃŒํ˜•์„ ํฌํ•จํ•˜๋Š” Generator์„ ๋งŒ๋“ค์–ด๋ผ

def get_my_info():
    yield 25
    yield 162
    
g=get_my_info()
next(g) ##return 25
next(g) ##return 162

 

๐ŸŽตEnumerate

: ์—ฌ๋Ÿฌ ์ž๋ฃŒํ˜•์„ ์ธ๋ฑ์Šค๋ฅผ ํฌํ•จํ•œ enumerate ๊ฐ์ฒด๋กœ ๋ฆฌํ„ด

a=[0, 1, 2, 3, 4, 5]์ผ๋•Œ, ์ธ๋ฑ์Šค์™€ ๊ฐ’์„ ํ•จ๊ป˜ ์ถœ๋ ฅํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด

for index, value in enumerate(a):
    print(index, value)

 

๐ŸŽต๋ฐ˜๋ณต๋ฌธ

์˜ˆ์ œ) 0๋ถ€ํ„ฐ 10๊นŒ์ง€์˜ ํ•ฉ์„ ๊ตฌํ•˜์—ฌ๋ผ

# ver1. ๋ง์…ˆ ์—ฐ์‚ฐ์ž(+)๋ฅผ ์ด์šฉํ•œ ๊ตฌํ˜„
result=0
for i in range(0, 10+1):
    result+=1
    
# ver2. ๊ธฐ๋ณธ ๋‚ด์žฅํ•จ์ˆ˜ sum()์„ ์ด์šฉํ•œ ๊ตฌํ˜„
result=sum(i for i in range(0, 10+1))

# ver3. ๊ธฐ๋ณธ ๋‚ด์žฅํ•จ์ˆ˜ sum()์„ ์ด์šฉํ•œ ๊ตฌํ˜„
result=sum(range(0, 10+1))

 

๐ŸŽตGeneric Progromming(ํŒŒ๋ผ๋ฏธํ„ฐ ํƒ€์ž…์ด ๋‚˜์ค‘์— ์ง€์ •)

ํŒŒ์ด์ฌ์˜ ๊ฒฝ์šฐ ์›๋ž˜ ๋™์  ํƒ€์ดํ•‘ ์–ธ์–ด์ด๊ธฐ ๋•Œ๋ฌธ์— ํŒŒ๋ผ๋ฏธํ„ฐ ํƒ€์ž…์ด ๋‚˜์ค‘์— ์ง€์ •๋œ๋‹ค.

ํ•˜์ง€๋งŒ, ๊ฐ€๋…์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ํƒ€์ž…์„ ๋ช…์‹œ์ ์œผ๋กœ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•˜๊ณ  ์žˆ๋‹ค.

from typing import TypeVar

A=TypeVar('A')
B=TypeVar('B')

def var_type_is_equal(a:A, b:B ) -> bool:
    return type(A)==type(B)

var_type_is_equal(25, 25.4)

 

๐ŸŽตํด๋ž˜์Šค

ํŒŒ์ด์ฌ์˜ ํด๋ž˜์Šค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

class Car:
    price=0
    wheel_num=0
    temperature=0
    # ์ƒ์„ฑ์ž
    def __init__(self, price:int=None, wheel_num:int=None, temperature:float=None)->None:
        self.price=price
        self.wheel_num = wheel_num
        self.temperature = temperature
        
Genesis=Car()
Genesis.price=4000

 

๐ŸŽต๊ตฌ์กฐ์ฒด

ํŒŒ์ด์ฌ์˜ ๊ฒฝ์šฐ ๊ตฌ์กฐ์ฒด๊ฐ€ ์—†์—ˆ์œผ๋‚˜

3.7 ๋ฒ„์ „๋ถ€ํ„ฐ dataclass๋ฅผ ํ™œ์šฉํ•ด ๊ตฌ์กฐ์ฒด ํ˜•ํƒœ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

dataclass๋ฅผ ํ™œ์šฉํ•ด ํด๋ž˜์Šค๋ฅผ ์„ ์–ธํ•˜๋ฉด ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋‚ด๋ถ€ ํ•จ์ˆ˜์˜ ๊ธฐ๋Šฅ(__init__ ๋“ฑ)์„ ์ž๋™์œผ๋กœ ๊ตฌํ˜„ํ•ด ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

from dataclasses import dataclass

@dataclass
class Car:
    price: int=None
    wheel_num: int=None
    temperature: float=None

Genesis=Car()
Genesis.price=4000

 


๐ŸŽตPass

: ์ฝ”๋“œ์˜ ์ „์ฒด ๊ณจ๊ฒฉ์„ ๋งŒ๋“ค๊ณ  ๋‚ด๋ถ€์—์„œ ์ฒ˜๋ฆฌํ•  ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋ฉด ์šฉ์ด

class Circle:
    def get_radius(self):
        pass
    def get_area(self):
        pass

 

728x90