String and advanced function concept(복습용)
이 포스트는 이 사이트의 동영상 강의를 바탕으로 작성되었습니다. 더 자세한 내용은 해당 강의를 참고하시기 바랍니다.
String
- 자료형으로 문자형 data를 메모리에 저장
- 영문자 한 글자는 byte의 메모리 공간을 사용
비트 : 0 또는 1
바이트 = 비트 8개 = 256
킬로바이트 = 1024바이트
- 문자열의 각 문자는 을 가짐
- 이 주소를 사용해 할당된 값을 가져오는 것이
- List와 같은 형태로 데이터를 처리함
len(a) # 문자열의 길이를 반환
a.upper() # 문자열을 대문자로 변환
a.lower() # 문자열을 소문자로 변환
a.capitalize() # 첫 글자를 대문자로 변환
a.title() # 각 단어의 첫 글자를 대문자로 변환
a.count('abc') # 'abc' 문자열의 출현 횟수를 반환
a.('abc') # 'abc' 문자열이 처음 나타나는 위치를 반환 (없으면 -1)
a.('abc') # 'abc' 문자열이 마지막으로 나타나는 위치를 반환 (없으면 -1)
a.startswith('abc') # 문자열이 'abc'로 시작하면 True, 아니면 False
a.endswith('abc') # 문자열이 'abc'로 끝나면 True, 아니면 False
a.split() # 공백을 기준으로 문자열을 나누어 리스트로 반환
a.isdigit() # 문자열이 숫자로만 이루어져 있으면 True, 아니면 False
Function
- call by object reference
- 함수에서 를 전달하는 방식
- 값에 의한 호출(Call by value)
- 참조에 의한 호출(Call by reference)
- 객체 참조에 의한 호출(Call by object reference)
- Call by Object Reference
- 파이썬의 객체의 주소가 함수로 전달되는 방식
- 전달된 객체를 참조하여 변경 시 호출자에게 영향을 주나 호출자에게 영향을 주지 않음
- 파이썬의 객체의 주소가 함수로 전달되는 방식
def spam(eggs):
eggs.append(1) # 기존 객체의 주소값에 [1] 추가
= [2, 3] # 새로운 객체 생성
ham = [0]
spam(ham)
print(ham) # [0,1]
- swap
swap_value(x, y)
def swap_value(x, y):
temp = x
x = y
y = temp
- 이 함수는
x
와y
라는 변수 두 개를 받아서 그 값들을 교환합니다. - 중요한 점은 이 함수가 받은 값들만 교환할 뿐, 리스트
a
에는 아무런 영향을 주지 않습니다. - 예를 들어,
swap_value(a[0], a[1])
을 호출하면x
는 1,y
는 2가 되어 교환됩니다. 그러나 이 교환은 함수 내부에서만 일어나고 리스트a
는 그대로[1, 2, 3, 4, 5]
입니다.
swap_offset(offset_x, offset_y)
def swap_offset(offset_x, offset_y):
temp = a[offset_x]
a[offset_x] = a[offset_y]
a[offset_y] = temp
- 이 함수는 리스트
a
의 을 교환합니다. offset_x
와offset_y
는 리스트의 를 의미합니다.- 예를 들어,
swap_offset(0, 1)
을 호출하면a[0]
과a[1]
의 값이 교환되어 리스트a
는[2, 1, 3, 4, 5]
가 됩니다.
swap_reference(list, offset_x, offset_y)
def swap_reference(list, offset_x, offset_y):
temp = list[offset_x]
list[offset_x] = list[offset_y]
list[offset_y] = temp
- 이 함수는 전달된 리스트의 특정 위치에 있는 값을 교환합니다.
- 리스트를 함수의 인자로 받아서 그 리스트의 원소들을 교환합니다.
- 예를 들어,
swap_reference(a, 0, 1)
을 호출하면a[0]
과a[1]
의 값이 교환되어 리스트a
는[2, 1, 3, 4, 5]
가 됩니다.
function - scoping rule
- 변수의 범위(Scoping Rule)
- : 함수내에서만 사용
- : 프로그램 전체에서 사용
def test(t): # t : 함수 내의 변수 local variable
print(x) # x : 함수 밖의 변수 global variable
t = 20
print("In Function: ", t)
x = 10
test(x)
print(t)
#
# In Function:
# : name 't' is not defined
def f():
global s
s="I love London!"
print(s)
s = "I love Paris!"
f()
print(s)
#
#
Recursive Function(재귀 함수)
- 자기 자신을 호출하는 함수
- 점화식과 같은 모형을 표현할 때 사용
- 재귀 존재, 까지 함수호출 반복
Function type hints
- 파이썬의 가장 큰 특징 : dynamic typing
- 처음 함수를 사용하는 사용자가 를 알기 어렵다는 단점이 있음
def do_function(var_name var_type) return_type:
pass
def type_hint_example(name str) str:
return f"Hello, {name}"
- Type hints의 장점
- 사용자에게 인터페이스를 명확히 알려줄 수 있다.
- 함수의 문서화시 parameter에 대한 정보를 명확히 알 수 있다.
- 시스템 전체적인 안정성을 확보할 수 있다.
ex)
docstring
- 파이썬 함수에 대한 상세스펙을 사전에 작성 -> 함수 사용자의 이해도 up
- 로 docstring 영역 표시(함수명 아래)
함수 작성 가이드 라인
- 함수는 가능하면 짧게 작성할 것(줄 수를 줄일 것)
- 함수 이름에 함수의 역할, 의도가 명확히 드러낼 것
- 하나의 함수에는 유사한 역할을 하는 코드만 포함
- 인자로 받은 값 자체를 바꾸진 말 것(임시변수 선언)
- 공통적으로 사용되는 코드는 함수로 변환
- 복잡한 수식, 조건 -> 변환
def +():
코딩은 팀플
컴퓨터가 이해할 수 있는 코드는 어느 바보나 다 짤 수 있다. 좋은 프로그래머는 사람이 이해할 수 있는 코드를 짠다. -마틴 파울러-
- 사람의 이해를 돕기 위한 규칙이 필요함
- 그 규칙을 이라고 함(Google python )
- 명확한 규칙은 없으나 중요한 건 팀이나 프로젝트 마다의
- 들여쓰기는 or
- 일반적으로 4 Space 권장
- 한 줄은 최대 79자까지
- 불필요한 공백은 피함
- = 연산자는 1칸 이상 안 띄움
- 주석은 항상 갱신, 불필요한 주석은 삭제
- 코드의 마지막에는 항상 한 줄 추가
- 소문자 l, 대문자 O, 대문자 I 금지
- 함수명은 소문자로 구성, 필요하면 밑줄로 나눔
댓글남기기