본문 바로가기
Study (Data Science)/Python

참고) 함수에 대하여.

by 콜라찡 2022. 11. 28.

매개변수(parameter), 인자(argument), 요소(element) 의 차이점

def shopping_list(date):
    print(date + '의 구매목록')
    print(['벤츠 2대','람보르기니 1대','강남빌딩 2개'])
    
shopping_list('1월 23일')

만약 이렇게 shopping list라는 함수를 선언한다고 가정했을 때,

  • 매개변수 (parameter) :입력값의 자리에 들어오는 함수 내부의 'date'
  • 인자(argument) : 외부에서 이 함수를 불러주기 위해 넣어주는 '1월 23일'
  • 요소(element) : 리스트 안의 여러값 중 하나의 값, '벤츠 2대'

하하.. 이렇게 작성하는 날이 올꺼야! 

 


스코프(scope)

특정 위치에서 어떤 변수에 접근할 수 있는지, 또 한 곳에서 정의된 변수가 어디까지 유효한지 정의된 범위.

name = '하루'
#- name이라는 변수는 문자열 '하루'를 가리킵니다.

def say_name():
    print(name)
#- say_name() 함수의 밖에서 정의된 변수(name), 즉 '하루'를 읽어옵니다.

say_name()

name = '시우'
#- 이제, name이라는 변수는 문자열 '시우'를 가리킵니다.

say_name()
--------------------------------------------------------
name = '하루'
#- name은 문자열 '하루'를 가리키는 변수입니다.

def change_name():
    name = '시우'
    #- 여기서 name은 해당 함수 내에서만 문자열 '시우'를 가리킵니다.

change_name()
#- 함수를 호출해도 아무 일도 일어나지 않습니다.

print(name)
#- 첫 줄, 즉 함수 바깥에서 정의된 문자열 '하루'가 출력됩니다.
  • 전역 스코프(global scope) : 함수 내부를 포함해 코드 어디서든 참조할 수 있는 name = 하루
  • 지역 스코프(local scope) : 함수 내부에 정의되어 밖에서는 볼 수 없어, 변경을 위해서는 상위수준까지 먼저 call해야하는 name = '시우' & change_name()

return 과 print

 

이미 실행된 함수의 결과를 가지고 무언가를 하고 싶다면! 꼭 return하여 output으로 반환하라고 표시해주기.

그렇지 않으면, 컴터는 내가 준 input 값으로 함수만 돌리고, 그 값을 기억하지 않는다.

output을 기억할 필요가 있다고 return으로 알려줘야한다.

 

def add_and_return(number1, number2):
    print(number1 + number2)
	print(add(1, 2) + 3)
# 결과값 : 3
-----------------------------------------    
def add_and_return(number1, number2):
    print(number1 + number2)
    return number1 + number2
print(add_and_return(1, 2) + 3)
# 결과값 : 6/ 이제야 3을 더했음.

만약 함수를 2개를 선언한 뒤, input으로 함수를 호출하고 그 함수의 인자로 다른함수를 호출하면 어떻게 될까.

def print_two(word1, word2):
    print(word1)
    print(word2)

def print_and_return(word1, word2, word3):
    print_two(word3, word2)
    return word1

print_two('A', print_and_return('B', 'C', 'D'))
---
(출력값)
D
C
A
B

컴터는 인자로 들어왔던 print_and_return을 먼저 call한다는 사실!

728x90

댓글