변수의 기본적인 사용법
변수 이름 짓기
- 알파벳(abc...), 숫자(123...), 그리고 언더스코어(_)를 사용한다. 한글 사용은 권장하지 않습니다.
- 숫자로 시작할 수 없습니다.
- 중간에 빈 칸을 넣을 수 없습니다.
- 기호들을 사용할 수 없습니다. :'",<>/?|()!@#$%^&*~-+
- 대소문자를 구분합니다.
- 파이썬에서 미리 용도가 정해져있는 단어들을 사용하지 없습니다.
- 헷갈리기 쉬운 글자들의 사용을 자제합니다. ex: O와 0, 1과 l 등
초보때는 무의식적으로 변수명을 짧게 대강 만들려는 분들도 계신데 습관이 되어버리면 코드 리뷰에서 불이익을 받습니다. 의미를 잘 표현하기 위해서는 여러 단어를 연결해야 하는 경우가 많은데 크게 두 가지 스타일을 사용합니다.
캐멀 케이스: 단어들의 첫 글자만 대문자로 적어서 구분.
예) SamsungNotebook, StatusRequest, ... (낙타의 등처럼 대문자가 솟아오른 경우라고 생각하시면 됩니다.)
파이썬의 표준 스타일 권고안인 PEP8에서는 함수와 변수의 이름에 스네이크 케이스 방식을 권장하고 있습니다.
참고로 사용자 정의 자료형인 클래스(class) 이름은 캐멀 케이스를 권장합니다.
first_name = "백호"
first_name
'백호'
1st_name = "백호" # 숫자로 시작해서 에러가 발생합니다.
Input In [2]
1st_name = "백호" # 숫자로 시작해서 에러가 발생합니다.
^
SyntaxError: invalid syntax
# 대소문자 모두 사용 가능합니다.
a = 1
A = 2
a, A
(1, 2)
파이썬 키워드 목록 (소프트키워드는 3.10이상)
import keyword
list(keyword.kwlist)
['False',
'None',
'True',
'__peg_parser__',
'and',
'as',
'assert',
'async',
'await',
'break',
'class',
'continue',
'def',
'del',
'elif',
'else',
'except',
'finally',
'for',
'from',
'global',
'if',
'import',
'in',
'is',
'lambda',
'nonlocal',
'not',
'or',
'pass',
'raise',
'return',
'try',
'while',
'with',
'yield']
# iskeyworld를 사용하여 키워드 여부를 확인합니다.
keyword.iskeyword("pop")
False
keyword.iskeyword("continue")
True
파이썬에게 이름을 얘기하면 운영체제가 관리하는 메모리의 어디에 있는지 찾아서 사용할 수 있게 해 줍니다.
a = 7 # a = int(7)
b = 3
c = a + b # c = a.__add__(b)의 방법으로도 더하기 연산이 가능합니다.
print(c)
10
# 다양한 방법으로 연산을 수행할 수 있습니다.
a += 10 # a = a + 10
a *= 10 # a = a * 10
a /= 10 # a = a / 10
a //= 10 # a = a // 10
a **= 10 # a = a ** 10
a %= 10 # a = a % 10
# 동일하게 사용된 a이지만 가리키는 대상이 서로 다릅니다. 그래서 메모리 주소값이 다르게 출력이 됩니다.
a = 10
print(id(a), a)
a = a + a
print(id(a), a)
1345784080976 10
1345784081296 20
정의되지 않은 변수는 사용할 수 없습니다.
print(d) # d has not been defined yet.
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Input In [12], in <cell line: 1>()
----> 1 print(d)
NameError: name 'd' is not defined
여러 변수를 동시에 정의할 수도 있습니다.
a, b, c = 1, 2, 3
print(a, b, c)
1 2 3
d, e, f = 4, 5.0, "Hello"
print(d, type(d), e, type(e), f, type(f))
4 <class 'int'> 5.0 <class 'float'> Hello <class 'str'>
동적인 자료형 결정 (Dynamic Typing)
같은 변수 이름을 여러 가지 자료형의 객체에게 바꿔가면서 할당할 수 있습니다. 자료형을 정적으로 고정해놓는 것이 아니라 동적으로 그때그때 바꿀 수 있다는 의미로 Dynamic Typing이라고 부릅니다. 파이썬에서는 변수가 이름이라는 점을 이미 배웠기 때문에 그다지 신기한 일은 아닙니다. '강아지'에게 '고양이'라는 이름을 붙인다고 강아지가 고양이로 변하는 것은 아니니까요.
그러나, 다른 언어와 비교할 때는 큰 차이입니다. 예를 들어서 C언어에서는
int a;
와 같이 변수를 '선언'할 때 자료형을 고정시켜버리기 때문에 다른 자료형으로 바꿀 수가 없습니다.
Dynamic Typing의 장점은 "객체의 자료형을 몰라도 된다"이고 단점은 오류가 생겼을 때 "객체의 자료형을 알기가 어렵다"입니다. 하지만 type()으로 확인하는 방법이 있습니다. 보완하는 방법도 함수에서 배우도록 하겠습니다.
a = 1
print(type(a))
a = 1.0
print(type(a))
a = "Hello, World!"
print(type(a))
<class 'int'>
<class 'float'>
<class 'str'>
가변성(Mutability)과 불변성(Immutability)
같은 객체에 이름표를 두 개 발급할 수도 있습니다.
# 서로 다른 이름이지만 동일한 대상을 가리키기 때문에 동일한 출력값과 메모리 주소가 출력됩니다.
a = 123
b = a
print(id(a), a)
print(id(b), b)
1345784273072 123
1345784273072 123
하지만 b의 값을 바꾸면 (b가 가리키고 있는 정수 객체의 값을 바꾸려고 시도하면) id가 달라집니다.
b = b + 1
print(id(a), a)
print(id(b), b)
1345784273072 123
1345784273104 124
b 객체의 값을 바꾸는 것이 아니라 아예 새로운 값을 갖는 객체를 새로 만들기 때문입니다.
이것은 int 자료형이 객체의 값을 바꿀 수 없는(immutable) 자료형이기 때문입니다.
파이썬의 자료형에는 값을 바꿀 수 있는 것들(mutable)과 바꿀 수 없는 것들(immutable)이 있습니다.
Immutable | Mutable | |
---|---|---|
Type | int, float, bool, str, tuple | list, dict, set |
반지름(radius)이 1.2인 원의 넓이(area)를 계산해 보도록 하겠습니다.
area = pi * times radius^2
이때 pi는 3.141592라고 가정합니다.
from math import *
r = float(input('반지름을 입력하세요 :'))
area = pi * (r ** 2)
print("원의 넓이는{0}입니다.".format(area))
반지름을 입력하세요 :5
원의 넓이는78.53981633974483입니다.
r = float(input('반지름을 입력하세요 :'))
area = pi * (r ** 2)
print(f"원의넓이는 {area}입니다.")
반지름을 입력하세요 :5
원의넓이는 78.53981633974483입니다.
[실습] 세후 소득 계산하기
내 소득과 세율이 주어졌을 때 내야 할 세금을 계산하는 식은
세금 = 소득 * 세율
입니다.
- 내 소득 my_income이 100이고 단순 세율 tax_rate가 0.2일 때 내야 할 세금 my_tax을 계산해서 출력하도록 하겠습니다.
- 세금을 제외한 소득 after_tax_income도 계산해 보겠습니다.
my_income = 100
tax_rate = 0.2
my_tax = my_income *tax_rate
print("세금:", my_tax)
after_tax_income = my_income - my_tax
print("세후소득:", after_tax_income)
세금: 20.0
세후소득: 80.0
- my_income과 tax_rate를 input() 함수를 이용해서 입력받아 보십시오.
my_income = float(input("소득을 입력하세요 :"))
tax_rate = float(input("세율을 입력하세요(0.0 ~ 1.0 사이의 값) :"))
my_tax = my_income *tax_rate
print("세금:", my_tax)
after_tax_income = my_income - my_tax
print("세후소득:", after_tax_income)
소득을 입력하세요 :10000000000
세율을 입력하세요(0.0 ~ 1.0 사이의 값) :0.3
세금: 3000000000.0
세후소득: 7000000000.0
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
'수학과 코딩' 카테고리의 다른 글
파이썬(python) 컨테이너(containers)-리시트(list)의 사용 방법(가변성) (0) | 2022.07.26 |
---|---|
파이썬(python) 문자열(string) 사용법(use)_불변성, 매소드, 포맷팅 (0) | 2022.07.25 |
파이썬(python) 문자열(string) 사용법(use)_리터럴(literal), 출력(print), 인덱싱(indexing), 슬라이싱(slicing) (0) | 2022.07.24 |
주피터 노트북에서 작성한 내용 티스토리 옮기는 법(html) (0) | 2022.07.19 |
주피터 노트북의 기본적인 사용법과 파이썬 기초 (0) | 2022.07.19 |
댓글