Coding & Programming/Python 기초(A-Z)

[Python:파이썬:기초] 21-6. 내장 함수: compile, complex, setattr, getattr, delattr, hasattr 함수 예제

mainCodes 2021. 6. 21. 21:58

[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()함수로 실행할수 있음
= 31
sourcecode = compile("m = m + 20""<string>""single")
exec(sourcecode)  # m = m +20 -> m = 31 + 20의 코드실행
print("exec() 코드실행 후 m의 값 = ", m) #m은 51
 
#eval: :하나의 식을 컴파일
= 30
sourcecode = compile("m + 10""<string>""eval")
= eval(sourcecode)
print("eval() 코드실행 후 m의 값 = ", m)
 
#exec: :여러 구문을 컴파일
m=''
= 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였습니다 (•̀ᴗ•́)و