파이썬 퀸

Zeeshan Afridi 2023년6월21일
  1. Python Quine 실행
  2. 결론
파이썬 퀸

Quine은 소스 코드를 출력으로 생성하는 컴퓨터 프로그램입니다. 프로그램은 입력을 받지 않고 소스 코드의 복사본을 출력합니다.

Quines는 입력을 기반으로 출력을 생성하는 프로그래밍의 목적을 무시하는 것처럼 보인다는 점에서 흥미롭습니다. Quines는 프로그램의 소스 코드 사본을 생성해야 하는 경우와 같은 특정 상황에서 유용할 수 있습니다.

Python Quine 실행

Quine을 만드는 것은 특별히 어렵지는 않지만 약간의 생각이 필요합니다. 기본 아이디어는 프로그래밍 언어의 내장 기능을 사용하여 프로그램의 소스 코드를 출력하는 것입니다.

Python에서는 내장 repr 기능을 사용하여 주어진 객체의 소스 코드를 출력할 수 있습니다.

물론 단순히 프로그램의 소스 코드에서 repr을 호출하는 것은 유효한 Quine을 생성하지 않습니다. 출력에는 repr 함수 자체도 포함되기 때문입니다. 이 문제를 해결하기 위해 약간의 속임수를 사용하여 repr 프로세스를 포함하지 않는 자체 참조 문자열을 만들 수 있습니다.

자체 참조 문자열이 있으면 이를 인쇄하여 유효한 Quine을 생성할 수 있습니다. 그게 전부입니다! 짧은 코드만으로 소스 코드의 복사본으로 프로그램을 만들 수 있습니다.

코드 예:

print((lambda s: s % s)("print((lambda s:s%%s)(%r))"))
print((_ := "print((_:=%r)%%_)") % _)
exec(s := 'print("exec(s:=%r)"%s)')

출력:

print((lambda s:s%s)('print((lambda s:s%%s)(%r))'))
print((_:='print((_:=%r)%%_)')%_)
exec(s:='print("exec(s:=%r)"%s)')

결론

Quine은 소스 코드의 출력을 생성하는 데 사용되는 프로그램입니다. 이름은 말 그대로 무언가를 반복한다는 의미의 “quote"라는 단어에서 유래했습니다.

Quines는 자체 참조 코드를 처리하는 프로그래밍 언어의 능력을 테스트하는 데 사용됩니다. Python에서 Quine은 비교적 작성하기 쉽습니다.

알아야 할 것은 코드를 따옴표로 묶은 다음 print 문을 사용하여 코드를 출력하는 것입니다.

Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn