<파이썬 어려웠던 개념 정리 : 조건문 ~ 함수(15~28)>
if month == 1 or month == 3 or month == 5 or month == 7 or month == 8 or month == 10:
if day == 31:
month += 1
day = 1
else:
day += 1
elif month == 4 or month == 6 or month == 9 or month == 11:
if day == 30:
month += 1
day = 1
else:
day += 1
elif month == 2:
if day == 28 or day == 29:
month += 1
day = 1
else:
day += 1
elif month == 12:
if day == 31:
month = 1
day = 1
else:
day += 1
print(month)
print(day)
월에 따른 분류(크게 4개) + 내부 if는 말일의 덧셈, else는일반 날짜의 덧셈
아쉬운 점 : 깔끔한 코드는 아니다. 코드가 케이스에 따라 조금 길어졌다.
def 함수명(parameter):
문장1
문장2
...
문장N
[return 리턴값]
<Checkpoint 과제>
관점 : default 값이 정의 되지 않은 인자보다 먼저 위치해서는 syntax오류가 난다.
SyntaxError: non-default argument follows default argument ; 기본 인수가 아닌 인수가 기본 인수를 따른다.
왜? : (문법적으로) mix상황에서는 인터프리터가 어떤 값과 어떤 인수를 일치시키는지 결정할 수 없기 때문에(값 계산 과정에서 이해하지 못하는 현상이 발생.) 순서대로 해줘야 한다.
참고 블로그 및 사이트 : 위코드 6기 블로그 ; 블로그 속 공식 문서 포함
문제점 :
keyword 인자가 필요한 자리에 단순한 위치 인자가 들어와 있다.
가변 인자 뒤에 포지셔널 인자가 있었다.
해결 : 먼저 return할 값을 조정해서 age를 키워드 인자화 시키고 순서를 그대로 조정하였더니 해결되었다.
def func_param_with_var_args(name, *args, age=20):
print("name=",end=""), print(name)
print("args=",end=""), print(args)
print("age=",end=""), print(age)
func_param_with_var_args("정우성", "01012341234", "seoul")
위치에서의 중요성 : 여기서 중요한것은 keyword arguments 는 순서가 바뀌어도 상관 없지만 positional arguments 부분은 순서를 지켜줘야 한다
def func_param_with_kwargs(name, age, address=0, **kwargs):
print("name=",end=""), print(name)
print("age=",end=""), print(age)
print("kwargs=",end=""), print(kwargs)
print("address=",end=""), print(address)
func_param_with_kwargs("정우성", "20", mobile="01012341234", address="seoul")
def mixed_params(name="아이유", *args, age, **kwargs, address):
print("name=",end=""), print(name)
print("args=",end=""), print(args)
print("age=",end=""), print(age)
print("kwargs=",end=""), print(kwargs)
print("address=",end=""), print(address)
mixed_params(20, "정우성", "01012341234", "male" ,mobile="01012341234", address="seoul")
def mixed_params(age, name, *args, **kwargs):
def mixed_params(age, name, *args, address = 0,**kwargs):
결과
>>>name=정우성
args=('01012341234', 'male')
age=20
kwargs={'mobile': '01012341234'}
address=seoul
가변 포지셔널 인자 + default 인자(address) + 가변 키워드 인자