[Python:파이썬:기초] 21-6. 내장 함수:
compile, complex, setattr, getattr, delattr, hasattr 함수 예제
안녕하세요 JollyTree입니다 (•̀ᴗ•́)و
■ compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1) 함수
소스코드를 코드 또는 AST(Abstrct Syntax Tree) 객체로 컴파일합니다. 컴파일된 코드 객체는 exec() 함수 또는 eval() 함수로 컴파일된 코드를 실행할 수 있습니다. 그래서 compile()함수 다음에는 exec(), eval() 함수가 동반됩니다.
■ complex(real, imaginary) 함수
실수부(real), 허수부(imaginary)를 입력하면 복소수를 반환합니다.
■ setattr(object, name, value) 함수
객체 내 속성(name)의 값을 지정한 값(value)으로 설정합니다.
■ getattr(object, name[, default]) 함수
객체 내 속성(name)의 값을 읽습니다.
■ delattr(object, name) 함수
객체 내의 지정한 속성(name)을 삭제합니다.
■ hasattr(object, name) 함수
객체 내의 속성(name) 이름이 존재하면 True, 그렇지 않으면 False를 반환합니다.
🔗 예제(Example):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
#compile: 소스코드를 코드 또는 AST(Abstrct Syntax Tree) 객체로 컴파일
#코드 객체를 exec(), eval()함수로 실행할수 있음
m = 31
sourcecode = compile("m = m + 20", "<string>", "single")
exec(sourcecode) # m = m +20 -> m = 31 + 20의 코드실행
print("exec() 코드실행 후 m의 값 = ", m) #m은 51
#eval: :하나의 식을 컴파일
m = 30
sourcecode = compile("m + 10", "<string>", "eval")
m = eval(sourcecode)
print("eval() 코드실행 후 m의 값 = ", m)
#exec: :여러 구문을 컴파일
m=''
n = 0
for i in range(5):
n = n + 1
''
sourcecode = compile(m, "<string>", "exec")
exec(sourcecode)
print("exec() 코드실행 후 n의 값 = ", n)
#complex: 복소수 반환
print("\ncomplex(2,3) = ", complex(2,3))
print("complex(1,1) = ", complex(1,1))
print("complex() = ", complex())
#hasattr, setattr, getattr, delattr 예제
class Car:
numWheels = 4
@classmethod
def printCarInfo(cls, info): #self 대신 cls 사용
print(info, "의 바퀴 수는", cls.numWheels, "개 입니다")
car = Car()
print("numWheels 변수 존재 여부 = ", hasattr(car, 'numWheels'))
setattr(car, "numHandles", 1)
print("get numHandles = ", getattr(car, "numHandles"))
print("numHandles 변수 존재 여부1 = ", hasattr(car, 'numHandles'))
print("getattr(car, \"numHandles\") = ", getattr(car, "numHandles"))
delattr(car, "numHandles") #numHandles 삭제
print("numHandles 변수 존재 여부2 = ", hasattr(car, 'numHandles'))
|
cs |
🔗 실행결과(Output):
이상 JollyTree였습니다 (•̀ᴗ•́)و