[파이썬/Python] 파이썬 독학하기 5일차 - 키워드 인수, 가변인수, 람다함수, 모듈
2020. 8. 21.

1.키워드 인수

 

함수 호출시에 인수 이름과 값을 같이 전달한다.

키워드 인수의 위치는 반드시 일반 인수의 뒤에 와야한다.

def funtion(a, b) :
	return a * b

area1 = funtion(10, 5)
area2 = funtion(a = 4, b = 5)
area3 = funtion(b = 5, a = 4) #변수명과 값을 같이 적으면 순서 상관x
area4 = funtion(10, b = 5) #일반 인수 뒤에 키워드 인수 가능
area5 = funtion(a = 4, 5) #error

 

 

2.가변 인수

 

정해지지 않은 수의 인수를 함수에 전달한다

함수를 정의할 때 반드시 넘겨야 하는 고정 인수를 먼저 쓰고 나머지를 마지막에 튜플형식으로 받는다.

def friends(*name) :
	for n in name:
    	print(n.title())

friends('alice', 'bob')
print()
freinds('cindy', 'david', 'emlily')

alice

bob

 

cindy

david

emlily

와 같이 출력된다.

 

정의되지 않은 키워드 인수를 처리할때는 **형식으로 기술한다.

이 경우 전달받는 형식은 사전이다. 키워드는 변수명이되고 값은 키워드 인수로 전달되는 값이다.

def name_age(**list) :
	print(list)

name_age(alice = 19, bob = 18)
#('alice':19, 'bob':18)출력

 

 

3.람다 함수

 

이름이 없는 한 줄짜리 함수이다. return문을 사용하지 않고 함수를 함수인자로 넘길 때 유용하다.

형식은

lambda <인수들> : <반환할식>

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

lambda x, y : x + y

와 같이 바꿀 수 있다.

 

 

4.내장 함수 map, filter

 

map의 경우 map(함수명, 함수에 대한 인수 집합)의 형태로 사용한다.

예를들어 0부터 9까지의 수를 제곱해서 5를 더하는 경우

def f(x) :
    return x * x + 5

a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(list(map(f, a)))

와 같이 할 수 있다. 여기서 lambda를 이용하면

a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(list(map(lambda x : x * x + 5, a)))

로 바꿀 수 있다. 또 여기서 range를 이용해 간단하게 바꿀 수도 있다.

print(list(map(lambda x : x * x + 5, range(10))))

 

filter함수의 경우 filter(함수명, 함수에 대한 인수 집합)형태로 함수명의 함수는 참 또는 거짓을 반환하는 함수다.

1부터 10중 짝수를 반환하는 경우

X = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
result = filter(lambda x : x % 2 == 0, X)

print(list(result))

와 같이 만들 수 있다.

 

 

5.모듈

 

모듈이란?

코드들을 한 단위로 묶어서 사용할 수 있게 하는 하나의 단위

 

모듈의 종류

표준모듈 - 파이썬 패키지 안에 포함된 모듈

사용자모듈 - 사용자가 만드는 모듈

써드파티모듈 - 개인이 만들어 제공하는 모듈

 

장점

코드의 재사용성

서로 다른 모듈에 같은 이름의 메소드가 있어도 충돌이 생기지 않음

 

import 모듈명 형태로 사용한다.

import math
math.pi #3.141592653589793
math.pow(2, 5) #32

from 모듈 import 함수명 형태로 함수만 사용이 가능하다.

from math import pow
pow(2, 5) #함수명만 사용 가능

from math import pow, sqrt, trunc #와 같이 콤마로 여러함수도 가능하다
from math import * #math의 모든 함수 사용

import 모듈 as 이름

모듈명 대신에 as뒤에 나온것을 모듈명으로 사용한다.

import math as mt
mt.pow(2, 5)

 

 

7.모듈 만들기

데이터, 함수로 구성된 파일을 만들면 파일명이 모듈명이 된다.

#calc.py

data = 100

def add(a, b) :
	return a + b

def multiply(a, b) :
	return a * b

라는 파일이 있을때

import calc

a = 10
b = 20

n1 = calc.add(a, b)
n2 = calc.multiply(a, b)

print(n1, n2) #30 200 출력
print('data :', calc.data) #data : 100 출력

와 같이 사용가능하다.

 

 

8.random 모듈

 

임의의 값을 선택하는 함수들로 구성된 모듈

 

randint(a, b) a <= x <= b 사이의 임의의 정수

randrange() range()의 결과값 중의 임의 선택

random() 0.0 <= x < 1.0 임의의 실수 선택

uniform(a, b) a와 b사이의 임의의 실수 선택

choice(x) 군집자료형 x에서 임의의 원소 선택

sample(x, k) 군집자료형 x에서 k개의 원소를 임의로 중복없이 선택

shuffle(x) 군집자료형 x를 섞는다. immutable자료형에는 적용할 수 없다.

 

 

myoskin