함수(function)
함수는 매개변수를 입력받아 작업을 수행한 후 값을 반환해준다. "def: 함수명(매개변수1, 매개변수2,..., 매개변수n)"와 같은 형식으로 함수를 직접 정의할 수 있다. 매개변수 지정 시에는 형을 지정하지 않아도 되며(참고로 Python 3.6 이후에는 정적 타입 선언도 가능해짐), 값 반환은 return 예약어를 사용한다.
# 함수
"""
기본구조
def 함수명(매개변수):
수행할 문장 1
수행할 문장 2
return 리턴값
....
"""
# 인수와 매개변수
def add(a, b): # a, b는 매개변수(parameters)
return a + b
a = 3
b = 4
c = add(a, b) # a, b는 인수(arguments)
print(c)
# 함수의 형태는 입력값과 결괏값의 존재 유무에 따라 4가지 유형으로 나뉜다.
# 1. 일반적인 함수: 입력값, 결괏값이 모두 있는 함수
"""
def 함수명(매개변수):
수행할 문장
......
return 결괏값
"""
# 호출 시
# 결괏값을 받을 변수 = 함수명(인수1, 인수2)
def mul(a, b):
result = a * b
return result
a = mul(3, 4)
print(a)
# 2. 입력값이 없는 함수
"""
def 함수명():
return 출력값
"""
# 호출 시
# 결괏값을 받을 변수 = 함수명(), 인수 없음.
def sayhello():
return 'Hi'
a = sayhello()
print(a)
# 3. 결괏값이 없는 함수
"""
def 함수명(매개변수):
print(매개변수를 처리한 값)
"""
# 호출 시
# 함수명(인수)
def sub(a, b):
print("%d, %d의 빼기는 %d입니다." % (a, b, a - b))
sub(5, 3)
a = sub(4, 2) # 리턴값이 없으므로 None 반환
# a를 출력해보면 None: 거짓, a는 받는 값이 없다.
# 함수에서 처리되어 출력하고 돌려주는 값이 없기 때문
# None 의미: list, tuple, dictionary, String 등의 경우,
# 선언만 되어있고 값이 없을 때, 숫자는 0일 때
# 참: list, tuple, dictionary, String에 값이 있을 때, 숫자는 0을 제외한 값.
# 4. 입력값도 결괏값도 없는 함수
"""
def 함수명():
print("특정값")
"""
# 호출 시
# 함수명()
def sayHi():
print('Hi Everyone!!')
sayHi()
# 매개변수 지정하여 호출하기
def add(a, b):
return a + b
result = add(a=3, b=7) # a에 3, b에 7을 전달
print(result)
result = add(b=5, a=3)
# b = 5
# a = 3
# result = add(b, a)
# 매개변수가 몇 개가 될지 모를 때?
'''
def 함수명(*매개변수):
수행할 문장
...
'''
def add_many(*args):
result = 0
for i in args:
result += i
return result
result1 = add_many(1, 2, 3)
print(result1)
result2 = add_many(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
print(result2)
def add_mul(choice, *args):
if choice == "add":
result = 0
for i in args:
result += i
elif choice == "mul":
result = 1
for i in args:
result *= i
return result
result1 = add_mul('add', 1, 2, 3, 4, 5)
print(result1)
result2 = add_mul('mul', 1, 2, 3, 4, 5)
print(result2)
# 키워드 파라미터 kwargs 앞에 '**'을 붙여 사용한다. kwargs: keyword arguments의 약자
# 관례적으로 사용
# 딕셔너리 자료형으로 출력된다.
def print_kwargs(**kwargs):
print(kwargs)
print_kwargs(a=1)
print_kwargs(name='hgd', age=18)
# 함수의 결괏값?
def add_and_mul(a, b):
return a + b, a * b
result = add_and_mul(3, 4) # 튜플 자료형으로 값이 리턴된다. (튜플은 값을 수정, 삭제 불가능)
print(result) # add_and_mul 함수의 결괏값 a + b, a * b를 튜플값 하나인 (a + b, a * b)로 돌려준다.
# 결괏값을 따로 따로 받고 싶을때?
result1, result2 = add_and_mul(3, 4)
print(result1)
print(result2)
# return 문
def add_and_mul(a, b):
return a + b # 동작하고 탈출한다.
return a * b # 동작을 안한다.
result = add_and_mul(2, 3) # 결괏값이 a + b 값만 출력된다.
print(result)
def say_nick(nick):
if nick == "바보":
return
print("별명은 %s입니다." % nick)
say_nick('바보')
say_nick('천재')
# 매개변수에 초깃값 미리 설정하기
def say_myself(name, old, man=True):
print("나의 이름은 %s입니다." % name)
print("나이는 %d살입니다." % old)
if man:
print("남자입니다.")
else:
print("여자입니다.")
say_myself("이순신", 45)
say_myself("이순신", 45, True)
say_myself("김연아", 30, False)
def say_myself1(name, man=True, old):
# non-default parameter follows default parameter
# 초깃값을 정해놓은 변수 뒤에는 초깃값을 정해 놓지 않으면 매개변수를 사용할 수 없다.
print("나의 이름은 %s 입니다." % name)
print("나이는 %d살입니다." % old)
if man:
print("남자입니다.")
else:
print("여자입니다.")
# 함수 안에서 함수 밖의 변수를 변경하기
# vartest 함수에서 함수 밖의 변수 a를 1만큼 증가시키기..
# 1. return 사용
a = 1
def vartest(a):
a = a + 1
return a
a = vartest(a)
print(a)
# 2. global 명령어 사용
# global a: 함수 안에서 함수 밖의 a 변수를 직접 사용하겠다는 뜻. 권장하지 않는다.
a = 1
def vartest():
global a
a = a + 1
vartest()
print(a)
# 람다(lambda)는 함수를 생성할 때 사용하는 예약어이고 def와 동일한 역할을 한다.
# 보통 함수를 한 줄로 간결하게 만들 때 사용한다.
# 람다 예약어로 만든 함수는 return이 없어도 결과를 돌려준다.
"""
매개변수를 이용한 표현식:
lambda 매개변수1, 매개변수2, ...
"""
add = lambda a, b: a + b
result = add(3, 4)
print(result)
def add(a, b):
return a + b
result = add(3, 4)
print(result)
사용자 입력
input() 함수를 이용해서 값을 입력받을 수 있다. 기본적으로 문자열 자료형으로 값을 받아오며, int(), float() 등 다른 자료형으로 변환하여 사용 가능하다.
# 사용자 입력: 사용자가 입력한 값을 변수에 대입하고 싶을 때,
# input 사용
# 콘솔에 Life is too short, you need python를 입력하고 a를 출력하면
"""
>>> a = input()
Life is too short, you need python
"""
# 'Life is too short, you need python'이 나오는 걸 확인할 수 있다.
"""
>>> a
'Life is too short, you need python'
"""
# 프롬프트를 띄워서 사용자 입력받기
# input("질문 내용")
number = input("숫자를 입력하세요 :")
print(number)
type(number) # <class 'str'> 문자열로 취급한다.
# 큰 따옴표(")로 둘러싼 문자열은 + 연산과 동일하다,
# 따옴표로 둘러싸인 문자열을 연속해서 쓰면 + 연산을 한 것과 같다.
print("Life" "is" "too short") # 1
print("Life" + "is" + "too short") # 2
# 문자열 띄어쓰기는 콤마(,)로 한다.
print("Life", "is", "too short")
# 한 줄에 결괏값 출력하기: 결괏값을 한 줄로 이어서 출력하기
for i in range(10):
print(i, end=' ')
for i in range(10):
print(i)
파일
파이썬에서는 open() 함수를 통해 파일을 읽거나 쓸 수 있다. 파일을 사용하고 난 후에는 파일 객체를 close() 함수로 닫아주어야 한다. with문을 사용하면 close() 함수로 닫아주지 않아도 된다.
# 파일을 읽고 쓰기
# 파일 생성하기
f = open("새 파일.txt", 'w')
f.close()
"""
open(): 파이썬 내장함수
파일 객체 = open(파일명, 파일 열기 모드)
파일 열기 모드 설명
r 읽기 모드 파일을 읽기만 할 때 사용
w 쓰기 모드 파일에 내용을 쓸 때 사용
a 추가 모드 파일의 마지막에 새로운 내용을 추가할 때 사용
"""
f = open("c:/pyworks/새 파일.txt", 'w')
# f = open("c:\\pyworks\\새 파일.txt",'w')처럼 역슬래시를 사용할 때는 이스케이프 시퀀스(\\) 사용
f.close()
# 파일을 쓰기 모드로 열어, 출력값 적기
f = open("c:/pyworks/새 파일.txt", 'w')
for i in range(1, 11):
data = "%d번째 줄입니다.\n" % i
f.write(data)
f.close()
# 화면 콘솔로 출력해준다.
for i in range(1, 11):
data = "%d번째 줄입니다.\n" % i
print(data)
# 외부에 저장된 파일 읽어오기
# readline() 함수 사용
f = open("c:/pyworks/새 파일.txt", 'r')
line = f.readline()
print(line) # 1번째 줄입니다.
f.close()
# 모든 줄을 읽어 오기, while 반복문 사용
f = open("c:/pyworks/새 파일.txt", 'r')
while True:
line = f.readline()
if not line:
break
print(line)
f.close()
# readlines() 함수 사용
f = open("c:/pyworks/새 파일.txt", 'r')
lines = f.readlines()
for line in lines:
print(line)
f.close()
# 줄바꿈 \n 문자 제거
f = open("c:/pyworks/새 파일.txt", 'r')
lines = f.readlines()
for line in lines:
line = line.strip() # strip
print(line)
f.close()
# read 함수 사용, 파일의 내용 전체를 문자열로 돌려준다. data는 파일의 전체 내용이다.
f = open("c:/pyworks/새 파일.txt", 'r')
data = f.read()
print(data)
f.close()
# 파일에 새로운 내용 추가하기, append 모드
f = open("c:/pyworks/새 파일.txt", 'a')
for i in range(11, 21):
data = "%d번째 줄입니다.\n" % i
f.write(data)
f.close()
# 파일을 읽어와서 추가된 내용 출력하기
f = open("c:/pyworks/새 파일.txt", 'r')
data = f.read()
print(data)
f.close()
# with문 사용: with 블록을 벗어나는 순간, 열린 파일 객체 f가 자동으로 close되어 편리하다.
f = open("aaa.txt", 'w')
f.write("Life is too short, you need python")
f.close() # 파일 객체는 열면 닫아줘야 하는데 이는 잊어버리기 쉽고 귀찮은 일이다.
with open("aaa.txt", 'w') as f:
f.write("Life is too short, you need python")
'🐍Python' 카테고리의 다른 글
[20210802] Python 기본 문법 6 - 라이브러리 2, 정규식, numpy (0) | 2021.08.02 |
---|---|
[20210730] Python 기본 문법 5 - 예외, 내장 함수, 라이브러리 (0) | 2021.07.30 |
[20210729] Python 기본 문법 4 - 클래스, 모듈, 패키지 (0) | 2021.07.29 |
[20210727] Python 기본 문법 2 - 조건문(if~else문), 반복문(for 문, while 문) (0) | 2021.07.27 |
[20210726] Python 기본 문법 1 - 연산, 변수, 자료형(숫자, 문자 , 리스트, 튜플, 집합, 딕셔너리) (0) | 2021.07.26 |