반응형
Java에서의 함수 선언
// 접근레벨에 따라 public, protected, private 등을 사용 가능합니다.
// 1. return 하지 않는 함수
public void voidFunction() {
System.out.println("Hello World");
}
// 2. 숫자형 데이터를 return 하는 함수
public int intFunction() {
return 10;
}
자바에서는 함수에서 return하지 않는 경우 함수를 참조하는 코드에서 null 조차 결과 값으로 담을 수 없습니다.
Python에서의 함수 선언
기본적으로 사용하는 함수 선언
# 기본형
def f(a, b):
return a + b
# argument에 default value 지정
def f(a = 1, b = 2):
return a + b # argument를 추가하지 않더라도 default value가 확인되어 Error가 발생하지 않습니다.
Error가 발생하는 유형
# 첫번째 argument에만 default value 지정
def f(a = 1, b):
return a + b
# Type Error를 발생시킨다.
# 첫번째 argument에만 default로 지정할 시에 뒤에오는 argument에 대해 정확한 값이 불분명해진다
# ex) dictionary 구조, 혹은 tuple과 list의 형태의 데이터
# 이슈 해결 코드
def f(b, a = 1):
return a + b
#######################################################
# list/tuple 형식의 argument 이후에 default가 지정되지 않은 argument가 확인될때
def f(*a:int, sep="/", test):
b = map(str, a)
print(sep.join(b) + test)
f(1,2,3,4,5, sep=',', '-end') # test를 지정해주지 않아 정확한 argument 정보를 참조 하지 못합니다.
f(1,2,3,4,5, sep=',', test='-end') # test 지정 후 동작 오류 해결, 결과 - 1,2,3,4,5-end
#######################################################
# dictionary 형태의 데이터를 받을 경우
def f(name, **kwargs, email="test@test.com"):
print(f"name={name}, email={email}, kwargs={kwargs}")
f(name="test", email="t@t.com", mobile="01012341234")
# 이슈 해결 코드
def f(name, email="test@test.com", **kwargs):
print(f"name={name}, email={email}, kwargs={kwargs}")
파이썬에서 함수에 argument를 대입할때에 여러가지 자료구조를 사용할수 있는 폭 넓은 방식 때문입니다.
java와는 다르지만 함수의 활용 범위를 고려했을때는 환영받을 방식이라고 보여집니다.
하지만 폭 넓게 사용하더라도 함수에 참조되는 argument들에 대해서 명확한 표기가 없을시 Python에서는 오류를 뱉어 내는걸 확인 할 수 잇습니다.
반응형
'etc.' 카테고리의 다른 글
[Java/Python] 문법 비교 정리 #5 자료구조 - Queue, Stack (0) | 2022.11.07 |
---|---|
[Java/Python] 문법 비교 정리 #4 자료구조 - List (2) | 2022.11.04 |
[Java/Python] 문법 비교 정리 #2 배열 (0) | 2022.10.28 |
[Java/Python] 문법 비교 정리 #1 Int -> String, String -> Int (0) | 2022.10.27 |
[Chrome] Tab 마우스 Hover 이미지 없애기 (0) | 2022.10.19 |