IT world

[Python] 24.01.08 파이썬의 함수, Parameter, Argument 그리고 지역/전역 변수 본문

모두의 연구소(오름캠프)/AI 모델 활용 백엔드 개발 과정

[Python] 24.01.08 파이썬의 함수, Parameter, Argument 그리고 지역/전역 변수

엄킹 2024. 1. 10. 13:00

1. 함수

1.1 함수란

특정 작업을 수행하는 코드 블록을 하나의 이름으로 모은 것이다. 이를 통해 함수명을 호출하여 코드를 실행할 수 있다.

기본 구조 def 함수명(): ~ return 값

 

파이썬의 함수도 단순하게 생각하면 입력을 하면 출력을 하는 방식으로

  1. 복잡한 코드를 단순화시키고, 반복되는 코드를 줄일 수 있으며 
  2. 가독성이 좋아지고
  3. 효율성을 향상 시킨다.

[출처 : 위니브 파이썬 부트캠프 함수]

 

함수는 파라미터(parameter, 매개변수)를 통해 외부에서 들어온 아규먼트(argument, 인수)를 입력 받는다.

def function_name(x, y):
    z = x + y
    return z
print(f'function_name(10, 9) = {function_name(10, 9)}')

 

함수는 def 키워드로 선언하며, 함수이름은 function_name. x, y라는 매개변수를 받는다. 

모든 함수가 파라미터를 필요로 하는 것은 아니며, 그런 함수는 괄호안에 어떤 값도 받지 않는다. 

 

함수의 범위는 4칸 들여쓰기 된 곳까지이며, 반드시 한 줄은 명시해야한다. 이때 아무 코드를 넣지 않는 경우에는 pass 키워드를 넣어 에러를 방지한다.

 

pass 키워드는 어떠한 연산도 수행하지 않고, 특정 부분이 아직 구현되지 않았을 때 유용하게 사용할 수 있다.

# 입력 매개변수가 없고, 반환값도 없는 함수 예시
def simple_function():
    print('hello world')

# 함수 호출
print(simple_function())
# 파라미터가 없고, 반환값은 있는 함수 예시
def give_me_five():
    return 5

result = give_me_five()
print(result) # 출력: 5
# 입력 매개변수가 있고, 반환값이 없는 함수 예시
def greeting(name):
    print(f'Hello, {name}!')

# 함수 호출
print(greeting('Licat'))
# 입력 매개변수가 있고, 반환값이 있는 함수 예시
def add_numbers(x, y):
    sum = x + y
    return sum

# 함수 호출
result = add_numbers(5, 3)
print(result)  # 출력: 8

 

 

1.1 파라미터(Parameter)

파라미터란 함수를 정의할 때 사용되는 변수로, 함수가 호출될 때 들어오는 값이다.

# 파라미터의 기본 사용
def f(a, b, c):
    print(a, b, c)

 

1.2 아규먼트(Argument)

아규먼트란 함수를 호출할 때 전달하는 실제 값이다.

# 아규먼트 기본 구조
result = my_function(5, 3)

 

 

기본적으로 함수를 정의할 때 설정된 파라미터의 수와, 함수 호출 시 전달되는 아규먼트의 수가 일치해야 한다.

키워드 인자(keyword arguments)를 사용하여 원하는 파라미터에 값을 할당할 수 있고, 파라미터에 기본값을 설정할 수 있다. 기본값이 설정되면 함수 호출 시 해당 할 수 있다.

#기본값을 가지는 파라미터
def f(a=10, b=20, c=30):
    print(a, b, c)

f() # 출력: 10 20 30
f(100, 10) # 출력: 100 10 30
f(a=100, b=200, c=300) # 출력: 100 200 300
f(c=300, a=100, b=200) # 출력: 100 200 300

 

 

1.3 컨밴션 자료형을 아규먼트로 넣었을때

리스트와 같은 자료형을 인수로 사용했을 경우 같은 주소를 가리키고 있고, 변수에 영향을 받게 된다.

[같은 id의 객체를 바라본다]

1.4 지역변수와 전역변수

1.4.1 지역변수

  • 함수 내부에서만 정의되고 사용되는 변수
  • 다른 함수나 프로그램의 전체 흐름에 영향을 주지 않고, 함수 내부에서만 데이터를 관리
  • 복잡한 프로그램에서 여러 개발자가 작업할 때 변수 이름 충돌을 방지하고, 코드의 유지 보수를 용이하게 한다.
  • 밖의 코드에서 접근할 수 없으며, 지역에 선언된 변수 목록을 보려면 locals()를 사용

1.4.2 전역변수

  • 어떤 함수에서도 접근 가능한 변수
  • 함수 내부에서 함수 외부에 정의된 변수를 변경하려면, 그 변수를 global로 선언
  • global 키워드 없이 전역변수는 수정할 수 없음.

1.5 빌트인 함수(built-in function)

빌트인 함수(built-in function) 혹은 내장 함수란 

파이썬 언어에 기본적으로 포함된 함수들. 추가적인 코드 작성없이 효율적으로 코드를 작성할 수 있게 한다.

 

1.5.1 종류

  • all() : 반복 가능한 객체(리스트, 튜플, 문자열 등)를 인수로 받아, 그 안의 모든 요소가 True로 평가되면 True 반환
  • any() : 반복 가능한 객체를 인수로 받아, 그 안의 어떤 요소라도 True로 평가되면 True로 반환

[all(), any() 예시]

  • chr() : 정수를 인수로 받아, 그에 해당하는 유니코드 문자를 반환
  • ord() : 문자를 인수로 받아, 그 문자의 유니코드(또는 ASCII 코드) 값을 반환
  • map() : 리스트(또는 튜플)의 모든 요소에 특정 함수를 적용한 결과를 map 객체 형태로 반환하는 함수

[map() 예시]

  • filter() : 순회할 수 있는 객체의 요소 중 특정 조건을 만족하는 요소만을 선택하여 반환
list(filter(lambda x : x > 50, range(100)))
  • zip() : 여러개의 순회할 수 있는 객체의 요소를 묶어서 반환. 다만 메모리 효율을 위해 형변환이나 직접 순회를 하기전까지 메모리 주소만 반환.

[zip() 예시]

  • len(), max(), min(), sum() 등
  • enumerate() : 반복할 수 있는 객체의 인덱스와 값을 함께 반환, 두번째 인자를 통해 시작 인덱스 설정

[ enumerate() 예시]

 

Comments