• ๐Ÿ’ปPython :: function ํ•จ์ˆ˜

    2024. 1. 26.

    by. @leeeun

    ๐Ÿ“‚ํ•จ์ˆ˜(function)

    ๊ธฐ๋ณธ๊ตฌ์กฐ

    def ํ•จ์ˆ˜์ด๋ฆ„(์ž…๋ ฅ๊ฐ’ parameter):
    	์ˆ˜ํ–‰ ๋ฌธ์žฅ

    ๋งค๊ฐœ๋ณ€์ˆ˜(parameter)-> ํ•จ์ˆ˜์˜ ์ž…๋ ฅ๊ฐ’์„ ๋ฐ›๋Š” ๋ณ€์ˆ˜
    ์ธ์ˆ˜(arguments)-> ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์ „๋‹ฌํ•˜๋Š” ์ž…๋ ฅ๊ฐ’

    def add(a,b): ->a,b parameter
    add(3,4) ->3,4 arguments

    ๐Ÿ“Œํ•จ์ˆ˜์˜ ์ข…๋ฅ˜

    • ์ž…๋ ฅ๊ฐ’๊ณผ ๊ฒฐ๊ณผ๊ฐ’์ด ์กด์žฌ
    def ํ•จ์ˆ˜ ์ด๋ฆ„(parameter):
    	์ˆ˜ํ–‰ ๋ฌธ์žฅ
        return ๊ฒฐ๊ณผ๊ฐ’
    ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฐ›์„ ๋ณ€์ˆ˜=ํ•จ์ˆ˜์ด๋ฆ„(parameter1,parameter2...)
    • ์ž…๋ ฅ๊ฐ’์ด ์—†๋Š” ํ•จ์ˆ˜
    def ํ•จ์ˆ˜ ์ด๋ฆ„()
    	return ๊ฒฐ๊ณผ๊ฐ’
    ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฐ›์„ ๋ณ€์ˆ˜=ํ•จ์ˆ˜์ด๋ฆ„()
    #์ฃผ๋กœ printํ•  ๋•Œ ์‚ฌ์šฉ
    
    def say():
       return 'Hello'
    >>>a=say()
    >>>print(a)
    Hi
    • ๊ฒฐ๊ณผ๊ฐ’์ด ์—†๋Š” ํ•จ์ˆ˜
    def ํ•จ์ˆ˜์ด๋ฆ„(parameter):
    	์ˆ˜ํ–‰๋ฌธ์žฅ
    ํ•จ์ˆ˜์ด๋ฆ„(parameter1,parameter2...)
    return์ด ์—†์Œ
    
    >>>def add(a,b):
        print("%d, %d์˜ ํ•ฉ์€ %d์ž…๋‹ˆ๋‹ค."%(a,b,a+b))
    >>>add(3,4)
    3,4์˜ ํ•ฉ์€ 7์ž…๋‹ˆ๋‹ค.
    
    >>>a=add(3,4)
    >>>print(a)
    None
    #addํ•จ์ˆ˜ ์•ˆ์˜ print๊ฐ€ ๊ธฐ๋Šฅํ•  ๋ฟ ๋ณ€์ˆ˜๊ฐ€ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ๊ฒƒ์€ ์•„๋‹˜.
    #return value๊ฐ€ None. print๋งŒ ์ˆ˜ํ–‰.
    • ์ž…๋ ฅ๊ฐ’๋„ ๊ฒฐ๊ณผ๊ฐ’๋„ ์—†๋Š” ํ•จ์ˆ˜
    >>>def say():
    	print('Hello')
        
    >>>say()
    Hello
    #ํ•จ์ˆ˜์ด๋ฆ„() ์˜ ํ˜•ํƒœ๋กœ ์‚ฌ์šฉ
    
    <๋งค๊ฐœ๋ณ€์ˆ˜ ์ง€์ •ํ•˜์—ฌ ํ˜ธ์ถœํ•˜๊ธฐ>
    a,b๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›๋Š” addํ•จ์ˆ˜์— ๋Œ€ํ•˜์—ฌ
    result=add(a=3,b=7) ํ˜•ํƒœ๋กœ ์ง€์ • ๊ฐ€๋Šฅ

    ์ž…๋ ฅ์ด ๋ช‡ ๊ฐœ๊ฐ€ ๋ ์ง€ ๋ชจ๋ฅผ ๋•Œ

    def ํ•จ์ˆ˜์ด๋ฆ„(*๋งค๊ฐœ๋ณ€์ˆ˜):
    ์ž…๋ ฅ๊ฐ’์„ ์ „๋ถ€ ๋ชจ์•„์„œ ํŠœํ”Œ๋กœ ๋งŒ๋“ฆ.

    ํ‚ค์›Œ๋“œ ํŒŒ๋ผ๋ฏธํ„ฐ

    def ํ•จ์ˆ˜์ด๋ฆ„(**๋งค๊ฐœ๋ณ€์ˆ˜):
    ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๋”•์…”๋„ˆ๋ฆฌ๊ฐ€ ๋˜๊ณ  ๋ชจ๋“  key=value ํ˜•ํƒœ์˜ ๊ฒฐ๊ด๊ฐ’์ด ๋”•์…”๋„ˆ๋ฆฌ์— ์ €์žฅ๋จ. ์ž…๋ ฅ๊ฐ’์ด ๋ช‡๊ฐœ๋“  ์ƒ๊ด€ ์—†์Œ.

    ๋งค๊ฐœ๋ณ€์ˆ˜์— ์ดˆ๊นƒ๊ฐ’ ๋ฏธ๋ฆฌ ์„ค์ •

    def say(name,old,woman=True):
    ํ•จ์ˆ˜ ํ˜ธ์ถœํ•  ๋•Œ woman์€ ๋นผ๊ณ  2๊ฐœ๋งŒ ์ง€์ •ํ•ด์ค˜๋„ ์ž๋™์œผ๋กœ true๊ฐ’์„ ๊ฐ€์ง.
    say('daeun',22) woman์€ ์ดˆ๊นƒ๊ฐ’ true๋ฅผ ๊ฐ€์ง
    say('daeun',22,false) ๊ฐ’์„ ๋ณ€๊ฒฝํ•ด์ค„ ์ˆ˜๋„ ์žˆ์Œ.
    ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๊ฐ’์„ ์ง€์ •ํ•ด์„œ ์ดˆ๊นƒ๊ฐ’์„ ์„ค์ •

    ๋งค๊ฐœ๋ณ€์ˆ˜ ์ง€์ •ํ•˜์—ฌ ํ˜ธ์ถœํ•˜๊ธฐ

    >>>def add(a,b):
    	return a+b
    
    >>> result=add(a=2,b=5) #a์— 2, b์— 5๋ฅผ ์ „๋‹ฌ. ์ˆœ์„œ์— ์ƒ๊ด€x
    >>>print(result)

    ๐Ÿ“Œํ•จ์ˆ˜ ์ฃผ์˜์‚ฌํ•ญ

    • ํ•จ์ˆ˜์˜ ๊ฒฐ๊ณผ๊ฐ’์€ ์–ธ์ œ๋‚˜ ํ•˜๋‚˜
    def addmul(a,b)
    	return a+b,a*b
    addmul(3,4) #tuple๋กœ (a+b,a*b)์˜ ๊ฐ’์„ ๊ฐ€์ง.
    result1,result2=addmul(3,4) #result1=7, result2=12
    return ์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ๋ฐ”๋กœ ๋น ์ ธ๋‚˜๊ฐˆ ์ˆ˜ ์žˆ์Œ.
    
    ํ•จ์ˆ˜ ์ •์˜ 
    • ์ดˆ๊ธฐ๊ฐ’์„ ์„ค์ •ํ•ด๋†“์€ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋’ค์— ์ดˆ๊นƒ๊ฐ’์„ ์„ค์ •ํ•ด๋†“์ง€ ์•Š์€ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค
    • ํ•จ์ˆ˜ ๋‚ด๋ถ€ ๋ณ€์ˆ˜๋ฅผ ํ•จ์ˆ˜ ๋ฐ–์—์„œ ์‚ฌ์šฉํ•  ๋–„
    • global ๋ณ€์ˆ˜ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์œผ๋ฉด ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•  ๋•Œ global a ๊ฐ™์€ ์‹์œผ๋กœ ์“ฐ๋ฉด ๋จ.(๋น„์ถ”์ฒœ)

    lambda

    add=lambda a,b : a+b
    ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์‚ฌ์šฉ, def์™€ ๋™์ผํ•œ ์—ญํ• ์ธ๋ฐ ํ•œ ์ค„๋กœ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉ

    Python build-in functions ๋‚ด์žฅํ•จ์ˆ˜

    ์™ธ๋ถ€ ๋ชจ๋“ˆ๊ณผ ๋‹ฌ๋ฆฌ import๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š์Œ.

    >>>abs(-9)
    9 //์ ˆ๋Œ€๊ฐ’ ๋‚˜ํƒ€๋ƒ„
    >>> all([1,2,3])
    true
    all(x) : ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ์ž๋ฃŒํ˜•(for๋ฌธ์œผ๋กœ ๊ฐ’์„ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ, ํŠœํ”Œ, ๋ฌธ์ž์—ด, ๋”•์…”๋„ˆ๋ฆฌ, ์ง‘ํ•ฉ ๋“ฑ)
    ์„ ์ž…๋ ฅ ์ธ์ˆ˜๋กœ ๋ฐ›๊ณ  ์ž๋ฃŒํ˜•์˜ ์ฐธ๊ฑฐ์ง“์— ๋”ฐ๋ผ
    x๊ฐ€ ๋ชจ๋‘ ์ฐธ์ด๋ฉด true ๊ฑฐ์ง“์ด ํ•˜๋‚˜๋ผ๋„ ์žˆ์œผ๋ฉด false
    >>>any(x) x์ค‘ ํ•˜๋‚˜๋ผ๋„ ์ฐธ์ด ์žˆ์œผ๋ฉด true x๊ฐ€ ๋ชจ๋‘ ๊ฑฐ์ง“์ผ ๋•Œ์—๋งŒ false
    chr(i) ์•„์Šคํ‚ค ์ฝ”๋“œ ๊ฐ’์„ ์ž…๋ ฅ๋ฐ›์•„ ํ•ด๋‹นํ•˜๋Š” ๋ฌธ์ž๋ฅผ ์ถœ๋ ฅ
    >>>pow(3,2)
    9 //์•ž์ด ๋ฐ‘, ๋’ค์—๊ฐ€ ์ง€์ˆ˜
    >>>pow(2,4,3)
    1 // 2**4%3
    >>>round(-3.5)
    -4 //๋ฐ˜์˜ฌ๋ฆผ
    >>>round(3.141592,2)
    3 // ์†Œ์ˆ˜์  2๋ฒˆ์งธ ์ž๋ฆฌ๊นŒ์ง€ ์ถœ๋ ฅ
    >>>int(34.6)
    34// ๋ณ€์ˆ˜ type์„ ํ•จ์ˆ˜๋กœ์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
    
    help(ํ•จ์ˆ˜์ด๋ฆ„)->๊ทธ ํ•จ์ˆ˜์˜ ๊ธฐ๋ณธ ์ •๋ณด ์ถœ๋ ฅ
    
    id(object)->๊ฐ์ฒด์˜ ์ฃผ์†Œ๊ฐ’์„ ๊ฐ€์ ธ์˜ด

    Local variables

    >>> def quadrtic(a,b,c,x): #fuction header 
        first=a*x**2
        second=b*x
        third=c
        return first+second+third #function body
    
    #fist, second, third๋Š” quadratic ํ•จ์ˆ˜์˜ ์ง€์—ญ๋ณ€์ˆ˜
    
    >>> quadratic(a,b,c,x)
    18 #function call

    ํŒŒ์ด์ฌ์—์„œ ํ•จ์ˆ˜ ํ˜ธ์ถœ์„ ํ•  ๋•Œ ํ˜ธ์ถœ์„ ์œ„ํ•ด ์ง€์—ญ ๋ณ€์ˆ˜๋ฅผ namespace์— ์ €์žฅ-> ํ•จ์ˆ˜ return์‹œ namespace๋Š” ์ ‘๊ทผ ๋ถˆ๊ฐ€


    • ์‚ฌ์šฉ์ž ์ •์˜ ํ•จ์ˆ˜
    def convert_to_celsius(fahrenheit):
    	return (fahrenheit-32) * 5/9
    • ๊ธฐ๋ณธ๊ตฌ์กฐ : def ํ•จ์ˆ˜์ด๋ฆ„(๋งค๊ฐœ๋ณ€์ˆ˜ parameter):
      function definition์„ ์‹คํ–‰->function object ์ƒ์„ฑ->ํ•จ์ˆ˜ ํ˜ธ์ถœ
      def๋Š” ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜ ์ด๋ฆ„์œผ๋กœ ์‚ฌ์šฉx
      ๋งค๊ฐœ๋ณ€์ˆ˜(parameter)->ํ•จ์ˆ˜์— ์ž…๋ ฅ์œผ๋กœ ์ „๋‹ฌ๋œ ๊ฐ’์„ ๋ฐ›๋Š” ๋ณ€์ˆ˜
      ์ธ์ˆ˜(arguments)-> ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์ „๋‹ฌํ•˜๋Š” ์ž…๋ ฅ๊ฐ’

    //์ผ์ •์นธ ๋„์šฐ๊ธฐ: ๋ฐ‘ ์ฝ”๋“œ๊ฐ€ ์œ— ์ฝ”๋“œ์— ์ข…์†๋  ๋•Œ 4์นธ space
    ์—๋Ÿฌ์ฃผ์˜) ์ž…๋ ฅ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐœ์ˆ˜, ํ•จ์ˆ˜ ๋‚ด๋ถ€ ๋ณ€์ˆ˜๋ฅผ ํ˜ธ์ถœx.
    ํ•จ์ˆ˜ ์žฌ์ •์˜ ๊ฐ€๋Šฅ!

    • ์ฃผ์„์ฒ˜๋ฆฌ: ํ•œ ์ค„ ์งœ๋ฆฌ #, ์—ฌ๋Ÿฌ์ค„ """๋‚˜ '''
    • ํ•จ์ˆ˜ ์ž˜ ๋งŒ๋“œ๋Š” ๋ฒ•
      -ํ•จ์ˆ˜ ์ด๋ฆ„, ์ž…๋ ฅ๊ฐ’, ์ถœ๋ ฅ๊ฐ’, function body ๋ช…ํ™•ํ•˜๊ฒŒ.print("life" "is" "suck")
      ->lifeissuck ์ถœ๋ ฅ
      print("life","is","suck")
      ->life is suck ์ถœ๋ ฅ
      for i in range(10):
      	print(i,end=' ')
       
       0 1 2 3 4 5 ....  ์ถœ๋ ฅ
    • ํ•œ ์ค„์— ๊ฒฐ๊ณผ๊ฐ’ ์ถœ๋ ฅํ•˜๊ธฐ
    • print

    '๐Ÿ’ญ Study > : Python' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

    ๐Ÿ’ปPython:: Class  (1) 2024.01.26
    ๐Ÿ’ปPython:: input & File  (1) 2024.01.26
    ๐Ÿ’ปPython:: Module  (0) 2024.01.25
    ๐Ÿ’ปPython:: ์ œ์–ด๋ฌธ if & while & for  (0) 2024.01.25
    ๐Ÿ’ป Python:: ์ž๋ฃŒํ˜• Set & Bool  (0) 2024.01.25

    ๋Œ“๊ธ€