Gần đây tôi đã thử nghiệm với máy tạo python một chút, và tôi đã xem xét hành vi tò mò sau đây, và tôi tò mò muốn hiểu tại sao điều này xảy ra và những gì đang diễn ra:Python - hành vi tò mò/bất ngờ - ưu tiên của các nhà khai thác
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
Output:
a squared is 1
a squared is 2a squared is 2
so với kịch bản sau đó tạo ra kết quả mong muốn:
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
Output:
a squared is 0
a squared is 1
a squared is 4
sang một bên: Nếu bạn thực sự định dạng một số nguyên, hãy sử dụng '% d', không phải'% s'. – kojiro
Hoặc nắm lấy cú pháp 'định dạng' mới. Tôi nghĩ rằng nó đã được một chút dài khi tôi lần đầu tiên nhìn thấy nó, nhưng tôi đã phát triển để thích nó. – DSM
Là một đồng nghiệp đã từng nói với tôi, * luôn * sử dụng một bộ dữ liệu sau '%' – chepner