변수와 기본적인 용어에 관한 내용들은 아래의 포스트에서 확인해주시기 바랍니다! |
Base.자료형, 변수, 메모리 주소
자료형 Ptyhon에서 지원하는 자료형을 기준으로 작성하였다. 사용하는 언어에 따라서 더 다양한 자료형을 지원할수도, 그렇지 않을 수도 있다. Int : 자료형의 이름은 Integer에서 유래했다. 이름의
dot-learning.tistory.com
Base.버그 / 디버그
버그 프로그램을 1. 다운시키거나 2. 원하는 결과를 내게 하지 못하는 여러가지 오류를 통칭하는 말. 종류 1. Syntax error 문법 오류. 컴파일러 또는 인터프리터는 지정된 문법에 따라 코드를 해석하
dot-learning.tistory.com
Base.여러가지 기본상식
한국어로 된 교재는 대부분 번역되어 쉽게 이해될 수 있지만, 영어표기를 알아두는 것이 빠르게 지식을 습득해야하는 개발자의 입장에서는 좋을 것이다. 글의 맥락이 중구난방으로되어있다. 0-2
dot-learning.tistory.com
함수
● 수학에서의 함수 : 정의역의 원소마다 공역의 원소가 오직 하나씩 대응되는 관계
많은 사람들이 착각하는 내용중 하나로, 수학에서의 함수는 위와 같이 정의된다. 우리가 흔히 함수를 생각하면 떠올리는 수많은 수식들은 함수를 표현하는 방법 중 하나에 불과하다. 포인트는 '대응관계'에 있다. 수학에선 인풋과 아웃풋의 관계를 수식으로써 설명한다.
$f(x)=x^2+x+1$
위의 식은 간단한 이차함수이다. 위의 식은 단지 정의역 $x$와 공역$y$의 관계를 식의 형태로 표현한 것일 뿐이다. 그리고 그 식의 형태가 이차방정식의 형태이기 때문에 우리는 이를 이차함수 라고 부르는 것이다.
● 프로그래밍에서의 함수 : 인풋에 대한 아웃풋을 출력하는 일련의 과정을 함수라 한다.
이때 인풋을 매개변수, 아웃풋을 반환값 이라 한다.
(인풋을 매개변수라고 불리는 이유는 어떤 데이터를 우리가 직접 명시해서 작성하는 것이 아니라, 변수에 담아 그 변수의 이름을 통해 데이터를 전달하고 사용하기 때문이다.)
프로그래밍에서의 함수는 수학에서의 그것과 매우 비슷하다! 사실 비슷한 성질을 갖기 때문에 함수라는 이름이 붙었다.
프로그램에서 함수는 어떤 형태로든 입력을 받고 그 입력받은 값에 대한 결과물을 어떠한 형태로든 반환한다.
쉽게 말해 수학의 함수와의 차이점은 수식이 아닌 코드로 함수가 표현된다는 것이다.
프로그래밍에서의 함수는 임의로 작성한 긴 코드들의 연결로 이루어진 것일수도 있고, 미리 잘 만들어진 명령어의 형태를 가진 것도 있다. 즉, 우리는 나만의 함수를 정의하고 사용할 수 있다. 그 방법에 대해서는 뒤의 포스트에서 알아보자.
또한, 결과물은 출력값이 아닌 반환값으로 표현한다! 영어표현을 바탕으로하자면, 출력값은 print되어 모니터에서 볼 수 있는 값이고, 반환값은 return되는 값이다. 이 차이가 무엇인지는 프로그래밍을 경험해보지 못했다면 당장은 이해가 되지 않을 수 있으나 곧 그 차이점을 이해할 수 있을 것이다.
그렇다면 Python에 존재하는 대표적인 함수들은 무엇이 있을까?
print()
프로그래밍을 배우면 가장 처음 배우는 함수이다.
입력된 값을 화면에 출력하는 함수이다.
#예시1
print("hello world")
#출력결과1
hello world
#예시2
a = 100
print(a)
#출력결과2
100
예시2의 결과를 통해 알 수 있듯 변수를 입력받으면 해당 변수에 저장되어 있는 값을 출력한다.
help()
입력값으로 함수의 이름을 넣어주면 입력된 이름의 함수의 사용 형태와 반환하는 값의 형태를 출력한다.
#예시
help(print)
#출력결과
print(...)
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file: a file-like object (stream); defaults to the current sys.stdout.
sep: string inserted between values, default a space.
end: string appended after the last value, default a newline.
flush: whether to forcibly flush the stream.
id()
입력받은 객체의 데이터가 저장되어 있는 곳의 메모리 주소를 반환한다.
#예시
a = 100
print(id(a))
#출력
140730780038032
*해당 출력의 결과물은 프로그램을 실행할 때마다 변경되는 유동적인 값이다!
*일반적으로 컴퓨터는 데이터를 고정된 메모리의 주소에 저장하지 않는다!
위의 예시에서 볼 수 있듯 id함수의 반환값을 우리가 확인하기 위해서는 print함수를 사용하여 출력해주어야 한다.
id함수는 객체의 메모리주소를 반환할뿐 출력하지 않는다!
*파이썬의 경우 일정범위의 정수의 경우 데이터를 미리 몇몇 위치의 메모리에 저장해놓는다. 입력값이 해당 범위의 정수에 해당될 경우 해당 정수의 메모리 위치를 가져와 객체를 생성한다. 즉 같은 정수값이라면 같은 메모리값을 가질 수도 있다. (한 메모리 공간에 두개 이상의 변수가 참조하는 형태)
type()
입력받은 객체의 자료형을 반환하는 함수이다.
#예시
a = 100
print(type(a))
#결과
<class 'int'>
type함수 역시 출력이 아닌 반환을 하는 함수이기 때문에, print함수를 사용하여 결과값을 출력해주어야 한다.
Typecast
Typecast함수란, 객체의 자료형을 변경해주는 함수들을 통칭하는 말이다.
여러 종류의 Typecast함수가 존재하는데 아래의 예시를 보자.
#예시
a = 3.16
print(a)
print(type(a))
a = int(a)
print(a)
print(type(a))
#처음 파이썬을 접한다면 코드가 여러줄이라고 쫄지말고 차근차근 해석해보자!
#a객체를 선언하면서 3.16이라는 값을 대입하였다.
#a객체의 데이터를 출력하고, a객체의 자료형을 출력한다.
#이후 a객체에 a객체의 데이터를 int라는 typecast함수를 사용하여 정수형으로 객체형을 변환한 뒤 대입한다.
#a객체에 담긴 데이터를 출력하고, a객체의 자료형을 출력한다.
#결과
3.16
<class 'float'>
3
<class 'int'>
위의 예시는 int() 즉 정수형으로 객체 자료형을 변환하는 typecast함수를 사용한 것이다.
a객체가 처음 선언될 때에는 실수형인 3.16이라는 데이터를 대입하였으므로, a객체의 자료형은 실수형이다.
따라서 type(a)는 <class 'float'>라는 결과를 반환하고, 이 반환값을 print함수가 출력한 것이다.
이후 a객체의 데이터의 형태를 정수형으로 변환한 뒤 다시 대입한다. 따라서, a객체의 자료형은 정수형이다.
따라서 type(a)는 <class 'int'>라는 결과를 반환하고, 이 반환값을 print함수가 출력한 것이다.
*이때, int()함수는 실수형을 정수형으로 변환할 때 버림 연산을 수행한다.
typecast함수는 여러종류가 있다.
int() : 정수형 변환
float() : 실수형 변환
str() : 문자열형 변환
hex() : 16진수 변환
oct() : 8진수 변환
bin() : 2진수 변환
*2,8,16진수는 모두 정수형의 한 형태이다.
*10진수로 다시 변환할 때는 자동으로 변환된다.
*문자열 형태의 n진수는 정수형으로 형변환 시 int()를 사용한다.
a = int('0o14',8)
#0o14는 따옴표가 쳐져있기 때문에 문자열로 인식된다.
#문자열->정수형의 형변환을 거치기 위해 int()함수를 사용한다.
#이때, 입력된 문자열이 8진수라는 것을 int함수에 알려주기 위해 입력값으로 8을 함께 입력한다.
#문자열 형태의 2진수와 16진수 역시 같은 방식을 사용해 형변환을 할 수 있다.
dict() : 딕셔너리 변환
*딕셔너리를 다룰 때 자세히 다루도록 하자!
input()
입력함수이다. 키보드를 통해 입력되는 값을 반환한다. 이때 반환되는 데이터의 자료형은 항상 문자열이다!
#예시1
a = input()
print(a)
#입력1
12121212
#결과1
12121212
#예시2
b = int(input())
print(b)
#입력2
23232323
#결과2
23232323
위의 두 예시는 차이가 존재한다. a객체에 담긴 데이터는 문자열이다. input함수의 반환값이 문자열 형태로 a에 대입되었기 때문이다. 그러나 b객체에 담긴 데이터는 정수형이다. input함수는 반환값을 문자열 형태로 반환했지만, int함수에 의해 문자열->정수형으로 형변환되었기 때문이다.
*문자열로 저장된 숫자들은 우리가 일반적으로 사용하는 여러가지 사칙연산과 수학계산들에 사용될 수 없다. 정수형으로 저장된 숫자들만이 계산가능하다.
이외에도 많은 내장함수들이 있지만, 앞으로 사용하면서 필요할 때 알아보도록 하자!
'Development language > Python' 카테고리의 다른 글
Python-5. String-문자열 / 따옴표 / Escape Sequence / print() / input() (0) | 2021.11.08 |
---|---|
Python-4. 함수 작성 방법 (0) | 2021.11.02 |
Python-3. 함수의 파라메터와 반환 / 4가지의 경우. (0) | 2021.11.02 |
Python-2.함수 정의와 호출 / 객체 선언 / 지역변수 (0) | 2021.10.06 |
Python-0.Anaconda 설치 (0) | 2021.09.01 |