파이썬
3. 파이썬 함수(python function)
세모이
2021. 1. 29. 09:55
반응형
파이썬 함수의 구조
def 함수명(매개변수):
<수행할 문장1>
<수행할 문장2>
...
함수는 시스템에 내장되어 있는 내장 함수, 사용자가 만든 사용자 정의 함수, 라이브러리 형태로 모듈화시킨 외장 함수가 있다
def gugu(a,b): #a,b는 매개변수 : 함수에 입력으로 전달된 값을 받는 변수
return a+b
print(gugu(2,5)) #2,5는 인수 : 함수를 호출할 때 전달하는 입력값
여러개의 입력값을 받는 함수
def 함수이름(*매개변수):
<수행할 문장>
...
def many_add(*num): #매개변수 이름 앞에 *을 붙이면 입력값을 전부 모아서 튜플로 만들어 주
sum=0
for i in num :
sum=sum+i
return sum
print(many_add(1,2,3,))
def add_mul(choice, *num) :
if choice=='add':
result=0
for i in num:
result=result+i
elif choice=='mul':
result=1
for i in num:
result=result*i
else: result='오류'
return result
print(add_mul('add', 1,2,3,4,5,6,7,8,9,10,))
print(add_mul('mul', 1,2,3,4,5,6,7,8,9,10,))
print(add_mul('mul')) #인수와 매개변수의 수가 일치하지 않아도 함수 실행
#print(add_mul()) #인수가 없으면 오류
print(add_mul('??'))
### 함수의 결과값은 1개이다
def add_and_mul(a,b):
return a+b, a*b
print(add_and_mul(3,5)) # 튜플로 결과 값을 갖게됨
result1,result2=add_and_mul(3,5) #튜플로 된 값을 분리
print(result1)
print(result2)
### 매개 변수에 초깃값 설정하기
def say_myself(name, old, man=True):
print("나의 이름은 %s 입니다." % name)
print("나이는 %d살입니다." % old)
if man:
print("남자입니다.")
else:
print("여자입니다.")
say_myself('홍길동',27)
say_myself('영심이',24,False)
say_myself('고길동',30, True)
### 초기화시키고 싶은 매개변수를 항상 뒤쪽에 놓는 것을 잊지 말자.
IndentationError: unexpected indent
def say_myself(name, man=True, old):
print("나의 이름은 %s 입니다." % name)
print("나이는 %d살입니다." % old)
if man:
print("남자입니다.")
else:
print("여자입니다.")
say_myself('김길',27)
###함수 안에서 함수 밖의 변수를 변경하는 방법
1. return 사용하기
a = 1
def vartest(a):
a = a +1
return a
a = vartest(a)
print('return1',a)
a = vartest(a)
print('return2',a)
a = vartest(a)
print('return3',a)
# 2. global 명령어 사용하기
a = 10
def vartest():
global a # 함수 안에서 함수 밖의 a 변수를 직접 사용하겠다는 뜻(좋은 방법은 아니다)
a = a+1
vartest()
print('global1',a)
vartest()
print('global2',a)
vartest()
print('global3',a)
### lambda
def a(a,b):
return a+b
add=lambda a,b:a+b
print(add(3,5))
print(add)
## 내장함수
enumerate() - 순서가 있는 자료형(리스트,튜플, 문자열) 입력하면 인덱스를 포함한 요솟값을 반환
num=(10,20,30,40,50)
for i in num :
print(i)
print(enumerate(num))
for i in enumerate(num) :
print(i)
for i,v in enumerate(num) :
print('index:%d value:%d' %(i,v))
str() - 입력으로 들어온 데이터를 문자열 객체로 반환
print(type(20))
print(type(str(20)))
a=[1,2,3]
print(str(a)) # 리스트 [1,2,3]을 -> '[1,2,3]' 으로 변환하여 반환
join() - 리스트의 요소들을 지정한 구분자로 구분해 문자열로 반환(리스트 내 요소들을 문자열로 합칠 때 많이 사용)
split() - 문자열을 특정 구분자를 기준으로 분리해 리스트로 반환
v=['cat', 'dog','monkey','tiger']
v1='/'.join(v)
print(v1)
print(type(v1))
v2=v1.split('/')
print(v2)
print(type(v2))
id() - 객체를 입력받아 객체의 고유 주솟값(레퍼런스)을 반환
print(id('str'))
find() - 특정 문자열을 찾기 위해 사용 / 그 문자열의 시작 위치를 반환하고 찾지 못하면 -1을 반환
str='hello'
print(str.find('l'))
print(str.find('a'))
strip() - 주어진 문자열 양쪽 끝의 공백을 제거
str=' hello my name is gildong '
print(str)
print(str.strip())
filter() - 개별 요소를 반복적으로 셀 수 있는 객체(iterable object)를 입력받아 각 요소를 함수로 수행한 후 결과가 True인것만 묶어서 반환
def func(num) :
list=[]
for i in num:
if(i%2==0) : list.append(i)
else : pass
return list
number=(1,2,3,4,5,6,7,8,9,10)
print(func(number))
def ev(num) :
return num%2==0 #짝수면 true 반환
print(filter(ev,number))
print(list(filter(ev,number))) #list() -> 인자로 들어온 데이터(객체)를 리스트로 반환
lambda - 함수를 생성할 때 사용 - 익명 함수
def t2(num):
return num*2
t=lambda x: x*2
print(t2(10))
print(t(10))
print(list(filter(lambda num :num%2==0, number)))
map - 개별 요소를 반복적으로 셀 수 있는 객체를 입력받아 각 요소를 함수로 수행한 후 결과를 묶어서 반환
number=[1,2,3,4,5,6]
print(list(map(lambda x:x**3, number)))
반응형