익명의 개발노트

[Function paramters] 본문

프로그래밍/Python

[Function paramters]

캡틴.JS 2019. 6. 12. 17:44
반응형

파이썬 함수는 디폴트 값을 지정할 수 있다.

def love_you(my_name, your_name): 
   print(f"{my_name} loves {your_name}")    
   love_you(your_name = "아이유", "정우성")

인자값을 명시(파라미터 선언과 할당) 해서 디폴트 값으로 만들 수 있는데,

def love_you(my_name = "정우성", your_name): 
    print(f"{my_name} loves {your_name}") 

위와 같은 문법은 에러가 난다.

 

파이썬의 디폴트로 선언된 파라미터는 디폴트로 선언되지 않은 파라미터보다 뒤에 위치해야한다.(반드시 준수)

 

그 이유는 파라미터 값이 정해진 위치(positional arguments)대로  들어가야하는데, 

default 값이 앞으로 오게 된다면, 실제로는 문법에러로 실행이 되지는 않지만,

안되는 이유를 생각해보면,

선언된 함수의 파라미터 값마다 메모리 주소값을 가지고 있고,

함수를 실행할때 default 값을 생략하면, 

생략된 값만큼 인자수가 앞으로 당겨지므로, 컴퓨터파이썬는 사용자가 원하는 파라미터의 주소값을

가르킬 수 없다. 

ex)

def function(arguments1="아이유", arguments2) :
  print(f"{arguments1} loves {arguments2}");
  
arguments1은 positional arguments 1번자리에 와있고, 메모리값(arguments1 선언 후 아이유라는 string에 대한 주소값) 은 아이유에 대한 주소값을 가지고 있다.

위 함수 실제로 실행은 문법에러 때문에 실행되지 않는다.

하지만 실행된다고 가정했을 경우 

def function(arguments2) 으로 실행할 수 있다. 

arguments2의 원래 positional arguments는 2번인데

1번 자리에 있던 파라미터가 디폴트 값으로 생략되었기 때문에 

함수는 arguments2를 1번자리로 인식한다. 

사용자가 원하는 값과 컴퓨터가 가르키는 값이 다르므로, 

파이썬은 혼란을 겪게 되기 때문에, 실행될 수 없게 한 것이다. 

반응형

'프로그래밍 > Python' 카테고리의 다른 글

[list] 관련 함수  (0) 2019.06.13
[dictonary] 관련 함수  (0) 2019.06.13
[modules, path]  (0) 2019.06.13
[decorator] 데코레이터 개념  (0) 2019.06.13
자바스크립트와 파이썬 문법 다른점.  (0) 2019.05.30
Comments