[Python] 함수 (Parameter, argument, 가변인자, 변수)

wooaeng·2025년 10월 27일

Python

목록 보기
1/8
post-thumbnail

함수 구현

1. 함수의 선언부와 구현부를 구성

  • 선언부(Header) : 함수의 이름과 입력값을 받을 변수(Parameter, 매개변수)를 지정
    • 함수 이름 작성 관례 : 동사형, Snake 표기법 사용
    • Parameter는 argument를 받기 위한 변수로, 생략할 수도 있음
  • 구현부(Body) : 함수가 호출됐을 때 실행할 실행문
    # 선언부
    def 함수이름([변수, 변수, ...]):
    # 구현부
        실행구문1
        실행구문2
        실행구문3
    ...
    [return [결과값]]

2. 선언부 마지막에는 : 을 넣어 구현부와 구분

3. 구현부 작성

  • 함수 실행구문은 코드블록(공백 4칸)으로 작성
  • 함수 처리 결과값이 있을 경우 return 구문을 넣을 수 있음

Parameter, argument

  • Parameter (매개변수) : 함수가 호출하는 곳으로부터 입력받는 값을 저장하는 변수
  • argument : 함수 호출 시 Parameter에 전달하는 값
    # 함수 정의
    def greet(name):
    	print(f"{name}님 안녕하세요.")
    	
    # 함수 호출
    greet("김철수")
    greet(12345)
    
    # 실행 결과
    김철수님 안녕하세요.
    12345님 안녕하세요.
  • 함수 ‘greet’는
    1) 사용자로부터 argument를 입력받아
    2) ‘name’이라는 Parameter에 저장하고
    3) 그 값을 출력문 안에 넣어서 print함
  • Parameter는 지정하지 않을 수도 있고, 여러 개를 지정할 수도 있음
    • 단, Parameter를 지정하지 않았는데 argument 입력하거나, Parameter를 지정했는데 argument 입력하지 않으면 Error 발생
      ```python
      # 함수 정의
      def information(name, user_id):
      	print(f"{name}님의 아이디는 {user_id}입니다.")
      	
      # 함수 호출
      information("김철수", 12345)
      
      # 실행 결과
      김철수님의 아이디는 12345입니다.
      ```
  • Parameter를 지정하지만 함수 호출 시 argument를 입력받지 않을 경우를 대비해 다음과 같이 기본값을 지정할 수 있음
    • 기본값은 None 외에 문자열, 숫자 등도 가능
    • Parameter에 기본값을 지정하지 않고 argument 입력을 생략하면 Error 발생
       # 함수 정의
       def name_info(name=None):
       	print(f"이름: {name}")

       # 함수 호출
       name_info("김철수")   # argument를 입력받은 경우
       name_info()         # argument를 입력받지 않은 경우

       # 실행 결과
       이름: 김철수
       이름: None
  • 여러 개의 Parametere를 지정하는데 Parameter들의 기본값 여부가 상이할 경우
    • 기본값이 없는 Parameter를 먼저 선언하고, 그 뒤에 기본값이 있는 Parameter를 선언
      ```python
      # 함수 정의
      def user_info(name, id, age="", tall=""):
      	print(f"{name}(id: {id}, 연령: {age}, 키: {tall}cm)")
          
      # 함수 호출
      user_info("김철수", 374198, "", 167)
          
      # 실행 결과
      김철수(id: 374198, 연령: , 키: 167cm)
      ```

Positional argument, Keyword argument

  • Positional argument : 저장되는 Parameter 위치가 입력한 위치에 맞춰 지정되는 argument
    • 함수 호출 시 입력한 순서대로 Parameter에 저장되기 때문에, 함수 호출 시 Parameter와 그에 해당하는 argument의 위치를 잘 맞춰야 함
    # 함수 정의
    def user_info2(name, id, age, tall):
        print(f"{name}(id: {id}, 연령: {age}, 키: {tall}cm)")
        
    # 함수 호출
    user_info(45672, “김영희”, 25, 165)
    
    # 실행 결과
    45672(id: 김영희, 연령: 25,: 165cm)
  • Keyword argument : 저장되는 Parameter 위치가 호출자로부터 직접 지정되는 argument
    • 위치를 직접 지정하기 때문에 함수 선언 시 지정한 Parameter 순서대로 호출하지 않아도 상관 없음
    # 함수 정의
    def user_info3(name, id, age, tall):
        print(f"{name}(id: {id}, 연령: {age}, 키: {tall}cm)")
        
    # 함수 호출
    user_info(id=32187, name=“한석봉”, tall=179, age=22)
    
    # 실행 결과
    한석봉(id: 32187, 연령: 22,: 179cm)

위치 가변인자, 키워드 가변인자

위치 가변인자 *args

  • 여러 개의 위치 기반 인자(Positional argument)를 하나의 튜플로 받아 처리

  • 함수 정의 시 Parameter 입력 자리에 *args 입력

    # 함수 정의
    def argument_test(*args):
    	print(args)
    	
    # 함수 호출
    argument_test()
    argument_test(10)
    argument_test(10, 20, 30)
    
    # 출력 결과
    ()
    (10,)
    (10, 20, 30)

키워드 가변인자 **kwargs

  • 여러 개의 키워드 인자(Keyword argument)를 하나의 딕셔너리로 받아 처리
  • 함수 정의 시 Parameter 입력 자리에 **kwargs 입력
    # 함수 정의
    def argument_test2(**kwargs):
    	print(kwargs)
    	
    # 함수 호출
    argument_test2()
    argument_test2(name="김철수", age=35, address="부산")
    
    # 출력 결과
    {}
    {'name': '김철수', 'age': 35, 'address': '부산'}

가변인자 입력 규칙

  • 하나의 함수에 위치 가변인자, 키워드 가변인자 하나씩만 선언 가능
  • 위치 가변인자, 키워드 가변인자 동시 사용 가능하며 이 때는 위치 인자 우선 선언
  • 가변인자와 일반 Parameter 동시 선언 가능
  • 기본값이 없는 Parameter는 위치 가변인자 앞, 뒤에 모두 선언될 수 있음. 뒤에 선언되는 경우 호출할 때 Keyword argument 형태로 호출
  • 키워드 가변인자 뒤에는 일반 Parameter와 위치 가변인자를 포함해 어떤 것도 올 수 없음
    # 함수 정의
    def argument_test3(*args, name, **kwargs):
        print(args)
        print(name)
        print(kwargs)

    # 함수 호출
    argument_test3("kimcs123", 4, 5, name="김철수", age=35, region="서울")

    # 출력 결과
    ('kimcs123', 4, 5)
    김철수
    {'age': 35, 'region': '서울'}

지역 변수, 전역 변수

지역 변수 (local variable)

  • 함수 안에서 선언된 변수, 선언된 함수 안에서만 사용 가능

전역 변수 (global variable)

  • 함수 밖에서 선언된 변수, 모든 함수들이 공통적으로 사용 가능
  • 하나의 함수에서 값을 변경하면 그 변한 값이 변수가 사용된 모든 함수에 영향을 줌 ⇒ 함부로 변경하지 않기
  • 함수 내에서 전역변수에 값 대입 시 : global 키워드 이용해 사용 선언
  • global로 선언하지 않고 함수 안에서 전역변수와 이름이 같은 변수에 값을 대입할 시 해당 변수와 동일한 지역변수 생성
  • 함수에서 변수를 조회할 경우 지역변수 → 전역변수 순으로 찾음

0개의 댓글