# Back from Clojure Part 1: Python

DevFeed: [Back from Clojure Part 1: Python](<https://devfeed.tech/articles/back-from-clojure-part-1-python-32095.md>)

Original publisher: [Read original article](<https://adambard.com/blog/back-from-clojure-python/>)

Published: 2014-12-01T00:00:00Z

Content type: tutorial

Language: en

Sources: [Adam Bard](<https://devfeed.tech/sources/adam-bard.md>)

Topics: [Clojure](<https://devfeed.tech/topics/clojure.md>), [Python](<https://devfeed.tech/topics/python.md>), [Refactoring](<https://devfeed.tech/topics/refactoring.md>), [Functional programming](<https://devfeed.tech/topics/functional-programming.md>), [Library](<https://devfeed.tech/topics/library.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [article](<https://devfeed.tech/tags/article.md>), [clojure](<https://devfeed.tech/tags/clojure.md>), [code](<https://devfeed.tech/tags/code.md>), [functional-programming](<https://devfeed.tech/tags/functional-programming.md>), [library](<https://devfeed.tech/tags/library.md>), [python](<https://devfeed.tech/tags/python.md>), [refactoring](<https://devfeed.tech/tags/refactoring.md>)

## AI overview

This tutorial begins a series on applying ideas from Clojure and functional programming to other dynamic languages. Part 1 refactors an existing Python library toward functional and immutable design, using data-oriented principles and explicit ground rules.

## Source excerpt

One of my favorite genres of article to write are the ones that involve refactoring some code to make it more functional, and (hopefully) improve it on the way. With that in mind, I've decided to embark on a tour of some of the things users of other popular dynamic languages can take away from the ideas behind Clojure, even if they never use it themselves. Today, I'll be taking an old Python library I wrote and refactoring it to fit a few ground rules.