함수
# 함수의 구조
def add(a, b):
return a + b
이 함수의 뜻은 이름은 add이고, 입력으로 2개의 값을 받으며 결괏값은 2개의 입력값을 더한 값이다.
return은 함수의 결괏값을 돌려주는 명령어이다.
매개변수와 인수
def add (a, b): # a, b는 매개변수
return a + b
print(add(5, 7)) # 5, 7는 인수
매개변수란?
: 함수에 입력으로 전달된 값을 받는 변수를 의미
인수란?
: 함수를 호출할 때 전달하는 입력 값을 의미
입력값과 결괏값에 따른 함수의 형태
# 일반적인 함수의 예
def add(a, b):
result = a + b
return result
>>> a = add(3, 4)
>>> print(a)
7
# 입력 값이 없는 함수
def say():
return 'Hi'
>>> a = say()
>>> print(a)
Hi
# 결괏값이 없는 함수
def add(a, b):
print("%d, %d의 합은 %d입니다." % (a, b, a+b))
>>> a = add(3, 4)
3, 4의 합은 7입니다.
>>> print(a)
None #결괏값은 return 명령어로만 돌려받을 수 있음. a = add(3, 4)를 쓰면 a 변수에 None을 돌려줌
# 입력값도 결괏값도 없는 함수
def say():
print('Hi')
>>> say()
Hi # 입력값도 결괏값도 없는 함수는 '함수이름()' 이렇게만 사용함
입력값이 몇 개가 될지 모를 때
def add_mul(choice, *args): # 매개변수 이름 앞에 '*'를 붙이면 입력값을 전부 모아서 튜플로 만들어 준다.
if choice == "add":
result = 0
for i in args:
result = result + i
elif choice == "mul":
result = 1
for i in args:
result = result * i
return result
>>> result = add_mul('add', 1,2,3,4,5)
>>> print(result)
15
>>> result = add_mul('mul', 1,2,3,4,5)
>>> print(result)
120
args는 인수를 뜻하는 영어 단어 arguments의 약자이며 관례적으로 자주 사용한다.
위의 결과에서 *args는 임의로 정한 변수 이름이다.
# 키워드 파라미터 kwargs
def print_kwargs(**kwargs):
print(kwargs)
>>> print_kwargs(a = 1)
{'a': 1}
>>> print_kwargs(name = 'foo', age = 3)
{'age': 3, 'name': 'foo'}
키워드 파라미터를 사용할 때는 매개변수 앞에 '**'를 붙인다.
입력값들이 모두 딕셔너리로 만들어져서 출력이 된다는 것을 알 수 있다.
함수의 결괏값은 언제나 하나
def add_and_mul(a, b):
return a+b, a*b
result = add_and_mul(3, 4)
>>> result
(7, 12)
# 튜플 값을 2개의 결괏값처럼 받고 싶으면 이렇게 호출하기
result1, result2 = add_and_mul(3, 4)
>>> result1
7
>>> result2
12
# return의 다른 쓰임새 | 자주 쓰인다고 함
def say_nick(nick):
if nick == "바보"
return
print("나의 별명은 %s 입니다." % nick)
>>> say_nick('야호')
나의 별명은 야호입니다.
>>> say_nick('바보')
>>>
함수의 결괏값은 언제나 1개이다.
따라서 add_and_mul 함수의 결괏값 a+b, a*b는 튜플값 하나인 (a+b, a*b)로 돌려준다.
함수는 return을 만나는 순간 결괏값을 돌려준 후 함수를 빠져나가기에 return a+b return a*b를 하게 되면 return a*b는 실행이 되지 않는다.
매개변수에 초깃값 미리 설정하기
def say_myself(name, old, man=True):
print("나의 이름은 %s 입니다." % name)
print("나이는 %d살입니다." % old)
if man:
print("남자입니다.")
else:
print("여자입니다.")
>>> say_myself("김길동", 23)
나의 이름은 김길동 입니다.
나이는 23살입니다.
남자입니다.
>>> say_myself("김길동", 23, False)
나의 이름은 김길동 입니다.
나이는 23살입니다.
여자입니다.
매개변수는 항상 뒤쪽에 놓아야 한다.
중간에 두면 인터프리터는 어느 곳에 대입해야 할지 알 수 없게 되기에 오류가 난다.
함수 안에서 함수 밖의 변수를 변경하는 방법
함수 안에서 선언한 매개변수는 함수 안에서만 사용될 뿐 함수 밖에서는 사용되지 않는다.
# return 사용
a = 1
def vartest(a):
a = a + 1
return a
a = vartest(a)
print(a)
# global 명령어 사용
a = 1
def vartest:
global a
a = a + 1
vartest()
print(a)
첫 번째 a = vartest(a)라고 대입하면 a가 vartest 함수의 결괏값으로 바뀐다.
단, vartest 함수 안의 a 매개변수는 함수 밖의 a와는 다른 것이다.
두 번째 global 명령어를 사용하는 방법은 함수 밖의 a 변수를 직접 사용하겠다는 뜻이다.
함수는 독립적으로 존재하는 것이 좋기에 프로그래밍 할 때는 사용하지 않는 것이 좋다.
lambda
람다는 def와 동일한 역할을 하며, def를 사용해야 할 정도로 복잡하지 않거나 def를 사용할 수 없는 곳에 주로 쓰인다.
사용법은 'lambda 매개변수1, 매개변수2, ... : 매개변수를 이용한 표현식' 이다.
lambda 예약어로 만든 함수는 return 명령어가 없어도 결괏값을 돌려준다.
# lambda 예시
>>> add = lambda a, b: a+b
>>> result = add(3, 4)
>>> print(result)
7
사용자 입력 input
>>> number = input("숫자를 입력하세요: ")
숫자를 입력하세요: 3
>>> print(number)
3
input은 입력되는 모든 것을 문자열로 취급하기 때문에 number는 숫자가 아닌 문자열임에 주의해야 한다.
# 큰 따옴표("")로 둘러싸인 문자열은 + 연산과 동일
>>> print("Life" "is" "too short")
Lifeistoo short
>>> print("Life"+"is"+"too short")
Lifeistoo short
# 문자열 띄어쓰기는 콤마로 함
>>> print("Life", "is", "too short")
Life is too short
# 한 줄에 결괏값 출력
>>> for i in range(10)
print(i, end = ' ')
...
...
0 1 2 3 4 5 6 7 8 9
파일 생성하기
f = open("C:/doit/새파일.txt", 'w')
f.close()
open 함수는 '파일 객체 = open(파일 이름, 파일 열기 모드)'로 쓰면 된다.
f.close()는 열려 있는 파일 객체를 닫아 주는 역할을 한다.
close()를 사용해서 열려 있는 파일을 직접 닫아 주는 것이 좋다.
파일 열기 모드 | 설명 |
r | 읽기모드 - 파일을 읽기만 할 때 사용 |
w | 쓰기모드 - 파일에 내용을 쓸 때 사용 |
a | 추가모드 - 파일의 마지막에 새로운 내용을 추가 시킬 때 사용 |
파일 쓰기 모드로 열면 해당 파일이 존재할 경우 원래 있던 내용이 모두 사라지고,
존재하지 않으면 새로운 파일이 생성된다.
외부에 저장된 파일을 읽는 방법
# readline 함수 사용
f = open("C:/doit/새파일.txt", 'r')
while True: # 더 이상 읽을 줄이 없을 경우 빈 문자열을 리턴한다.
line = f.readline()
if not line: break
print(line)
f.close()
# readlines 함수 사용
f = open("C:/doit/새파일.txt", 'r')
lines = f.readlines() # 모든 줄을 읽어서 각각의 줄을 리스트로 돌려준다.
for line in lines:
print(line) # 앞에 line = line.strip()을 이용하면 줄 끝의 줄 바꿈 문자를 제거한다.
f.close()
# read 함수 사용
f = open("C:/doit/새파일.txt", 'r')
data = f.read() # 내용 전체를 문자열로 돌려준다. 파일의 전체 내용이다.
print(data)
f.close()
출처: 점프 투 파이썬
'ETC > Green Swan, Python 기초' 카테고리의 다른 글
3주차_if문, while문, for문 (0) | 2022.11.09 |
---|---|
2주차_리스트, 튜플, 딕셔너리, 집합, 불, 변수 (0) | 2022.11.02 |
1주차_과제 (0) | 2022.11.02 |
1주차_숫자형, 문자열 자료형 (0) | 2022.11.02 |