자신에게 친절할 것 :)

Web Developing/Python

[python] *를 매개변수 앞에 붙일 때와 아닐 때

Tashapark 2024. 7. 21. 15:54
728x90
반응형

# 강의 복습 중 헷갈리는 것 

 


< *(asterisk), 기본 값(default)와  매개 변수 >

 

- 함수에서 매개 변수를 넣고 뺄 때,

1) *를 붙이는 것과 

2) 그냥 매개변수

3) 기본 값 넣는 것 

의 차이가 계속 헷갈려서  검색한 내용을 정리 

 


- print()

- help로 프린트 변수를 살펴보면 인자가 5개가 나옴

print(*args, sep=' ', end='\n', file=None, flush=False)
#매개변수는 있고 리턴 타입은 없음.

 

- * 없으면, 매개변수 1개가 무조건 있어야 함.

- * 있으면, 매개 변수가 없어도 출력가능하고 여러 개를 줘도 출력함.

 

- 매개변수를 사용할 땐,

1. 매개변수 개수가 맞아야 함.
2. 매개변수에 기본 값을 줄 수 있어야 함.
3. 기본 값 안 주려면 *줘야 함.

 

즉, 기본 값을 안 주는 test() 함수를 출력한다고 가정을 하면

#-------------- * 붙이면 --> 오류 x
def test(*res):
    print(f'출력할 값: {res}')

if __name__ == '__main__':
    test()  #() 빈 튜플로 나와

#------------- 그냥 매개변수 넣으면 --> 오류
def test(res):
    print(f'출력할 값: {res}')

if __name__ == '__main__':
    test()  # 이 경우 오류 발생

#----------------기본 값을 미리 주면 --> 오류 x
def test(res=10):
    print(f'출력할 값: {res}')

if __name__ == '__main__':
    test()        # 10 인자를 주지 않으면 기본값 사용

 

- 에러를 안 생기게 하려면, 기본 값을 주거나, 처음부터 *매개인자로 넣는 것이 나음. 

 


- chr() , ord()

- help로 chr(), ord()변수를 살펴보면 인자 값과 /만 있음 

chr(i, /)
ord(c, /)

 

- 이러면 위와 다르게 매개인자 값만 넣음 

- 호출(= )하지말고 걍 값만 넣으라는 의미임. 
-> chr, ord -> 변수가 의미 없음. return 해야 함

 

- /있으면 호출 안되고 순서대로 값을 전달
- 없으면, 크로스도 되고, 인자의 호출도 됨

def test(a=1,b=2,/):
    print(f'a={a} \t b={b}') #\t 넣으면 떨어짐

if __name__ == '__main__':
    test() #기본 값 # a=1, b=2
    test(100) # a=100, b=2
    #test(a=400, b=2) # a=400 	 b=2 # = 을 제 위치에 넣어도 안됨. 
    #test(b=2, a=400) # a=400 	 b=2 # 크로스 안 되서 에러가 뜸
    test(,400) # 순서대로 a=400, b=2
    test(10, 20) # a=10, b=20
728x90
반응형