πŸ‘“ netsted function

may_soouuΒ·2020λ…„ 8μ›” 22일
0

λ„ˆλ¬΄λ„ˆλ¬΄ μ–΄λ ΅λ‹€,,, πŸ€·πŸΌβ€β™€οΈπŸ€·πŸ»πŸ€·β€β™‚οΈ

πŸ“Œ μ€‘μ²©ν•¨μˆ˜

  • ν•¨μˆ˜ 내뢀에 μ •μ˜λœ 또 λ‹€λ₯Έ ν•¨μˆ˜
  • μ€‘μ²©ν•¨μˆ˜λŠ” ν•΄λ‹Ή ν•¨μˆ˜κ°€ μ •μ˜λœ ν•¨μˆ˜ λ‚΄μ—μ„œ 호좜 및 λ°˜ν™˜ κ°€λŠ₯ν•˜λ‹€.
  • μžκΈ°κ°€ μ†ν•œ μ›λž˜ ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜λ₯Ό λ°›μ•„μ„œ μ‚¬μš©ν•  수 있으며 μ΅œμ’… κ²°κ³Ό 값을 λ°˜ν™˜
    def outer_func():
        print('outer_func μž…λ‹ˆλ‹€')
            # 쀑첩 ν•¨μˆ˜μ˜ μ •μ˜
        def inner_func():
            return 'inner_func μž…λ‹ˆλ‹€'    
        # 쀑첩 ν•¨μˆ˜ 호좜 
        print(inner_func())
    .
    outer_func()
       	 #result : outer_func μž…λ‹ˆλ‹€
         	           inner_func μž…λ‹ˆλ‹€

    μ‚¬μš©μ΄μœ 

    1. 가독성
    - λ°˜λ³΅λ˜λŠ” μ½”λ“œλ₯Ό μ€‘μ²©ν•¨μˆ˜λ‘œ μ„ μ–Έν•΄μ„œ μ½”λ“œλ₯Ό 효과적으둜 κ΄€λ¦¬ν•˜κΈ° μœ„ν•¨μ΄λ‹€.

    2. closure(νμ‡„ν•œλ‹€ > 뭘?!)
    - μ€‘μ²©ν•¨μˆ˜κ°€ λΆ€λͺ¨ ν•¨μˆ˜μ˜ λ³€μˆ˜λ‚˜ 정보λ₯Ό 가두어 μ‚¬μš©ν•˜λŠ” 것 & λΆ€λͺ¨ν•¨μˆ˜λŠ” μ€‘μ²©ν•¨μˆ˜λ₯Ό 리턴해 μ€€λ‹€. 그러면 ! λΆ€λͺ¨ν•¨μˆ˜μ˜ λ³€μˆ˜λ₯Ό μ™ΈλΆ€λ‘œλΆ€ν„° 직접적인 접근은 κ²©λ¦¬ν•˜λ©΄μ„œ 격리된 λΆ€λͺ¨ν•¨μˆ˜μ˜ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•œ 연산은 κ°€λŠ₯ν•˜κ²Œ ν•΄μ£ΌλŠ” 것 (..?)
    정리!! 
    1. 쀑첩 ν•¨μˆ˜κ°€ λΆ€λͺ¨ ν•¨μˆ˜μ˜ λ³€μˆ˜λ‚˜ 정보λ₯Ό 쀑첩 ν•¨μˆ˜ λ‚΄μ—μ„œ μ‚¬μš©
    2. λΆ€λͺ¨ ν•¨μˆ˜λŠ” λ¦¬ν„΄κ°’μœΌλ‘œ 쀑첩 ν•¨μˆ˜λ₯Ό 리턴
    3. λΆ€λͺ¨ν•¨μˆ˜μ˜ 직접적인 접근은 λΆˆκ°€
  • 그럼 closureλŠ” μ™œ μ‚¬μš©ν• κΉŒ?

    μ–΄λ– ν•œ 정보λ₯Ό 기반으둜 연산을 μ‹€ν–‰ν•˜κ³  μ‹Άμ§€λ§Œ 기반이 λ˜λŠ” μ •λ³΄λŠ” 접근을 μ œν•œν•˜μ—¬ λ…ΈμΆœμ΄ λ˜κ±°λ‚˜ μˆ˜μ •μ΄ λ˜μ§€ λͺ»ν•˜κ²Œ ν•˜κ³  싢을 λ•Œ μ‚¬μš©

(좜처 : μœ„μ½”λ“œ πŸ™‡πŸΌβ€β™€οΈ (μ‚¬λž‘ν•΄μš” μœ„μ½”λ“œ!!))

πŸ‘ŠπŸ» λ°μ½”λ ˆμ΄ν„°

  • κ°μ‹ΈλŠ” 것 > ν•¨μˆ˜ 자체λ₯Ό λ³€κ²½μ‹œν‚€μ§€ μ•Šκ³ , κ°μ‹Έκ³ μž ν•˜λŠ” ν•¨μˆ˜μ˜ μ „/후에 μ½”λ“œλ₯Ό μ‹€ν–‰ν•  수 μžˆλ„λ‘ λ§Œλ“€μ–΄μ€€λ‹€.

    	πŸ“Œ λ°μ½”λ ˆμ΄ν„° 생성	
def login_required(func):
    def inner_function(args1, args2):
        print(f"{args1}κ°€ {args2}μ—μ„œ 둜그인 ν–ˆμŠ΅λ‹ˆλ‹€")
        return func(args1, args2)
    return inner_function

@login_required
def login(user_name,place):
    print(f'{user_name}, 접속 μž₯μ†Œ: {place}')

login('μ‚¬μš©μž1','집')
login('μ‚¬μš©μž2','피씨방')
profile
back-end 개발자

0개의 λŒ“κΈ€