내용
keywords(예약어)
파이썬 코드 작성에서 기본적으로 정의되어 동작영역이 한정되어 있는 단어들을 예약어라고 하며 변수, 함수, 클래스 등의 객체이름이나 다른 용도로 전환하여 사용할 수 없습니다.
파이썬은 33개의 예약어를 가지고 있으며 영문 소문자와 대문자를 구분하며 True, False, None 등을 제외하고 다른 키워드는 모두 소문자 입니다. keyword 모듈의 kwlist
속성으로 확인할 수 있습니다.
import keyword kw=keyword.kwlist for i in range(5, len(kw)+1, 5): print(kw[i:(i+5)], end="\n")
['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'] |
주요 키워드의 내용
- Ture/ False
- 비교와 논리의 결과값으로 반환됩니다. 또한 True=1, False=0으로 계산됩니다.
2==2
True
4<1
False
[True==1, False==0]
[True, True]
True+True
2
- None
- 값이 없거나 null인 경우를 나타내는 특별한 상수
- 이 자료형은 NoneType으로 나타남
- False, 0, 빈 리스트, dictionary, string 등을 의미하지 않음
x=[None, None]; x
[None, None]
x=None y=None x==y
True
None==0
False
None==[]
False
다음 함수와 같이 반환값이 없을 경우에도 None이 반환됩니다.
def noneFun(): a=2 b=3 c=a+b x=noneFun() print(x)
None
def noneFun2(x): if x%2==0: return(x+1) noneFun2(4)
5
print(noneFun2(5))
None
- and, or, not은 두객체에 대한 논리연산자
- and :모두 True 일때만 True
- or : 모두 False 일때만 False
- not: 값의 반대를 반환
x=[True, False] y=[True, False] x[0] and y[0]
True
x[0] and y[1]
False
x[0] or y[0]
True
x[0] or y[1]
True
x[1] or y[1]
False
not x[1]
True
- as
- 모듈을 임포트 할 때 모듈의 별칭을 지정할 때 사용
- 예를들어 numpy모듈을 임포트 할 때 numpy 대신에 np로 사용할 경우 as를 사용합니다.
- import numpy as np
- assert
- if와 유사한 조건문
- 조건이 True일 경우는 반환값이 없습니다.
- 조건이 False일 경우에만 에러메시지가 반환, AssertionError
- 주로 dedugging 할 때 빈번히 사용합니다.
x=3 assert x<5
assert x>5
--------------------------------------------------------------------------- |
AssertionError Traceback (most recent call last) |
c:\\Users\\pyNote2.ipynb 셀 3 in <cell line: 1>() |
----> 1 assert x>5 |
AssertionError: |
위 코드의 마지막 즉, "assert 조건"에서 에러가 발생하는 것은 if 문에서 raise 구문를 결합한 것과 같습니다.
if not x>5: raise AssertionError
--------------------------------------------------------------------------- |
AssertionError Traceback (most recent call last) |
c:\\Users\\pyNote2.ipynb 셀 4 in <cell line: 1>() |
1 if not x>5: |
----> 2 raise AssertionError |
- class: 사용자 정의 클래스를 정의하기 위해서 사용합니다.
- def : 사용자 정의 함수를 정의하기 위해서 사용합니다.
- del : 객체 또는 객체의 원소를 제거하기 위해 사용
x = [10, 12, 19] y=x x, y
([10, 12, 19], [10, 12, 19])
del x x
NameError: name 'x' is not defined
y
[10, 12, 19]
del y[1] y
[10, 19]
Exception은 프로그램이 실행 중 발생하는 'IOError', 'ValueError', 'ZeroDivisionError', 'ImportError', 'NameError', 'TypeError'등과 같은 에러 입니다.
- try와 excep
- try~except 블럭에 사용되는 키워드
- finally
- try~except 블럭의 끝을 명시하기 위해 사용
위 블럭은 함수등의 실행중에 예외 여부를 확인하기 위해 이 사용 사용됩니다.
- raise 예외의 종류 ("내용")
- 예외의 종류와 그에 대한 내용을 반환
def divideS(x, y): try: re=x/y return(re) except: return ("y는 0이 아닌 수이어야 합니다.") print(divideS(10, 2))
5.0
print(divideS(10, 0))
y는 0이 아닌 수이어야 합니다.
try~except 블럭은 키워드 if와 raise로 대체할 수 있습니다.
def divideS1(x, y): if y!=0: re=x/y return(re) else: raise ZeroDivisionError("y는 0이 아닌 수이어야 합니다.") print(divideS1(10, 2))
5.0
divideS1(10, 0)
--------------------------------------------------------------------------- |
ZeroDivisionError Traceback (most recent call last) |
c:\Users\pyNote2.ipynb 셀 3 in <cell line: 1>() |
----> 1 divideS1(10, 0) |
c:\Users\pyNote2.ipynb 셀 3 in divideS1(x, y) |
4 return(re) |
5 else: |
----> 6 raise ZeroDivisionError("y는 0이 아닌 수이어야 합니다.") |
ZeroDivisionError: y는 0이 아닌 수이어야 합니다. |
- global: 함수 외부에서 작동되는 변수를 정의할 때 사용
- local: 함수 내부에서만 작동되는 변수를 정의
- in
- 시퀀스 객체내에 포함된 원소를 확인할 경우 사용
- for loop에서 객체의 원소를 호출할 경우 사용
x=[10,2, 17, 1, 3] 5 in x
False
1 in x
True
for i in x: print(i, end=" ")
10 2 17 1 3
- is
- 두 객체의 동일성을 판단하기 위해 사용
- 연산자 '=='와 유사하지만 이 기호는 두 객체의 값이 동일함을 체크
- 'is'는 두 객체가 동일한 객체를 참조는지를 체크
x=1 y=x id(x)
94776335057664
id(y)
94776335057664
x is y
True
x == y
True
id([1,2,3])
139666647964320
id([1,2,3])
139666648360272
[1,2,3] is [1,2,3]
False
[1,2,3] == [1,2,3]
True
위 코드에서 두 리스트를 비교하는 경우 동일한 값의 결과인 "=="연산 결과는 True가 반환됩니다. 그러나 id()함수로 검사한 두 리스트 객체의 저장 위치는 같지 않습니니다. 저장위치가 다르다는 것은 각 리스트가 참조하는 위치가 다르다는 것을 의미하므로 "is"에서는 False를 반환합니다.
다음 b는 리스트는 a를 얕은 복사를 한 것입니다. 그러므로 두 리스트의 원소는 같지만 참조가 다릅니다.
import copy a
[1, 2, 30]
b=copy.copy(a);b
[1, 2, 30]
id(a), id(b)
(139666766824464, 139666657197104)
a==b
True
a is b
False
- return
- return문을 나타내기 위한 키워드
- 함수에서 결과를 반환
- 함수를 종결시킴
- yield
- generator에서 값을 차례로 값을 반환하기 위해 사용
def squareGen(x): for i in range(x): yield 2**i x1=squareGen(3);x1
<generator object squareGen at 0x0000025B6C1C4F20>
next(x1)
2
next(x1)
1
next(x1)
4
next(x1)
--------------------------------------------------------------------------- |
StopIteration Traceback (most recent call last) |
c:\Users\\pyNote2.ipynb 셀 6 in <cell line: 1>() |
----> 1 next(x1) |
StopIteration: |
이름 규칙
인식자 : 클래스, 함수, 변수 등과 같은 객체에 부여하는 이름
기본적으로 파이썬은 소문자와 대문자를 구분합니다. 이 규칙을 포함하여 이름을 작성할 경우 다음과 같은 규칙이 존재합니다.
- 영문 소문자 또는 영문자, 수, undersscore('_')를 사용할 수 있습니다.
- 숫자로 시작할 수 없습니다.
- 키워드는 사용할 수 없습니다.
- !, @, #, $, %등의 특수문자는 사용할 수 없습니다.
댓글
댓글 쓰기