인수의 기본값
'''
인수의 기본값
-파이썬에서는 인수의 기본값을 설정하여 자주 바뀌지 않는 데이터는 기본값을 통해 처리할 수 있게 한다.
'''
def calc_stepsum(begin, end, step=1): # 기본값을 설정할수 있다.
sum=0
for n in range(begin, end+1, step):
sum += n
return sum
print(calc_stepsum(1, 10, 2)) # 25
print(calc_stepsum(1, 10)) #step에 값을 주지 않아도 기본값으로 들어간다!!!
'''
인수의 기본값을 지정할 때는 항상 맨 뒷부분에 기본값이 지정된 인수들을 모아서 나열해야한다. !!
ex) def clac_sum(begin, end=5, step) (x)
def clac_sum(begin, end=5, step=1) (o)
'''
키워드인수
키워드 가변 인수
'''
키워드 인수 (keyword arguments)
-인수의 개수가 많아지면 인수의 순서를 잘 알기 어렵고 함수를 사용할때 전달할 값의
위치를 헷갈릴 가능성이 높아진다.
ex) def reg_member(id, pw, name, addr, phone):
reg_member('abc1234', 'def111', '홍길동')
-파이썬에서는 순서와 무관하게 인수를 전달하는 방식을 제공하며 인수의 이름을 직접 지정하여
대입하는 방식을 허용한다.
'''
def calc_sum(begin, end, step):
sum=0
for n in range(begin, end+1, step):
sum += n
return sum
print(calc_sum(3, 7, 1)) #위치 인수값 사용
#키워드 인수값 사용
print(calc_sum(begin =3, end = 7, step =1)) # 25
print(calc_sum(end = 7, begin =3, step =1)) # 25
#위치인수와 키워드인수의 혼합사용
print(calc_sum(3, 7, step = 1)) #(o)
# print(calc_sum(step = 1, 3, 7)) (x) #positional argument follows keyword argument
# print(sep='**', end='==>', 3, 6, 8) (x)
print( 3, 6, 8, sep='**', end='==>' "\n") # 3**6**8==>
'''
키워드 가변 인수
-키워드 인수는 여러개(n개) 전달해서 처리하고 싶을 때는 인수 이름 앞에 **를 붙여 사용한다.
-함수 호출부에서 여러 개의 키워드 인수를 전달하면 인수의 이름과 쌍을 사전으로 만들어 함수에게 전달
-전달 받은 사전 데이터를 함수 내부에서 사용할 때는 사전의 키를 통해 값을 참조하는 방식으로 인수값을 꺼내어 사용한다.
'''
def food_name(**foods):
for k in foods:
print(foods[k])
food_name(chicken="통닭", gimbab="김밥")
#통닭
#김밥
docstring
'''
docstring
-함수의 재활용성을 높이려면 함수의 사용법(인수의 의미, 사용시 주의사항 등)을
문서로 남기는 것이 중요하다.
-docstring은 함수를 사용하는 사람들을 위한 설명서 역할을 하며 주석과 마찬가지로 코드 실행에는 영향을 주지 않는다.
-작성된 decstring을 열람하는 함수는 내장함수 help()이다.
'''
def calc_sum(begin, end):
'''
calc_sum 설명서
이 함수는 특정 범위의 누적 합계를 계산한다.
'''
sum = 0
for n in range(begin, end+1):
sum += n
return sum
help(print)# print함수에 대한 설명은 잘나옴
help(calc_sum) # 하지만 이러한 내장함수는 안나오는데 설명을 넣는 방법은 '''~ ''' 를 사용하면된다.
전역변수와 전역변수 , global함수
'''
지역 변수 (local variable)
-지역변수란 함수 내부에 선언된 변수를 의미한다.
-지역변수는 함수 내부에서만 작동하며 함수가 종료되는 순간 메모리에서 자동 소멸한다.
-지역변수의 사용을 함수 내부로 제한하는 이유는 변수의 이름 충돌을 피하고 메모리를 절약하기 위함이다.
함수내부에서도 지역변수가 아닌 전역변수를 쓰고싶다면 global함수를 사용하면 된다.
'''
def info():
word = '안녕' # 지역변수
print(word)
info()
# 지역변수의 사용을 함수 내부로 제한하는 이유는 변수의 이름 충돌을 피하고 메모리를 절약하기 위함이다.
'''
전역 변수 (global variable)
-전역변수는 프로그램 전체에서 사용되는 공용변수이다.
-파이썬에서는 들여쓰기 없이 선언된 변수가 전역변수로 취급되며 함수 내부, 제어문 내부 등
프로그램 어디에서나 사용이 가능하다.
함수 내부안에서의 우선순위 : 지역변수 > 전역변수
'''
price = 1000 # 전역변수
def sale():
# 함수 내부에서는 전역변수보다 지역변수가 우선 사용된다.
global price # 함수 내부에서 전역변수 price를 사용해라
price = 500
print('지역변수 price의 주소값: ', id(price)) #지역변수 price의 주소값: 1549024159728
sale()
print('전역변수 price의 주소값: ', id(price)) # 지역변수 price의 주소값: 1549024159728
print(price)
def calc_price(price):
print("")
레퍼런스 변수
'''
리스트 사본 만들기
- 수치형변수는 저장 공간이 서로 독립적이라 대입하면 일시적으로 값이 같아질뿐 둘중 하나를
변경한다고 해도 다른 변수에는 영향을 주지 않는다.
- 그러나 리스트와 같은 객체 데이터는 하나의 리스트르 ㄹ다른 리스트에 대입하면 2개의 리스트가
동시에 영향을 받게 되는데 그 이유는 2개의 리스트가 독립된 형태가 아닌 같은 메모리 주소값을
공유하고 있기 때문이다.
- 리스트의 독립적인 사본을 얻으려면 리스트의 메서드 copy()를 사용해야한다.
'''
print('---------------------------')
list1= [4, 5, 6]
list2 = list1.copy()
print("list1:", list1)
print("list2:", list2)
list1[1] = 100
print("list1:", list1)
print("list2:", list2)
print("list2:", id(list2)) #list2 주소
print("list2:", hex(id(list2))) # 주소를 16진수로
------------------------------결과--------------------------------
---------------------------
list1: [4, 5, 6]
list2: [4, 5, 6]
list1: [4, 100, 6]
list2: [4, 5, 6]
list2: 2099727917704
list2: 0x1e8e1896288
'IT' 카테고리의 다른 글
15-1. 파이썬 - 로또 , up down 게임 (0) | 2022.08.11 |
---|---|
15. 파이썬 - 파이썬 모듈(from - import), __name__ == "__main__", 정렬, 표준모들들. (0) | 2022.08.11 |
12-1. 파이썬 - 함수 위치가변인수 (0) | 2022.08.02 |
12. 파이썬 - 함수 (0) | 2022.08.02 |
11-1. 파이썬 자료형 집합 (0) | 2022.08.01 |