본문 바로가기
Programming/Python

파이썬 함수 반환값부터

by Saans 2022. 1. 7.

출처 한 눈에 읽는 파이썬 기초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

댓글