최근에 파이썬 생성기를 조금 실험 해 보았습니다. 다음과 같은 호기심 많은 행동을 보았습니다. 왜 이런 일이 벌어지고 어떤 일이 벌어지는 지 궁금합니다.Python - 호기심/예기치 않은 동작 - 연산자의 우선 순위
def generating_test(n):
for a in range(n):
yield "a squared is %s" % a*a # Notice instead of a**2 we have written a*a
for asquare in generating_test(3):
print asquare
출력 :
a squared is 1
a squared is 2a squared is 2
예상 출력을 생성하는 다음 스크립트 대 :
def generating_test(n):
for a in range(n):
yield "a squared is %s" % a**2 # we use the correct a**2 here
for asquare in generating_test(3):
print asquare
을
출력 :이 발전기와 아무 상관이없는
a squared is 0
a squared is 1
a squared is 4
따로 : 실제로 정수를 포맷하려면'% s'이 아니라'% d'을 사용하십시오. – kojiro
또는 새로운'format' 구문을 사용하십시오. 내가 처음 보았을 때 조금 길다는 생각이 들었지만 나는 그것을 좋아하게되었다. – DSM
동료가 한 번 말했듯이, * 항상 * '%'다음에 튜플을 사용하십시오. – chepner