Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Quine trong Python: chương trình in chính nó

Quine là chương trình không nhận input nhưng in ra chính source code của mình. Không được đọc file nguồn (__file__).

Quine ngắn gọn nhất Python

a='a=%r;print(a%%a)';print(a%a)

Giải thích cơ chế

  1. a = 'a=%r;print(a%%a)' – Gán chuỗi chứa code template.
  2. %r – Format repr() của chuỗi (kèm dấu nháy, escape).
  3. a%%a – Thay %r bằng repr(a), %% thành %.
  4. Kết quả: chuỗi gốc được in y hệt.

Phân tích bước a bước

a = 'a=%r;print(a%%a)'
# a = "a='a=%r;print(a%%a)';print(a%a)"

print(a % a)
# Thay %r → repr(a) = "'a=%r;print(a%%a)'"
# Kết quả: a='a=%r;print(a%%a)';print(a%a)

Quine đa dòng (đọc file - vi phạm quy tắc)

# Cách này KHÔNG phải Quine chuẩn (đọc file)
print(open(__file__).read())

Quine phức tạp hơn (có comment, docstring)

s = 's = %r\nprint(s %% s)'
print(s % s)

Ý nghĩa

  • Minh họa self-replication, recursion, fixed point.
  • Cơ sở lý thuyết: Kleene's recursion theorem.
  • Ứng dụng: code golf, obfuscation, compiler testing.