В программировании, замыканием ( англ. closure ) называется подпрограмма, которая выполняется в среде, содержащей одну или более связанных переменных. Во время выполнения, подпрограмма имеет доступ к этим переменным.
Применение замыканий ассоциируется с функциональным программированием, и с такими языками программирования как ML и Лисп. Такие конструкции как объекты в других языках программирования, могут моделироваться с помощью замыканий.
В некоторых языках программирования, замыкания создается для подпрограмм, которые определяются в середине других подпрограмм, и внутренняя подпрограмма имеет доступ к локальным переменным внешней подпрограммы. Во время выполнения, когда вычисляется внешняя подпрограмма, образуется замыкания, в который попадает код внутренней подпрограммы, и ссылки на те переменные внешней подпрограммы, используемые во внутренней подпрограмме.
Концепцию замыканий было полностью разработано в 1960-е годы и реализована как особенность языка программирования Scheme. С тех пор, было разработано много языков программирования с поддержкой замыканий.