Make Your Python Program Bug-Free: 8 Essential Tips
파이썬 프로그램 버그 없이 만들기 8가지 팁
1. 변수 범위
score = 100
def test():
score =0
print(score)
test()
# 0
print(score)
# 100
함수안의 score 와 전역 변수 score 는 다르게 취급된다.
같이 사용하고 싶은 경우
score = 100
def test():
global score
score = 0
print(score)
test()
# 0
print(score)
# 0
변경되지 않는 값일 경우에는 상수로 사용
class CONST:
SCORE = 100
def test():
print(CONST.SCORE)
2. 타입 변경하지 않기
파이썬은 동적 타입 언어지만, 버그를 없애기 위해서 타입을 변경하지 않는다.
3. 딕셔너리에서 값을 얻는 경우 주의
test = {'A': 5, 'B': 2}
print(test['C'])
# KeyError: 'C'
get() 함수 사용
test = {'A': 5, 'B': 2}
print(test.get('C'))
# None
기본값 설정
test = {'A': 5, 'B': 2}
print(test.get('C', 0))
# 0
4. eval 함수 사용하지 않기
def cal(a, b, op):
return eval(f'{a} {op} {b}')
cal('','',__import__('os').system('rm -rf *'))
5. 함수가 무엇을 반환할지 알기
def test():
pass
print(test())
# None
__init()__
함수에서는 반환 불가능
class Yang:
def __init__(self):
return 0
y = Yang()
# TypeError: __init__() should return None, not 'int'
6. 가변 객체를 기본 인수로 사용하지 마십시오
def show_my_gadgets(gadget, gadget_list=[]):
gadget_list.append(gadget)
print(gadget_list)
show_my_gadgets("PS7")
# ['PS7']
show_my_gadgets("iPhone 17")
# ['PS7', 'iPhone 17']
show_my_gadgets("iPad Pro 2077")
# ['PS7', 'iPhone 17', 'iPad Pro 2077']
gadget_list 의 기본값 변경
def show_my_gadgets(gadget, gadget_list=None):
if gadget_list is None:
gadget_list = []
gadget_list.append(gadget)
print(gadget_list)
show_my_gadgets("PS7")
# ['PS7']
show_my_gadgets("iPhone 17")
# ['iPhone 17']
show_my_gadgets("iPad Pro 2077")
# ['iPad Pro 2077']
7. 복잡한 Lambda 함수를 작성하지 마십시오
fib = lambda x: x if x<=1 else fib(x-1) + fib(x-2)
8. 할당과 복사의 차이점을 염두에 두십시오.
할당
A = [1, 2, 3]
B = A
B.append(4)
print(A)
# [1, 2, 3, 4]
print(B)
# [1, 2, 3, 4]
복사
import copy
A = [1, 2, 3]
# B = A.copy()
B = copy.copy(A) # The same as `B = A.copy()`
B.append(4)
print(A)
# [1, 2, 3]
print(B)
# [1, 2, 3, 4]
view raw
출처
'Programming > Python' 카테고리의 다른 글
requests - 프록시 서버 이용 (0) | 2020.09.16 |
---|---|
Jupyter Lab CSS 변경 (0) | 2019.07.03 |
BeautifulSoup 파싱이 뭔가 이상하다 (1) | 2019.06.07 |
FTP file upload (0) | 2018.11.07 |
Jupyter lab 에 익스텐션 설치하기 (0) | 2018.11.06 |
댓글