#1-31,32,33
파이썬 return과 args 및 kwargs개념을 배웠다.
C언어에서 return은 마지막 종결어 (마침표)같은
역할을 하는데..
파이썬은 비슷하면서도 좀 다른 느낌인 것 같다.
파이썬에서 함수 (def)를 사용할때
return 작성은 거의 필수적이다.
왜냐면 result라는 변수에 값을 넣어주려면
return이 필요하기 때문이다.
(없으면, 함수 결과를 보내주는 코드가 없어서
None값이 뜨게 된다.)
17행에서 print, return에 각각 대응하는 3 값이 출력됨.
return은 결과데이터를 저장해서 쭉 사용할 수 있게 만들어준다.
위의 3은 print때문에 출력되는 거고,
아래 3이 return 덕분에 출력되는 것.
그래서 return num1+num2를 작성하지 않으면
None이 뜨게 된다.
함수 중에서도 원래 return을 포함해주는 녀석들이 있다.
대문자로 바꿔주는 녀석인 upper는
return을 따로 쓰지 않아도 바로 출력된다.
반면 sort는 return이 포함 안되어 있다.
return으로 결과데이터를 변수에 저장할 수 있다.
return(num1+num2)는 tuple값으로 받아들인다.
괄호를 안해줘야 int 형태로 return이 됨.
리턴이 있는지 없는지 유무는 docstring을 확인해보면 나온다.
return이 없으면 함수에서 실행된 결과 데이터를 저장할 수가 없다.
함수에서 기능이 사용됐는데
그 결과데이터를
함수가 실행되고 나서 나온 결과데이터를
밑에 코드에서 쓸 수 없게 된다.
그래서 이걸 쓰게 하려면 return이 보조제로 필요한 것.
코드를 위처럼 쓰면 깔끔하게 쓸 수 있다.
왼쪽보다 오른쪽이 더 좋은 코드!
그리고 파이썬에서도 return은 저장과 동시에 종료기능을 수행한다.
return을 쓰면, 그걸로 끝이다.
그 밑에 있는 코드실행이 되지 않는다.
그리고 아규먼트와 키워드 아규먼트 개념!
갯수와 상관없이 여러 개를 계산하고 싶을 때 쓴다.
예를 들어
def plus(*args)를 쓴다고 하면
sum(1,2,3,4,5)를 다 써줄 필요없이
args 변수 하나로 퉁쳐줄 수 있다.
num1=6 처럼 지정값을 정해서 계산하고 싶다면
kwargs를 사용해야한다.
그냥 args를 사용하면 위에 빨간 박스처럼
오류가 뜨게 된다.
*args, **kwargs는 구분해서 쓰기!
위 13번 행 수식은 kwargs에 대한 sum값이 없어서
그대로 쓰게 되면 오류가 난다.
이게 kwargs를 제대로 쓴 것!
def plus(*args,**kwargs):
return sum(args)+sum(list(kwargs.values()))
위 수식대로 args값을 받은 인자는 15, kwargs값을
받은 인자는 13을 출력해서
둘을 더한 값인 28이 나왔다.
--
사실 args나 kwargs 대신 아무 이름을 적어넣어도 상관없다.
*ㅇㅇ, **ㅇㅇ 위 형식만 지켜주면 된다.
그 이유는 *변수, **변수 형태로 작동이 되기 때문이다.
*변수: 여러개를 쓸 때 사용. 결과값이 '튜플'로 처리됨.
**변수: num1=3( 키워드=값 ) 을 계산할 때 씀.
각각의 키와 값을 가져오는 '딕셔너리'로 처리됨.
→ 그래서 위에 list 형변환을 시켜준 것.
→ kwargs. values 는 딕셔너리 형태기 때문에values(값)만 가져오기 위해서 쓴 것.
--
리스트의 데이터를 하나씩 호출해서
아규먼트(*data) 로 설정되게끔 한다.
만약 아규먼트(*data)를 설정 안한 상태면
[1,2,3] 하나가 통째로 넘어가서
num2와 num3의 공간이 비게 된다.
그래서 오류나는 것.
list, int, int가 들어가게 되어서 에러가 나는 것.
그런데 sum을 쓰게 되면 int형태로 변환되어서
1+2+3인 6이 들어가고,
6+10+20이 된다.
(오류 안 남)
이건 num2의 100값이 대입된다.
1+100+200해서 301 나오는 것.
이상 파이썬 return 개념과 아규먼트 개념을 알아보았다!
추가적인 정보는 다음 링크에서 얻을 수 있다.
https://brunch.co.kr/@princox/180#comment
blog.naver.com/sw4r/221504133335
파이썬 map, filter, reduce 개념정리 (0) | 2020.07.17 |
---|---|
파이썬 inner,callback,lambda function (0) | 2020.07.17 |
파이썬 Docstring, scope 개념정리 (0) | 2020.07.13 |
파이썬 함수 개념과 파라미터, 아규먼트 정리 (0) | 2020.07.11 |
파이썬 딕셔너리(dict) 메뉴얼: list, key, zip 활용 (0) | 2020.07.11 |
댓글 영역