study with Q - 파이썬

50 - 함수, 매개변수 기본

quaquaz 2024. 6. 2. 18:15

# 외워...!

 

~기본적인 함수~

def p_3_ts():
  print("hey")
  print("hey")
  print("hey")

# 그리고 함수를 호출(call)하면
p_3_ts()
>>>
hey
hey
hey

 

# 파이썬에서 매개변수 

: 함수의 괄호 안에 넣는 변수

 

def f_str(str):
  print(str)
  print(str)
  print(str)

f_str("seven")
>>>
seven
seven
seven

 

# parameter(매개변수) : 함수 정의 때 넣은 변수 (위에서 str)

# argument(인수) : 함수 호출 때 넣은 값 (위에서 seven)

 

# 문자열과 횟수도 넣을 수 있어요

# parameter
def prt(str, times):
  for i in range(times) :
    print(str)

# argument
prt("독도는 한국 땅",5)
>>>
독도는 한국 땅
독도는 한국 땅
독도는 한국 땅
독도는 한국 땅
독도는 한국 땅

 

# 매개변수와 관련된 오류

: (1) #함수를 만들 때 넣은 매개변수 != #함수를 호출할 때 넣은 매개변수 수

 

1-1) #parameter > #argument

→ TypeError: prt() missing 1 required positional argument: 'times'

 

1-2) #parameter < #argument

→ TypeError: prt() takes 2 positional arguments but 3 were given

 

: (2) 적합하지 않은 자료형을 넣었을 때

 

1-2) 횟수에 문자열을 넣으면

→ range 부분에서 오류 발생

# parameter
def prt(str, times):
  for i in range(times) :
    print(str)

# argument
prt("독도는 한국 땅","3")
>>>
TypeError: 'str' object cannot be interpreted as an integer

 

함수를 설계하는 사람과 사용하는 사람이 다른 경우가 많으므로...

# 함수 설계시에는

: (1) 함수의 설명서 aka 문서(documentation)을 잘 작성해두어야 하고

: (2) 예외처리를 해두는 것이 좋다 (방어 코드 같은 건가)

# 예외처리 코드를 심으면 이렇습니다요
def prt(stri, tms):
  if type(stri) != str:
    print("첫 번째 매개변수는 문자열로 입력하세요.")

  if type(tms) != int :
    print("두 번째 매개변수는 정수로 입력하세요.")
      
  for i in range(tms) :
    print(stri)


prt("문자열","3")
>>>
두 번째 매개변수는 정수로 입력하세요.
Traceback (most recent call last):
  File "/home/runner/function/main.py", line 41, in <module>
    prt("문자열","3")
  File "/home/runner/function/main.py", line 37, in prt
    for i in range(tms) :
TypeError: 'str' object cannot be interpreted as an integer

 

 


https://replit.com/@wh3308/function#main.py