코딩헤딩

python 기초 13 (함수) 본문

python

python 기초 13 (함수)

멈머이 2023. 11. 16. 00:13
728x90

 

1. 기본 구조

숫자의 연산

def twice(x):
    return x*2
a = 2
b = 3
print(twice(a))
print(twice(b))

결과 : 4

          6

 

문자

def hello(x):
    print('hello', x)
hello('python')

결과 : hello python

 

2. zip/ unzip

def add_minus(x, y):
    a = x + y
    b = x - y
    return a, b
add_minus(5, 7)

결과 : (12, -2)

print(type(add_minus(5, 7)))

결과 : <class 'tuple'>

a, b = add_minus(7, 8)
print(a, b)

결과 : 15 -1

print(type(add_minus(7, 8)))

결과 : <class 'tuple'>

더하기, 빼기 = add_minus(7, 8)
print(더하기, 빼기)

결과 : 15 -1

결과값 = add_minus(7, 8)
print(결과값[0], 결과값[1])

결과 : 15 -1

zip 될 때는 자동으로 tuple형식으로 출력된다

각각의 값의 위치에 따라 파이썬 인터프리터가 위치에 맞는 값을 알아서 넣거나 빼준다.

그 예로 크게 (5) 가지가 있다.

1. 위치 매개변수를 사용하는 함수

def function1(a,b):
    print(a,b)
    
function1(1,2)

결과 : 1 2

각각의 값과 위치가 매칭된다.

 

2. 기본값(default) 정의 매개변수를 사용하는 함수

def function2(a,b=3):
    print(a,b)
    
function2(1)

결과 : 1 3

하나의 값과 그 위치가 매칭되면 나머지 값도 자동으로 매칭된다.

 

3. 키워드 정의 방식

def function3(a,b):
    print(a,b)
    
function3(a=3,b=5)
function3(a=6,b=4)

결과 : 3 5

          6 4

각각의 키워드와 값이 매칭된다.

 

4. 가변형 매개변수를 사용한 함수(*args)

def function4(*args):
    print(args)
    
function4(1,2,3)
function4(1,2,3,6,9)

결과 : (1, 2, 3)
          (1, 2, 3, 6, 9)

전달할 값이 몇개 일지 모를 때 사용하는 방식

 

5. 가변 키워드 매개변수를 사용한 함수

def function5(**args):
    print(args)
    
function5(a=1,b=2,c=3)
function5(a=1,b=2,c=3,d=6,e=9)

dic = {"a":33, "b":55}
function5(a=33,b=55)
function5(**dic)

결과 : {'a': 1, 'b': 2, 'c': 3}
          {'a': 1, 'b': 2, 'c': 3, 'd': 6, 'e': 9}
          {'a': 33, 'b': 55}

전달할 값이 몇개 일지 모를 때 사용하는 방식

 

이어서 함수의 범위(scope)

 

 

3. 변수의 범위 (scope)

x = 1
def twice(x):
    x = x*2
    return x
twice(x)

결과 : 2

b = twice(x) #<- 실행을 해라
c = twice #<- 함수자체를 넘기는것

*소괄호가 있고 없고 주의!!

 

def sum_many(*args): # * -> 여러개의 데이터 가져옴
    sum = 0
    for i in args:
        sum += i
    return sum
sum_many(1, 2, 3, 4, 5, 7, 8, 9, 10)

결과 : 49

 

4. Lamda 함수

*기본구조

def 함수이름(파라미터1, 파라미터2):
    return 결과값
a = lambda x: x*2
a(2)

결과 : 4

def y(x):
    return  x*2
y(2)

결과 : 4

람다 함수를 쓰면 코드를 더 간결하게 쓸 수 있다. 

728x90