매개변수(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
'Study (Data Science) > Python' 카테고리의 다른 글
오답노트) 간단명료 코드 만들기 (0) | 2022.11.28 |
---|---|
조별학습) 구구단 만들기 (0) | 2022.11.28 |
프로그래머스) 각도기 (0) | 2022.11.27 |
프로그래머스) 나이 출력 (0) | 2022.11.27 |
프로그래머스) 몫 구하기 (클래스문법 업데이트하기) (0) | 2022.11.27 |
댓글