과일, 설탕 <입력>
↓
믹서<함수>
↓
과일 주스 <출력>
입력값이나 출력값이 없을 수도 있다.
입력값이 없어도 출력값만 있을 수도 있다.
함수를 사용하는 것을 호출 이라고 한다.
def 함수명(매개변수input):
<수행할 문장1>
<수행할 문장2>
...
return 리턴 값
■일반적인 함수
def sum(a, b):
result = a + b
return result
a = sum(3,4)
print(a)
7
■입력값이 없는 함수
def say():
return 'Hi'
a = say()
print(a)
Hi
■결과값이 없는 함수
def sum(a, b):
print("%d, %d의 합은 %d 입니다." % (a, b, a+b))
sum(1,2)
1, 2의 합은 7입니다.
■입력값도 결과값도 없는 함수
def say():
print('Hi')
say()
Hi
■여러 개의 입력값
*args를 쓰면 몇 개든 상관없이 다 들어갈 수 있다.
def sum(*args):
sum = 0
for i in args:
sum = sum + i
return sum
print(sum(1,2,3))
def sum(a, b):
result = a + b
return result
print(sum(1,2))
■키워드 피라미터
kwargs = keyword arguements
dictionary(key value) 형태로 여러개의 값이 들어올 수 있는 것을 처리할 수 있는 매개변수
def print_kwargs(**kwargs):
for k in kwargs.keys():
if(k == "name"):
print("당신의 이름은 :" + k)
print(print_kwargs(name="int 조수", b="2"))
def print_kwargs(**kwargs):
for k in kwargs.keys():
if(k == "name"):
print("당신의 이름은 :" + k)
print(print_kwargs(name="int 조수", b="2"))'
■함수의 결과값은 언제나 하나이다
def sum_and_mul(a,b):
... return a+b, a*b
result = sum_and_mul(3,4)
result = (7, 12)
def sum_and_mul(a,b):
return a+b, a*b, a-b
print(sum_and_mul(1,2)[1])
result = 2
■매개 변수에 초깃값 미리 설정하기
def say_myself(name, old, man=True):
print("나의 이름은 %s 입니다." % name)
print("나이는 %d살 입니다." % old)
if man:
print("남자입니다")
else:
print("여자입니다")
say_myself("라이브유튜브", 20, False)
False 자리에 암것도 안 넣어도 위의 man이 True니까 그대로 출력 됨.
순서에 주의 해야한다.
man = True는 맨 끝으로 가야한다.
myList = [1,2,3]
print(myList.append(4))
append(4)
■함수 안에서 선언된 변수의 효력 범위
a = 1
def vartest(a):
a = a + 1
a = vartest(a)
print(a)
■함수 안에서 함수 밖의 변수를 변경하는 방법1
a = 1
def vartest(a):
a = a + 1
return a
a = vartest(a)
print(a)
■함수 안에서 함수 밖의 변수를 변경하는 방법2
a = 1
def vartest(a):
global a
a = a+1
vartest()
print(a)
■Lambda 함수
add = lambda a, b: a+b
result = add(3,4)
print(3,4)
7
아래와 완전히 동일
def add(a,b):
return a+b
myList = [lambda a, b: a + b, lambda a, b: a*b]
print(myList1)
함수를 편리하게 정의하고, 이름도 안 정하고, List나 어디에다 넣어서 쓸 수도 있고, 변수에 담아서 그 변수를 불러와서 쓸 수도 있다. 많이 쓰인다. 간단한 식을 쓸 때
■input의 사용
a = input()
Life is too short, you need python
a
'Life is too short, you need python'
■프롬프트를 띄워서 사용자 입력 받기
number = input("숫자를 입력하세요: ")
숫자를 입력하세요: 3
print(number)
3
■print 문
print("life" "is" "too short")
lifeistoo short
print("life"+"is"+"too short")
life is too short
print("life","is","too short")
life is too short
for i in range(10):
... print(i)
0
1
2
3
4
5
6
7
8
9
for i in range(10):
... print(i, end='')
...
0 1 2 3 4 5 6 7 8 9
end = '' 를 쓰면 다음 줄로 안 넘어가고 그대로 같은 줄에 써진다. print하면 다음 줄로 넘어감.
■파일 생성하기
f = open("C:/coding/새파일.txt", 'w')
f.close()
■파일 열기 모드 / 설명
r(ead) / 읽기모드 - 파일을 읽기만 할 때 사용
w(rite) / 쓰기모드 - 파일에 내용을 쓸 때 사용
a(dd) / 추가모드 - 파일의 마지막에 새로운 내용을 추가 시킬 때 사용
■파일을 쓰기 모드로 열어 출력값 적기
f = open("C:/coding/새파일.txt", 'w')
for i in range(1,11):
data = "%dth line.\n" % i
f.write(data)
f.close()
■readline() 함수 == 한 줄 읽는 것
f = open("C:/coding/새파일.txt", 'r', encoding="UTF-8")
while True:
line = f.redaline()
print(line)
f.close()
f = open("C:/coding/새파일.txt", 'r', encoding="UTF-8")
while True:
line = f.redaline()
if not line: break
print(line)
f.close()
■readlines() 함수 이용하기 == 리스트 형태로 가져와서 읽는 것 (출력)
f = open("C:/coding/새파일.txt", 'r', encoding="UTF-8")
lines = f.readlines()
for line in lines:
print(line)
f.close()
공백없애기. (print는 한 줄 띄워준다)
f = open("C:/coding/새파일.txt", 'r', encoding="UTF-8")
lines = f.readlines()
for line in lines:
print(line.strip("\n"), end="")
f.close()
■read() 함수 이용하기 == 모든 라인 통쨰로 읽기
f = open("C:/coding/새파일.txt", 'r', encoding="UTF-8")
data = f.read()
print(data)
f.close()
■파일에 새로운 내용 추가하기
'a' 활용. 추가하는 것
f = open("C:/coding/새파일.txt", 'a')
for i in range(1,11):
data = "%dth line.\n" % i
f.write(data)
f.close()
■with문과 함께 사용하기 == close를 안 해도 된다.
with open("C:/coding/foo.txt", "w") as f:
f.write("Life is too short, you need python")
■return의 기능
#return은 함수가 종료되면서 값을 반환하게 하는 기능을 합니다
약간 기믹이긴한데 return 뒤에 아무것도 안써서 함수를 종료시켜버리는 방법도 많이 사용합니다
예를들어 영상에서와 같이
def sum(a,b):
result = a+b
return result
이런식으로 함수를 정의하신 상황이라면
num = sum(a,b)
-> num = result
이런식으로 치환이 되는거죠
그래서 print(sum(a,b))도 print(result)로 치환되는거라고 생각하시면될거 같습니다
물론 여기서 return은 실제로 값만 넘어가기 때문에 변수가 넘어가는 것은 아닙니다
#입문자분들중 많은 분들이 print와 return을 헷갈려하시는데 print는 값을 콘솔창에 출력시키는 역할을 하고, return은 값을 반환해주고 함수를 종료시킵니다. 예를들어 5 + 8을 계산해서 100명의 사람들에게 이메일로 보내고 싶다면 print를 이용해 5 + 8을 콘솔에 출력시키면 안되겠죠. 이럴때 return을 이용해 값을 계산한 후에, 이메일로 보내야 할겁니다. 이런식으로 print는 오직 콘솔 출력만을 위해 존재하는 녀석이기에 범용성이 굉장히 적죠. 이렇게 생각하면 쉬우실 겁니다, return은 값을 반환하고 print는 값을 반환하고 콘솔에 출력한다.