웹파이썬 프로그래밍 - Function(함수) 1/2

2021. 6. 19. 02:09강의 내용 정리/웹파이썬 프로그래밍

728x90
반응형

지난 학습 복습 : Variables(변수)

- 변수의 이름은 직관적으로 이해하기 쉬운 것으로 짓는다.

    * 이때 변수 명의 처음이 숫자이거나 언더바(_)를 제외한 다른 기호들이 들어가면 오류가 발생한다.

    ex) 123obj(x), hello!(x), no-way(x), no_way(o)

- 변수의 assignment와 equality를 구분하자.

    * 파이썬에서 같다를 의미하는 연산자는 ==이고, 값을 할당할때는 =를 사용한다.

- 변수 만들면 타입을 포함한 값이 컴퓨터 메모리 어딘가에 저장된다.

- 이때 변수는 해당 컴퓨터 메모리의 주소 값을 저장한다.

difference 변수에 int 타입의 20 값이 있는 주소 값을 저장한다.

 

 

강의 내용

1. 함수란?

- 특정한 입력값이 주어졌을 때 정해진 규칙에 따라 출력값을 출력하는 것

- 수학에서의 함수와 동일하다.

* f(x) = 3x + 2일때, x에 2의 값이 주어지면 f(x)는 8이된다.

** 단 수학에서의 함수와 다른 점은 프로그래밍에서의 함수는 입력이 없어도 출력이 가능하다는 점과 입력이 있더라도 출력이 없을 수 있다는 점이다.

# 프로그래밍에서의 함수
## 입력이 없어도 출력하는 경우
def say():
	return 'hello'
say()

# 입력이 있어도 출력하지 않는 경우
def nothing(x):
    return None
    
nothing(10)

 

 

1-1. 파이썬 내장함수

- 수학과 관련된 함수

# 절대값
abs(-9) # 9
# 제곱
pow(3,2) # 9
# 반올림
round(4.3) # 4
# 이중 함수 구문
pow( abs(-2), round(4.3) ) # 16
# 음수의 반올림
round(-3.5) # -4

 

- 파이썬 데이터 타입과 관련된 함수

# int
int(4.3) # 4
# float
float(4) # 4.0
# bool
bool(0) # False
# str
str(1) # '1'

 

- 내장 함수에 대해 알고싶다면 쓸 수 있는 함수

print(help(pow))

"""
Help on built-in function pow in module builtins:

pow(base, exp, mod=None)
    Equivalent to base**exp with 2 arguments or base**exp % mod with 3 arguments       

    Some types, such as ints, are able to use a more efficient algorithm when
    invoked using the three argument form.

"""

1-2. 파이썬 사용자 정의 함수

- 사용자 정의 함수

#def 함수명(입력 파라미터):
#    return 결과값

def convert_to_celsius(fahrenheit):
    return (fahrenheit - 32) * 5/9
    
convert_to_celsius(212) # 100.0

# 추가적으로 위의 함수명은 잘 짠 케이스이다.
# - 입력 파라미터를 받아 celsius로 바꾸는 것이기 때문에 conver_to_celsius(fahrenheit)로 사용

 

 

- 지역변수 (Local variables) : 함수 내에 존재하는 변수이다. 

- 지역변수는 함수 바깥에서 사용할 수 없다.

- 반대로 함수 바깥에 존재하는 변수이지만 입력 파라미터로 받지 않는 경우는 전역 변수(Global variables)이다.

- 전역변수는 입력 파라미터로 받거나 global 함수를 사용하지 않는 이상 함수 내에서 사용이 불가능하다.

# 함수 내에 있는 변수는 지역 변수라고 한다.

# function 정의
def quadratic(a, b, c, x):
	global global_variables  # function body
	first = a * x **2        # function body
    second = b * x           # function body 
    third = c                # function body
    return first + second + third + global_variables

global_variables = 0  


# function call
quadratic(2, 3, 4, 2) # 18
quadratic(2, 3, 4, 1.0) # 9

# quadratic()의 지역 변수 : first, second, third
# global_variables : 전역 변수의 함수 내 사용

 

cf) 변수명 이름 짓기에 추가되는 조건

    * 예약어는 변수명으로 사용할 수 없다.

    ** 예약어란 프로그래밍 언어에서 자주 사용하는 함수명이다.

    *** 추가로 몇몇 내장 함수의 경우 변수명으로 사용할수는 있지만 이를 사용할 경우 해당 내장 함수는 사용할 수 없다.

#예약어를 변수명으로 사용하는 경우
#def = 4 (x)

내장함수를 변수명으로 사용하는 경우
str = 4
# str(4)는 사용불가

1-3. 함수와 관련된 에러

- 함수를 사용하다보면 여러가지 에러가 발생할 수 있다.

- TypeError : 입력 파라미터의 개수가 맞지 않았을 때 발생

- NameError : 지역변수를 호출했을 때 발생

 

 

1-4. 전역 변수

- 함수 내에서 만든 변수는 함수 바깥에서는 확인할 수 없다.

- 프로젝트를 진행하다보면 무수히 많은 함수를 사용할텐데 지역변수를 함수 바깥에서 확인할 수 있게되면 변수를 사용하는데 어려움을 겪게되기 때문에 전역변수는 함수 내에서만 사용할 수 있다.

 

 

1-5. 함수 호출(Function Calls)

- 컴퓨터 메모리에 함수가 저장되고 주소값이 저장된다. 

- 해당 함수 내에도 전역 변수와 리턴 값이 존재하기 때문에 이에 대해서도 메모리 공간은 별도로 할당된다.

- 함수를 호출할 때에도 함수 바디 부분을 한줄 한줄, 변수를 호출한 것과 같이 주소값을 통해서 계산한다. 

728x90
반응형