출처 한 눈에 읽는 파이썬 기초3 _goorm edu
-반환 값
다른 언어에서는 어떤 자료형의 값을 몇 개 반환할 것인지 함수를 선언할 때 명시해야 하고 선언한대로 반환해야하나 파이썬은 반환 값 자체를 함수에 명시하지 않고 return 뒤에 반환할 값을 입력만 하면 된다.
단 최소한 반환 값에 맞게 함수를 호출하면서 같은 개수의 변수를 할당해야한다
반환 값들은 사실 하나다
파이썬은 반환 값이 여러 개 일때 자동으로 튜플로 반환
튜플은 반복문이나 조건문으로 값을 다루기에 유용
주의할 점: 반환 값과 할당하는 변수의 개수를 똑같거나 튜플로 할당받을 수 있게 변수를 하나만 입력해야함
-return : 함수를 종료함과 동시에 값을 반환하는 키워드
함수를 종료하는 기능
꼭 마지막에 입력하고 반환 값이 있어야 입력하는 것이 아님
return이 여러개여도 첫 return을 만나면 바로 함수 종료
def division(a, b) :
if b == 0 :
return
else :
res = a / b
print("division")
return res
result = division(10, 3)
print(result)
result = division(10, 0)
print(result)
-전역변수: 코드 전체에서 사용할 수 있는 변수
지역변수: 정해진 범위에서만 사용 가능한 변수
https://edu.goorm.io/learn/lecture/17902/
전역변수는 어디서든 참조(읽고 함수 연산)할 수 있지만 함수 안에서 전역변수에 새로운 값을 '대입'하는 것은 불가능.
"전역변수 = 값" 형식의 대입 불가능
global 키워드를 사용하면 할당연산자 '='를 통한 값 대입이 가능하지만 권장하지 않음
기능 | 전역변수 | 지역변수 |
함수 안에서 읽기/수정 | 가능 | 가능 |
함수 안에서 '='을 사용한 대입 | global 사용 이외 불가능 | 가능 |
함수 밖에서 읽기/수정 | 가능 | 불가능 |
함수 밖에서 '='을 사용한 대입 | 가능 | 불가능 |
전역변수의 단점
메모리를 비효율적으로 사용할 수 있다
값에 쉽게 접근 가능해 코드의 흐름 파악에 방해될 수 있음 / 수학의 파이처럼 변하지 않고 여러 기능에서 참조해야하는 값으로 사용
전역변수와 지역변수는 메모리에 존재하는 시간에서 차이 존재
지역변수는 범위 내에서 선언되는 순간 메모리에 저장되고 범위를 벗어나면 자동 소멸
전역변수는 프로그램이 시작된 뒤 선언되는 순간부터 메모리에 저장되고, 코드 전체가 끝나 프로그램이 종료될 때까지 메모리를 차지하여 메모리 관리 측면에서 비효율적
-전역변수 수정
불가피한 경우 전역변수 앞에 global 키워드 사용
num = 1 #전역변수 선언
def plusNum() :
global num #전역변수를 함수 내에서 사용함을 선언
num += 1
print(num)
plusNum()
print(num)
외부와 소통하는 흐름을 깨기 때문에 반환값을 이용하여 전역변수 수정을 추천
num = 1 #전역변수 선언
def plusNum(a) :
a += 1
print(a)
return a
num = plusNum(num)
print(num)
10 함수 정리 연습문제
def num_list(a, b):
list1 = a + b
list2 = a - b
list3 = a * b
return [list1, list2, list3]
num1 = int(input())
num2 = int(input())
print(num_list(num1, num2))
-파일입출력
map(함수, 집합인자, ...) : 리스트, 문자열 등에 포함된 요소를 한 번에 연산/함수 처리하는 함수
-파일 열기/생성 및 쓰기
파일의 생성 : 파일 객체 이름 = open("파일 경로/파일 이름", "파일 열기 모드")
경로는 "C:/data/test.txt" 형식으로 지정
파일 닫기 : 파일 객체.close() _다 쓴 파일은 반드시 닫아야 함
.파일 열기 모드
r 읽기 모드_읽기만 할때
w 쓰기 모드_새로 작성할때
a 추가 모드_마지막 부분에 내용을 추가할 때
f = open("test.txt", 'w')
f.write("hello")
f.close()
write("입력할 값(내용)") 안의 인자는 문자열만 가능
-파일 읽기
readline() 파일 객체의 한 줄씩 읽고 그 문자열을 반환 a = freadline()
readlines() 파일 객체의 모든 줄을 읽고 각 줄을 리스트로 반환 a = f.readlines()
f.read() 파일 객체의 모든 문자열을 읽고 반환 a = f.read()
f = open("test.txt", 'w')
for i in range(1, 11) :
sentence = "%d번째 줄입니다.\n" %i
f.write(sentence)
f.close()
a = open("test.txt", 'r')
for i in range(1,11) :
data = a.readline() #파일을 닫기 전까지 한 줄 읽고
print(data) #한 줄 출력
a.close()
#------------------------------------------
f = open("test.txt", 'w')
for i in range(1, 11) :
sentence = "%d번째 줄입니다.\n" %i
f.write(sentence)
f.close()
a = open("test.txt", 'r')
data = a.read() #전체 문자열을 그대로 읽어들임
print(data)
a.close()
-파일에 내용 추가하기
파일을 쓰기모드('w')로 열면 기존 내용이 삭제되고 새롭게 쓰임
f = open("test.txt", 'w')
data = "1번째 줄입니다.\n"
f.write(data)
f.close()
f = open("test.txt", 'w')
for i in range(2, 5) :
data = "%d번째 줄입니다.\n" %i
f.write(data)
f.close()
f = open("test.txt", 'r')
lines = f.read()
f.close()
print(lines)
추가모드('a')로 열면 기존 파일에 값을 이어 입력 가능
f = open("test.txt", 'w')
data = "1번째 줄입니다.\n"
f.write(data)
f.close()
f = open("test.txt", 'a')
for i in range(2, 5) :
data = "%d번째 줄입니다.\n" %i
f.write(data)
f.close()
f = open("test.txt", 'r')
lines = f.read()
f.close()
print(lines)
'Programming > Python' 카테고리의 다른 글
한 눈에 읽는 파이썬3 클래스 실습 (0) | 2022.01.12 |
---|---|
파이썬 클래스, 클래스 변수 (0) | 2022.01.08 |
파이썬 조건문과 제어문부터 (0) | 2022.01.06 |
파이썬 튜플부터 (0) | 2022.01.05 |
파이썬 문자열 이어서 (0) | 2022.01.04 |
댓글