Skip to content

Latest commit

 

History

History
225 lines (146 loc) · 6.26 KB

220713_Python.md

File metadata and controls

225 lines (146 loc) · 6.26 KB

💻함수

: 특정한 기능을 하는 코드의 조각(묶음)

  • 특정한 명령을 수행하는 코드를 매번 작성하지 않고 명령어 입력으로만 한번에 실행시킨다.
  1. 사용자 함수: 사용자가 직접 정의하여 사용하는 함수
  2. 내장함수: 언어에 내장되어 기본적으로 제공되는 함수

  • 왜 함수를 사용할까?:
    • 재사용성, 가독성, 생산성이 향상된다.
    • 복잡한 내부의 데이터를 생각하지 않고 명령어만 입력하여 편하게 수십줄의 코드를 실행시킨다.
      • Decomposition(기능을 분해, 재사용 가능)
      • Abstraction(복잡한 내용을 숨기고, 기능에 집중하여 사용할 수 있게 한다. 블랙박스라고도 부른다.
# sum을 코드로 나타내보자
numbers = [1, 10, 100]
result = 0
count = 0
for i in numbers:
    result += i
    count += 1
print(result/count)
# 위의 코드를 sum과 len 함수를 사용하면 코드가 매우 짧고 간결해진다.
numbers = [1, 10, 100]
print(sum(numbers)/len(numbers))

  • 함수는 def 함수명()으로 정의한다.

  • 함수는 함수명()으로 호출한다.

# 사용자 함수

def foo():
    return True
def add(x,y): # parameter를 받아서
    return x + y # 결과를 return 해준다.
def minus(x,y):
    return x - y
#add(2,3) 할 시 5가 출력될 것이다.

💻함수의 Output

  • 함수는 반드시 값을 하나만 return한다.

    • 명시적 return이 없는 경우에는 None을 반환한다.
  • return 후에 함수는 종료된다.


아래 코드의 문제점이 무엇일까?

def minus_and_product(x,y):
    return x - y
return x * y

# 실행할 시 x - y만 반환된다.

하지만 아래와 같이 코드를 작성할 경우 두 값을 한꺼번에 튜플로 반환이 가능하다.

def minus_and_product(x,y):
    return x-y, x * y

minus_and_product(4, 5)
# (-1, 20)으로 튜플로 반환된다.

⛔return vs print

  • return함수 안에서 값을 반환하기 위해 사용되는 키워드이다.

  • 반환된 값을 출력하기 위해서는 print를 해야 한다.


💻함수의 Input

⛔parameter vs argument

  • parameter: 함수를 실행할 때, 함수 내부에서 사용되는 식별자

  • argument: 함수를 호출 할 때, 넣어주는 값

    • 함수 호출 시 함수의 parameter를 통해 전달되는 값
    • 소괄호 안에 할당된다. func_name(argument)

  • positional arguments: 기본적으로 함수 호출 시 argument는 위치에 따라 전달된다.

  • keyword arguments: 직접 변수의 이름으로 특정 argument를 전달 가능하다.

def add(x,y):
    return x + y

add(2,5) # positional argument
add(x = 5, y = 2) # keyword argument
add(y = 2, x = 5) # keyword argument

  • default argument values
    • 함수 정의 시, argument의 기본값을 정의해 놓는다.
    • def add(a, b=0)의 경우 a값만 넣어줘도 함수가 작동하고, 원한다면 b 값도 재정의해서 입력해도 된다.
def add(x, y = 0): # default argument value y = 0
    return x + y

add(4) # 출력값은 4이다. y의 값은 default argument value에 의해 0으로 고정되어 있기 때문이다.

  • 정해지지 않은 개수의 arguments
    • 여러개의 positional argument를 하나의 필수 parameter로 받아서 사용한다.
    • arguments의 갯수가 정해지지 않았기 때문에 유동적으로 argument를 추가/삭제 등이 가능하다.
      • *args: 여러개의 argument를 입력받는다. 단, 값이 튜플로 생성된다.
      • **kwargs: 여러개의 argument를 입력받고 나중에 키워드로 불러올 수 있다. 값이 딕셔너리로 생성된다.
def my_add(*args): #arguments (*args)
    return args
result = my_add(1,2,3)
print(result) # (1,2,3) <class 'tuple'>
def my_func(**kwargs): #keyword arguments (**kwargs)
    return kwargs

result = my_func(name = '홍길동', age = '100', gender = 'male')
print(result) # {name = '홍길동', age = '100', gender = 'male'} <class 'dictionary'>

💻함수의 범위

  • 함수의 범위(scope)는 함수 내부의 local scope와 그 외의 외부 공간인 global scope로 구분된다.

scope:

  • glocal scope: 코드 어디에서든 참조 가능한 공간
  • local scope: 함수가 만든 scope이며 함수 내부에서만 참조가 가능

variable:

  • global variable: global scope에 정의된 변수
  • local variable: local scope에 정의된 변수

💻객체 생명주기

: 객제는 각자의 수명주기가 존재한다.

  1. built-in scope: 기본적으로 내장되어 있는 객체이다.

  2. global scope: 모듈이 호출된 시점 이후 인터프리터가 끝날 때까지 유지된다.

  3. local scope: 함수 안에서 정의되어서 함수가 끝나면 사라진다.


💻이름 검색 규칙

  • 파이썬에서 사용되는 식별자들은 **이름공간(namespace)**에 저장되어 있다.
  • 식별자를 호출 할 때 아래의 순서로 이름을 찾아나가며, 이를 LEGB Rule이라고 한다.
    • Local scope: 함수
    • Enclosed scope: 특정 함수의 상위 함수
    • Global scope: 함수 밖의 변수, Import 모듈
    • Built-in scope: 파이썬 안에 내장되어 있는 함수 또는 속성

⛔함수 내에서 바깥 Scope의 변수에 접근이 가능은 하나, 수정은 불가능하다는 것을 명심하자.


💻Map

: 반복 가능한 것의 모든 요소에 적용하고 싶은 함수를 적용하여 반환한 결과이다.

map(function, iterable): 순회 가능한 데이터구조(iterable)의 모든 요소에 함수(function)를 적용하고 그 결과를 map object로 반환.

ex:

# list에 map(int, list)를 적용해보자.
numbers = ['1', '2', '3', '4']
new_numbers_2 = map(int, numbers) # numbers 리스트의 모든 value에 int 형변환을 적용한다.
print(new_numbers_2) # <map object at 0x0000029B7BE92E30>
print(list(new_numbers)) # 리스트로 변환하여 출력한다. 보기 위해서 리스트로 바꾼 것이지 반드시 바꿔야 하는 것은 아니다.