본문 바로가기
프로그래밍/Python

[인공지능(AI) 기초다지기] Python의 문자열(String)과 함수 / Swap, 재귀 함수

by hi-rachel 2023. 1. 19.

* String and advanced function concept

 

🐍 Python의 문자열과 함수

 

📌 문자열(String)

: 시퀀스 자료형으로 문자형 data를 메모리에 저장한다.

영문자 한 글자는 1byte의 메모리 공간 사용 

1byte = 8bit = 2**8 = 256

1bit는 0 또는 1

 

데이터 타입별로 메모리 공간 할당 크기가 다르다.

 

문자열 인덱싱(String Indexing)

: 문자열의 각 문자는 개별 주소(offset)를 가진다. 이 주소를 사용해 할당한 값을 가져오는 것이 인덱싱.

문자열 slicing

 

문자열도 연산이 가능하다.

 

🌟 알아두면 좋은 문자열 함수

 

특수 문자 표현

 

 


 

📌 함수(function)

함수 호출 방식

1. 값에 의한 호출(Call by Value)

: 함수에 인자를 넘길 때 값만 넘김. 함수 내에 인자 값 변경 시, 호출자에게 영향을 주지 않음

2. 참조에 의한 호출(Call by Reference)

: 함수에 인자를 넘길 때 메모리 주소를 넘김. 함수 내에 인자 값 변경 시, 호출자의 값도 변경됨

3. 객체 참조에 의한 호출(Call by Object Reference)

 

값 교환 Swap

: 함수를 통해 변수 간의 값을 교환(Swap)하는 함수

- 1번의 예시 : 값 변하지 않음

# function - swap ❌
def swap_value(x, y):
    temp = x
    x = y
    y = temp

 

- 2번의 예시 : ex 리스트의 전역 변수 값을 직접 변경

# 리스트 자체를 바꿈
def swap_offset(offset_x, offset_y):
    temp = ex[offset_x]
    ex[offset_x] = ex[offset_y]
    ex[offset_y] = temp

 

- 3번의 예시 : ex 리스트 객체의 주소 값을 받아 값을 변경

# 가장 이상적
# 객체를 유지하며 쓸 수 있는 함수
# 값은 항상 복사해서 사용하는 것이 좋음
def swap_reference (list_ex, offset_x, offset_y):
    temp = list_ex[offset_x]    # 4
    list_ex[offset_x] = list_ex[offset_y]    # list_ex[3] = 5
    list_ex[offset_y] = temp    # list_ex[4] = 4

 

범위 Scoping

지역 변수(local variable) : 함수 내에서만 사용    (프로세스의 stack_임시 데이터(함수 호출, 지역 변수))

전역 변수(Global variable) : 프로그램 전체에서 사용    (프로세스의 data_전역 변수, 초기화된 데이터)

# scope
# 함수 내 전역변수 사용시 global 키워드 사용
def f():
    global s
    s = "I LOVE PIZZA"
    print(s)
    
s = "I LOVE PASTA"
f()    # I LOVE PIZZA
print(s)    # I LOVE PIZZA

 

재귀 함수(recursive function)

: 자기 자신을 호출하는 함수, 점화식과 같은 재귀적 수학 모형을 표현할 때 사용

재귀 종료 조건 존재, 종료 조건까지 함수 호출 반복

 

- 재귀 함수로 Factorial 구현

# 재귀 종료 조건(n == 1)까지 함수호출 반복
def factorial(n):
    if n == 1:
        return 1
    else:
        return n * factorial(n-1)
print(factorial(int(input("Input Number for Factorial: "))))

 

- 반복문으로 Factorial 구현

# 연습문제: 재귀함수 코드를 일반 loop 코드로 변경
def factorial():
    n = int(input("Input Number for Factorial: "))
    result = 1;
    for i in range(1, n+1):
        result *= i
    return result
factorial()

 

강의를 들으며 손코딩 하지 말고 직접 해보자!

코드는 하나의 보고서이다.

읽기 좋은 코드가 좋은 코드이다.

 

 


 

더 자세한 내용은 실제 강의를 들어보길 추천합니다 🙂

인공지능(AI) 기초 다지기

 

인공지능(AI) 기초 다지기

부스트코스 무료 강의

www.boostcourse.org

 

※ 위 내용은 부스트코스(boostcourse) 인공지능(AI) 기초 다지기 강의를 듣고 공부하며 내용을 정리한 글입니다.