🐹 μ‚¬μš©μž μ •μ˜ ν•¨μˆ˜

λ―Όλ‹¬νŒ½μ΄μš°μœ Β·2024λ…„ 5μ›” 17일

🐹 파이썬 기초

λͺ©λ‘ 보기
13/19

πŸ’‘ 1. μ‚¬μš©μž μ •μ˜ ν•¨μˆ˜λž€?

μ‚¬μš©μž μ •μ˜ ν•¨μˆ˜λž€ μ‚¬μš©μžκ°€ νŠΉμ • μž‘μ—…μ„ μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ 직접 μ •μ˜ν•œ ν•¨μˆ˜λ₯Ό μ˜λ―Έν•œλ‹€. νŒŒμ΄μ¬μ—λŠ” λ§Žμ€ λ‚΄μž₯ ν•¨μˆ˜λ“€μ΄ μžˆμ§€λ§Œ, λ•Œλ‘œλŠ” 우리의 μš”κ΅¬μ‚¬ν•­μ— 맞게 λ™μž‘ν•˜λŠ” ν•¨μˆ˜λ₯Ό 직접 λ§Œλ“€μ–΄μ•Ό ν•œλ‹€.

μ‚¬μš©μž μ •μ˜ ν•¨μˆ˜μ˜ κΈ°λ³Έ κ΅¬μ‘°λŠ” λ‹€μŒκ³Ό κ°™λ‹€.

def ν•¨μˆ˜λͺ…(λ§€κ°œλ³€μˆ˜1, λ§€κ°œλ³€μˆ˜2, ...):
    # ν•¨μˆ˜ λ‚΄μš©
    return κ²°κ³Όκ°’

1-1. λ§€κ°œλ³€μˆ˜μ™€ λ°˜ν™˜ 값이 μ—†λŠ” ν•¨μˆ˜

def func1():
    print('🐹: 찍찍')

func1()
func1()
func1()
> 🐹: 찍찍
> 🐹: 찍찍
> 🐹: 찍찍
for i in range(5):
    func1()
> 🐹: 찍찍
> 🐹: 찍찍
> 🐹: 찍찍
> 🐹: 찍찍
> 🐹: 찍찍

1-2. λ§€κ°œλ³€μˆ˜κ°€ 있고 λ°˜ν™˜ 값이 μ—†λŠ” ν•¨μˆ˜

def func2(num):
    print(f'μž…λ ₯받은 숫자: {num}')

func2(100)
func2(5)
> μž…λ ₯받은 숫자: 100
> μž…λ ₯받은 숫자: 5
def func3(start, end):
    sum = 0
    for i in range(start, end+1):
        sum += i
    print(f'{start}λΆ€ν„° {end}κΉŒμ§€μ˜ ν•©: {sum}')

func3(1, 10)
func3(1, 100)
> 1λΆ€ν„° 10κΉŒμ§€μ˜ ν•©: 55
> 1λΆ€ν„° 100κΉŒμ§€μ˜ ν•©: 5050

1-3. λ°˜ν™˜ 값이 μžˆλŠ” ν•¨μˆ˜

def func4():
    print('μ•ˆλ…•ν•˜μ„Έμš” Python!')

func4()
temp = func4()
print(temp) # ν•¨μˆ˜μ—μ„œ μ‹€ν–‰λœ 값이 ν”„λ¦°νŠΈ 되고 μ‚¬λΌμ Έμ„œ tempκ°€ 가리킬 값이 없어짐
> μ•ˆλ…•ν•˜μ„Έμš” Python!
> μ•ˆλ…•ν•˜μ„Έμš” Python!
> None
temp = func4 # 이건 싀행이 μ•„λ‹ˆλΌ ν•¨μˆ˜μ˜ λ©”λͺ¨λ¦¬ μ£Όμ†Œ μ €μž₯
print(temp)
> <function func4 at 0x7afed7e179a0>
temp()
> μ•ˆλ…•ν•˜μ„Έμš” Python!
def func5():
    return '🐹'

print(func5()) # 좜λ ₯된 ν›„ 사라짐
> 🐹
temp = func5()
print(f'temp에 μ €μž₯된 κ°’: {temp}')
> temp에 μ €μž₯된 κ°’: 🐹
def func6(num1, num2):
    sum = num1 + num2
    return sum

print(func6(10, 5)) # 좜λ ₯ν•˜κ³  가리킬 게 μ—†μ–΄ 사라짐
temp = func6(10, 5) # temp에 κ°’ μ €μž₯됨
print(temp)
> 15
> 15
print(func6(10))
> TypeError: func6() missing 1 required positional argument: 'num2'

1-4. 기본값이 μ„€μ •λœ λ§€κ°œλ³€μˆ˜

def func6(num1=0, num2=0):
  sum = num1 + num2
  return sum
  
print(func6()) # num1=0, num2=0
print(func6(10)) # num1=10, num2=0
print(func6(10, 3)) # num1=10, num2=3
> 0
> 10
> 13
print(func6(, 3))
print(func6(None, 3))
> SyntaxError: invalid syntax
> TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'
print(func6(num2=3)) # num1=0, num2=3
> 3

1-5. κ°€λ³€ λ§€κ°œλ³€μˆ˜

ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•  λ•Œ *λ₯Ό μ‚¬μš©ν•˜λ©΄ μ‹œν€€μŠ€(리슀트, νŠœν”Œ λ“±)의 μš”μ†Œλ₯Ό κ°œλ³„μ μΈ μœ„μΉ˜ 인자둜 ν’€μ–΄μ„œ 전달할 수 μžˆλ‹€.

def func7(*args):
  return args
  
print(func7()) # 빈 νŠœν”Œ 생성
print(func7(10, 30))
print(func7(10, 30, 70, 90, 100)) # νŠœν”Œμ˜ μš”μ†Œ 수 μ œμ•½μ—†μ΄ κ°’ λ³€κ²½ κ°€λŠ₯
> ()
> (10, 30)
> (10, 30, 70, 90, 100)

1-6. ν‚€μ›Œλ“œ λ§€κ°œλ³€μˆ˜

def func8(id, name, age):
  print(f'아이디: {id}')
  print(f'이름: {name}')
  print(f'λ‚˜μ΄: {age}')
func8('yoomin', '유민콩', 5)
> 아이디: yoomin
> 이름: 유민콩
> λ‚˜μ΄: 5
func8(age=5, id='yoomin', name='유민콩') # λ§€κ°œλ³€μˆ˜λ§Œ 맞으면 μˆœμ„œ 상관 X
> 아이디: yoomin
> 이름: 유민콩
> λ‚˜μ΄: 5
dic1 = {'age':5, 'id':'yoomin', 'name':'유민콩'}
func8(**dic1) # λ”•μ…”λ„ˆλ¦¬λ‘œ 넣을 땐 μ•žμ— **
> 아이디: yoomin
> 이름: 유민콩
> λ‚˜μ΄: 5
func8(*dic1) # *이 ν•˜λ‚˜ λΉ μ§€λ©΄ ν‚€κ°€ κ°’μœΌλ‘œ 전달
> 아이디: age
> 이름: id
> λ‚˜μ΄: name

1-7. μ—¬λŸ¬κ°œμ˜ λ°˜ν™˜κ°’

def func9(num1, num2):
  return num1 + num2
  
result1 = func9(10, 3)
print(result1)
> 13
def func10(num1, num2):
  return num1+num2, num1-num2, num1*num2, num1/num2 # μ—¬λŸ¬κ°œ λ°˜ν™˜ κ°€λŠ₯
result1, result2, result3, result4 = func10(10, 3) # μ—¬λŸ¬ λ³€μˆ˜μ— μ°¨λ‘€λ‘œ λŒ€μž… κ°€λŠ₯
print(f'λ§μ…ˆ: {result1}')
print(f'λΊ„μ…ˆ: {result2}')
print(f'κ³±μ…ˆ: {result3}')
print(f'λ‚˜λˆ—μ…ˆ: {result4}')
> λ§μ…ˆ: 13
> λΊ„μ…ˆ: 7
> κ³±μ…ˆ: 30
> λ‚˜λˆ—μ…ˆ: 3.3333333333333335
_, _, result3, _ = func10(10, 3) # μ‚¬μš©ν•˜μ§€ μ•Šμ„ λ³€μˆ˜λ₯Ό λ§Œλ“€κ³  μ‹Άμ§€ μ•Šμ„λ•Œ (λ©”λͺ¨λ¦¬ μ ˆμ•½μ„ μœ„ν•΄) _λ₯Ό 톡해 νŠΉμ • λ³€μˆ˜λ₯Ό λ§Œλ“€μ§€ μ•Šμ„ 수 있음
print(f'κ³±μ…ˆ: {result3}')
> κ³±μ…ˆ: 30
li1 = [10, 20, 30, 40, 50]

for _, v in enumerate(li1):
  print(f'κ°’: {v}')
> κ°’: 10
> κ°’: 20
> κ°’: 30
> κ°’: 40
> κ°’: 50

πŸ’‘ 2. None의 νŠΉμ§•

None은 νŒŒμ΄μ¬μ—μ„œ νŠΉλ³„ν•œ κ°’μœΌλ‘œ, μ•„λ¬΄λŸ° 값이 μ—†μŒμ„ ν‘œν˜„ν•˜λŠ” 데 μ‚¬μš©λœλ‹€. λ‹€λ₯Έ μ–Έμ–΄μ—μ„œμ˜ nullλ˜λŠ” nillκ³Ό μœ μ‚¬ν•œ κ°œλ…μ΄λ‹€. None은 파이썬의 λ‚΄μž₯ μƒμˆ˜μ΄λ©°, κ·Έ 자체둜 데이터 νƒ€μž…μ΄ NoneType이닀. λͺ¨λ“  None은 λ™μΌν•˜λ―€λ‘œ, 두 개의 None값을 비ꡐ할 λ•Œ 항상 Trueλ₯Ό λ°˜ν™˜ν•œλ‹€.

num = None
print(num)
> None
def func11(num):
  if num >= 10:
    return num

print(func11(10))
print(func11(4))
> 10
> None
def func12(num=None):
  if num is None:
    print('μ „λ‹¬λœ 값이 μ—†μŠ΅λ‹ˆλ‹€.')
  else:
    print(num)
    
func12(10)
func12()
> 10
> μ „λ‹¬λœ 값이 μ—†μŠ΅λ‹ˆλ‹€.
num = None

if num is None:
  print('num의 값은 μ—†μŠ΅λ‹ˆλ‹€.')

# == 을 톡해 None을 λΉ„κ΅ν•˜λŠ” 것은 ꢌμž₯ν•˜μ§€ μ•ŠμŒ
# None은 κ°€λ¦¬ν‚€λŠ” λ©”λͺ¨λ¦¬ μžμ²΄κ°€ μ—†λ‹€λŠ” 의미이기 λ•Œλ¬Έ
if num == None:
  print('num의 값은 μ—†μŠ΅λ‹ˆλ‹€.')
> num의 값은 μ—†μŠ΅λ‹ˆλ‹€.
> num의 값은 μ—†μŠ΅λ‹ˆλ‹€.
li1 = [1, 2, 3, 4, 5]
li2 = [1, 2, 3, 4, 5]

# li1κ³Ό li2의 λ©”λͺ¨λ¦¬ μ£Όμ†Œκ°€ λ™μΌν•œκ°€? (객체 비ꡐ)
print(li1 is li2)
# li1κ³Ό li2κ°€ λ™μΌν•œκ°€? (κ°’ λΉ„)
print(li1 == li2)
> False
> True
profile
μ–΄λ–»κ²Œ ν–„μŠ€ν„°κ°€ 개발자

0개의 λŒ“κΈ€