구대연 2024. 7. 10. 14:53
  • 매개변수를 갖는 함수 만들기
    def function_name(매개변수1, 매개변수2, …):
    # statement(문장)
    
  • 매개 변수를 갖는 함수를 생성하는 코드의 기본 구조
  • 가변 매개변수
    • 가변 매개변수 함수를 생성하는 코드의 기본 구조
      • 가변 매개변수라는 것을 표시하기 위해 맨뒤에 오는 가변 매개변수에는 “*”(asterisk:에스터리스크)를 붙임
    • def function_name(일반_매개변수1, 일반_매개변수2, ..., *가변_매개변수): # statement(문장)
    • 일반 매개변수 뒤에 가변 매개변수가 와야 한다는 규칙을 지키고 있음.
    • def my_hobby(season,month,*what): print(season + "제 취미는") for hobby in what: print(hobby) print("입니다") print("특히 {}월에 취미 생활을 위해 시간을 많이 내는 편입니다.".format(month)) hobby = ["낚시","등산","드라이브"] my_hobby("가을",9,*hobby) 가을제 취미는 낚시 등산 드라이브 입니다 특히 9월에 취미 생활을 위해 시간을 많이 내는 편입니다.
  • 기본 매개변수
    • 함수 선언할 때 “매개변수 = 값”형태로 기본 값을 지정하는 매개변수
    • def print_n_times(value, n=2): for i in range(n): print(value) # 함수를 호출합니다. print_n_times("안녕하세요") print_n_times("반갑습니다",1) 안녕하세요 안녕하세요 반갑습니다
    • 제약 조건
    • 기본 매개변수뒤에는 일반 매개변수가 올 수 없음 → 일반 매개변수1, 일반 매개변수2, …, 기본 매개변수1, 기본 매개변수2,…
      def first_order(anju, sul = ["참이슬 프레쉬"], husick = "아이스크림"):
        # 매개변수 3개를 받음 
        print(anju, end = " ")
        print("그리고", end = " ")
        for s in sul:
          print(sul, end = " ")
        print("주세요. 그리고 후식으로는 {}을(를) 주세요.".format(husick))
      
      first_order("한우")
      first_order("방어회",["소주","맥주"],"아이스 라떼")
      
      한우 그리고 ['참이슬 프레쉬', '테라'] ['참이슬 프레쉬', '테라'] 주세요. 그리고 후식으로는 아이스크림을(를) 주세요.
      방어회 그리고 ['소주', '맥주'] ['소주', '맥주'] 주세요. 그리고 후식으로는 아이스 라떼을(를) 주세요.
      
    • def first_order(anju, sul = "창이슬 프레쉬"): print(anju, end = " ") print("그리고", end = " ") print(sul, end = " ") print("주세요") first_order("삼겹살") first_order("삼겹살","맥주") first_order("참치회",["소주","맥주"])
  • 매개변수 조합
    • 가변 매개변수 다음에 기본 매개변수 순으로 배치한 경우
      def print_n_times(*values, n=2):
        #n번 반복
        for i in range(n):
          for value in values:
            print("{}".format(value),end = " ")
          print()
      
      print_n_time("안녕하세요","즐거운","파이썬 프로그래밍",3)
      
      안녕하세요 즐거운 파이썬 프로그래밍 3
      안녕하세요 즐거운 파이썬 프로그래밍 3
      
      </aside>
    • <aside> 💡 기본 매개 변수에 값을 전달 할 수 없어 기본 매개 변수 기능을 상실함
    • 키워드 매개변수
      • print() 함수는 다음과 같이 형태로 “변수명 = 값” 형태로 기본 매개변수에 값을 할당
      • 함수 호출할 때 가변 매개변수와 기본 매개변수 어떻게 구분하나? 기본 매개변수는 “매개변수 이름 = 값” 형태로
      def print_n_times(*values, n=2):
        #n번 반복
        for i in range(n):
          for value in values:
            print("{}".format(value),end = " ")
          print()
      
      print_n_times("안녕하세요","즐거운","파이썬 프로그래밍",n=3)
      
      안녕하세요 즐거운 파이썬 프로그래밍 
      안녕하세요 즐거운 파이썬 프로그래밍 
      안녕하세요 즐거운 파이썬 프로그래밍
      
  • 리턴(return)
    • 값을 반환하는 return
    • def return_test(): x = 3 # print(f"{}를 호출한 쪽에 전달하면서 리턴(제어권을 반환)합니다.) return x y = return_test() print(f"함수 return_test()로부터 {y}를 반환(return)받았습니다.") 함수 return_test()로부터 3를 반환(return)받았습니다.
    • 값을 반환하지 않은 return
    • def double_print(string): print(string) print(string) return data = double_print("Hello World") print(data) Hello World Hello World None
  • 튜플(tuple)
    • 함수와 함께 많이 사용되는 리스트와 비슷한 자료형, 리스트와 다른 점은 한번 값이 결정된 요소는 변경할 수 없음
    • 형태 : (요소값,요소값,요소값, …)
    • t = (10,20,30) print(t[0],t[1],t[2]) 10 20 30
    • 요소가 1개인 리스트, 튜플의 선언 형태
    • lst = [274] tple = (274,) # tple = (274)로 선언했을 때 tple의 자료형은? tple = (274) print(type(tple)) <class 'int'>
    • 괄호가 없는 튜플
    • s = [10] h = 10 i = (10,) p = 10, # 소괄호를 생략했지만 "튜플"임 print("s = {},type of 's' = {}".format(s,type(s))) print("h = {},type of 'h' = {}".format(h,type(h))) print("i = {},type of 'i' = {}".format(i,type(i))) print("p = {},type of 'p' = {}".format(p,type(p))) s = [10],type of 's' = <class 'list'> h = 10,type of 'h' = <class 'int'> i = (10,),type of 'i' = <class 'tuple'> p = (10,),type of 'p' = <class 'tuple'>
  • 람다(lambda)
    • 매개 변수로 함수를 전달하기 위해 함수 구문을 작성하는 것이 번거롭고, 코드 공간 낭비라는 생각이 들 때 함수를 간단하고 쉽게 선언하는 방법, 1회용 함수를 만들 때 많이 사용됨
    • map() 함수와 filter() 함수
    • map() 함수 - map(함수, 리스트)
    • filter() 함수 - filter(함수, 리스트)
    • 함수의 매개변수로 전달되는 함수를 콜백 함수(callback function)라고 함
    • # 매개변수로 함수에 전달되는 함수 : 콜백 함수 def call_3_times(func): for i in range(3): func() def print_hello(): print("Hello World") call_3_times(print_hello) # 매개변수 print_hello는 콜백 함수 Hello World Hello World Hello World
    • map() 함수
      def power(item):
        return item * item
      
      lst = [1,2,3,4,5]  
      output = map(power,lst)
      
      print(output)
      print(list(output))
      
      <map object at 0x7e427c28f130>
      [1, 4, 9, 16, 25]
      
    • filter() 함수
    • def under_3(item): return 3 <= item <= 5 lst = [1,2,3,4,5] output = filter(under_3,lst) print(output) print(list(output)) <filter object at 0x7e4279e89510> [3, 4, 5]