1. replace 함수의 객체조작 여부.
문자열의 replace함수는 객체를 직접 조작할 수 없다.
함수 호출 이후에 문자열은 대체된 상태로 저장되지 않는다.
만약 대체된 상태로 문자열을 대체하고 싶다면, 해당 문자열에 리턴값을 반환시켜 초기화해야한다.
예를 들어
a = "I need something to drink."
a.replace("drink","eat")
print(a)
a = a.replace("drink","eat")
print(a)
위와 같은 코드가 있을때 결과값은
I need something to drink.
I need something to eat.
으로 나온다.
단순히 replace 함수를 호출하는 것만으로는 객체 a의 drink를 바꿀 수 없다.
a에 대체된 객체 a.replace("drink", "eat"을 다시 대입해 초기화해야한다.
애초에 python에서 함수는 call by objective-reference이기 때문에,
함수 내부에서 객체의 요소를 바꾸지않는 이상, 객체를 바꿀 수 없다.
특히 문자열의 경우는 immutable한 객체 중 하나이기때문에, 함수의 호출만으로 객체를 바꿀 수 없다.
( 내부에서 global을 사용하여 전역변수 초기화하지 않는이상)
2. 여러 변수를 하나의 객체로 초기화했을 경우
a = b = [1,2,3]
a[1] = 4
print(a)
print(b)
이때의 결과값은 무엇일까?
[1,4,3]
[1,2,3]
일까?
아니면
[1,4,3]
[1,4,3]
일까?
정답은 후자이다.
왜냐하면 a,b 둘다 [1,2,3]이라는 하나 리스트객체에 붙여진(binding된) 이름표에 불과하기 때문이다.
a,b 모두 가리키는 객체는 동일하므로
a가 가리키는 객체의 요소를 바꾸면 당연히 b가 가리키는 객체의 요소도 바뀌게 되어있다.
이해가 안된다면 Call by objective-reference파트(https://aalphaca.tistory.com/4)참조.
3. 출력방식을 가로로 바꾸기(한 줄에 출력하기) : end=''
프린트문 사용법중, end=‘’를 사용하면 세로로 출력되던 게시물들이 한 줄에 출력된다.
(한 프린트문을 처리하고 바로 다음줄로 넘어가지 않고, 결과값이 가로로 표시된다.)
출력방식을 가로로 바꾸어주는 end.
결과값들 사이에 공백을 줘서 읽기 편하게 하려면 end=‘ ‘처럼 따옴표 중간에 공백을 두면 된다.
4. 인자 갯수가 정해지지 않은 함수를 디자인할때 : *를 사용
n개의 입력값을 받는, 입력값의 갯수가 정해지지 않은 함수의 경우
def func(*args):
의 형태로 만든다. (Args 대신 변수명이 무엇이 들어가도 상관없음)
이경우 함수는 받는 인자값들을 모아서 하나의 튜플로 만들어준다.
5. 인자를 딕셔너리로 받고싶을때 : **를 이용.
인자부분에 **를 붙이면 인자를 딕셔너리로 받음.(**kwargs)
집어 넣을때는 key값 = value값의 형식으로.
키값은 문자열로 저장되고 벨류값은 명시된 타입으로 저장.
예를 들어
def kwFunc(**kwargs):
print(kwargs)
kwFunc(name=alpaca, level=1)
이런 함수가 있을 때,
kwFunc함수를 통해 {"name":"alpaca, "level" : 1} 이라는 딕셔너리가 만들어지고, 출력된다.
6. 함수의 결과값은 반드시 하나
함수의 결과값은 반드시 하나이다.
만약 여러개의 결과값을 하나의 변수에 반환하려 하면 결과값들의 묶음을 하나의 튜플 객체로 만들어 반환한다.
만약 두개의 결과값을 각각 두개의 변수에 반환하고 싶다면
변수1, 변수2 = 함수()로 하면 변수 1에 첫번째 반환값, 변수 2에 두번째 반환값이 저장된다.
7. 함수의 호출을 종료시키고 싶다면 : return 사용
함수의 수행문을 수행하다가 도중에 호출을 종료시키고 싶다면
해당 부분에 return을 사용하면 된다.
return뒤에 값을 넣지 않으면 어떤 값도 반환하지 않고 return을 만난 즉시 함수 호출이 종료된다.
----------------------------------------------------------------------------
점프투파이썬(https://wikidocs.net/book/1) 위키독스를 참조했습니다.
사용한 Python 버전은 3.8.1입니다.
'Always Awake > python 기본 정리(19.12.23~20.01.12)' 카테고리의 다른 글
20.01.09 정리 (0) | 2020.01.09 |
---|---|
20.01.06 정리 (0) | 2020.01.07 |
20.01.05 기록 (0) | 2020.01.06 |
19.12.26 기록 (0) | 2019.12.27 |
19.12.24 기록 (0) | 2019.12.24 |
댓글