Python_Argument & Parameter

Jina·2020년 3월 24일
0

Today I Learned

목록 보기
3/21

Argument & Parameter

Positional Argument

아래의 예시와 같이 parameter로 입력한 name과 age가 순차적으로 들어감

def about_me(name,age):
	print(f"Hello, I am {name}. I am {age} years old")
    
about_me("Jina",13)  #  Hello, I am Jina. I am 13 years old 
about_me(13,"Jina")  #  Hello, I am 13. I am Jina years old 

Keyword Argument

parameter가 순차적으로 들어가는 것이 아니라 이름으로 맞춰서 들어가게 됨
이를 이용하면 parameter의 순서가 바뀌어도 결과가 변하지 않음

예시)

def about_me(name,age):
	print(f"Hello, I am {name}. I am {age} years old") 
	
about_me(age=13,name="Jina")  #  Hello, I am Jina. I am 13 years old 	

Mixing positional arguments and keyword arguments

position arguments와 keyword arguments를 혼합하여 사용할 수 있음

※ 주의 : keyword arguments는 순서가 바뀌어도 상관 없으나, position arguments 부분은 순서를 지켜야 함

예시) position arguments 부분의 순서를 지킨 경우

def about_me(name,age):
	print(f"Hello, I am {name}. I am {age} years old") 
	
about_me("Jina",age=13) #  Hello, I am Jina. I am 13

예시) position arguments 부분의 순서를 지키지 않은 경우

def about_me(name,age):
	print(f"Hello, I am {name}. I am {age} years old") 
	
about_me(age=13,"Jina")	 
#  SyntaxError: positional argument follows keyword argument

about_me(13,name="Jina")
# TypeError: about_me() got multiple values for argument 'name'

Parameter Default Value

함수의 parameter에 default값 정의 가능
Default값이 정의 된 경우 input받은 값이 없으면 --> default 값으로 출력

Default 적용하지 않은 경우

예시 1)

def about_me(name,lang):
	print(f"Hello, I am {name}. I am studying {lang}.") 
	
about_me("Jina")

# TypeError: about_me() missing 1 required positional argument: 'lang'

위의 예시 1을 보면 input parameter를 필요한 갯수 만큼 입력하지 않아서 error가 생김


Default 적용한 경우

  • 예시 2 ) Default 적용된 경우_1

def function(non-default, default) --> 작동

def about_me(name,lang="python"):
	print(f"Hello, I am {name}. I am studying {lang}.") 
	
about_me("Jina")	# Hello, I am Jina. I am studying python.
  • 예시 3 ) Default 적용된 경우_2

def function(default, non- default) --> error

def about_me(name="Jina",lang):
	print(f"Hello, I am {name}. I am studying {lang}.") 
	
about_me("python")
# SyntaxError: non-default argument follows default argument

위의 예시를 보면 둘 다 default가 적용되어 있는데, 예시 2는 제대로 작동하고 예시 3은 error 발생


default value의 위치

위의 예시2와 3을 보면 (non-default, default) 가능 / (default, non- default) 불가능

why can't non-default argument follows default argument?

파이썬에서 parameter를 혼합하여 사용하는 경우 (positional argument / default argument) 인터프리터가 어떤 값이 어떤 인수와 일치하는지 결정하는 것은 불가능

예시 3을 참고하면

예시 2의 경우

따라서 (non-default, default) 만 가능

0개의 댓글