The reference implementation of Python, CPython was indeed written in C, but saying that Python is written in C is an oversimplification:

  • There are implementations written in other languages, like Jython (written in Java), IronPython (written in C#), PyPy (writen in Python), CLPython (written in Common Lisp), Psyco (also written in C), Stackless Python (written in C and Python) and Unladen Swallow (written in C++)
  • Although the CPython interpreter is written in C, it is possible to write modules for it in C++ or Cython (not to be confused with CPython), as well as C
  • What language a language's interpreter is written in is only important if you want to write modules / extensions to the interpreter itself, it has nothing to do with the language

Several languages (like Java, PHP, C# and others) are referred to as belonging to the C family, that has nothing to do with what language tools (compilers, interpreters) for said languages are written in but it means that they have very similar syntax to C. Python's syntax is very different from C, not only does it not belong to the C family, its actually quite far from it.

Apart from the CPython interpreter, the only other relation that Python has to C is that they are both multi-purpose, multi-paradigm programming languages.

Whichever one you choose to learn first will greatly help you learn the other one, and that's true for every programming language, as the one you learn first will introduce you to programming concepts and ways of thinking that are common in every language.

Python is generally regarded as a higher level language, whereas C as a lower level language, meaning that Python is closer to what we humans consider friendly and C closer to what the machine considers friendly, so Python is a little bit easier for beginners to start with.

Answer from yannis on Stack Exchange
🌐
Reddit
reddit.com › r/c_programming › how hard is it going to be to learn c after python ?
r/C_Programming on Reddit: How hard is it going to be to learn C after python ?
August 2, 2020 -

So i already did a Python course like 1/2 and I'm repeating it As a second programming language , i read on the web that I have to learn C to kind of have a good grasp of what's going on on the lower level

🌐
University of Toronto
cs.toronto.edu › ~patitsas › cs190 › c_for_python.html
C for Python Programmers
C's “influence on Python is considerable,” in the words of Python's inventor, Guido van Rossum (“An Introduction to Python for UNIX/C Programmers,” 1993). So learning Python is a good first step toward learning C.
🌐
Real Python
realpython.com › c-for-python-programmers
C for Python Programmers – Real Python
March 18, 2026 - In this tutorial, you'll learn the basics of the C language, which is used in the source code for CPython, the most popular Python implementation. Learning C is important for Python programmers interested in contributing to CPython.
🌐
Quora
quora.com › What-are-the-best-way-to-learn-Python-for-C-Programmers
What are the best way to learn Python for C Programmers? - Quora
Answer (1 of 5): My advice is going to seem a little odd. Pretend you don’t know anything about coding. While the reference implementation of Python is written in C; and while its creators and maintainers all know C and C has had some influence in Python’s design and implementation …
Top answer
1 of 4
17

The reference implementation of Python, CPython was indeed written in C, but saying that Python is written in C is an oversimplification:

  • There are implementations written in other languages, like Jython (written in Java), IronPython (written in C#), PyPy (writen in Python), CLPython (written in Common Lisp), Psyco (also written in C), Stackless Python (written in C and Python) and Unladen Swallow (written in C++)
  • Although the CPython interpreter is written in C, it is possible to write modules for it in C++ or Cython (not to be confused with CPython), as well as C
  • What language a language's interpreter is written in is only important if you want to write modules / extensions to the interpreter itself, it has nothing to do with the language

Several languages (like Java, PHP, C# and others) are referred to as belonging to the C family, that has nothing to do with what language tools (compilers, interpreters) for said languages are written in but it means that they have very similar syntax to C. Python's syntax is very different from C, not only does it not belong to the C family, its actually quite far from it.

Apart from the CPython interpreter, the only other relation that Python has to C is that they are both multi-purpose, multi-paradigm programming languages.

Whichever one you choose to learn first will greatly help you learn the other one, and that's true for every programming language, as the one you learn first will introduce you to programming concepts and ways of thinking that are common in every language.

Python is generally regarded as a higher level language, whereas C as a lower level language, meaning that Python is closer to what we humans consider friendly and C closer to what the machine considers friendly, so Python is a little bit easier for beginners to start with.

2 of 4
11

Python syntax is nothing like that of C. So having prior knowledge of C really has nothing to do with how well you will learn python. Just because under the hood there is C code doesn't mean that you will learn python any quicker because you know C. As a python programmer you are dealing with the syntax of python not C.

Top answer
1 of 7
31

I knew C before I knew Python. No offence intended, but I don't think that your C knowledge is that big a deal. Unless you read very, very slowly, just set out to learn Python. It won't take that long to skim through the material you're familiar with, and it's not as if a Python tutorial aimed at C programmers will make you a better Python programmer - it might teach you things in a different order, is all, and raise some specific things that you would do in C but that you should not do in Python.

Strings in Python actually are somewhat different from strings in C, and they're used differently. I strongly recommend learning them "from scratch", rather than thinking about them in terms of their differences from C strings. For one thing, in Python 2 it's best not to use Python's "string" class to represent strings: there's a separate unicode string class and for practical Python apps (pretty much anything involving user data), you need that. (Python 3 fixes this, making the str class a unicode string). You need to establish a good working practice for unicode/byte data and decode/encode.

A common mistake when learning a second programming language, is to think "I know how to program, I just need to translate what I do in C into Python". No, you don't. While it's true that an algorithm can be basically the same in different languages, the natural way to do a particular thing can be completely different in different languages. You will write better Python code if you learn to use Python idiomatically, than if you try to write Python like a C programmer. Many of the "tricks" you know that make sense in C will be either pointless or counter-productive in Python. Conversely many things that you should do happily in a typical Python program, like allocating and freeing a lot of memory, are things that in C you've probably learned to think twice about. Partly because the typical C program has different restrictions from the typical Python program, and partly because you just have to write more code and think harder to get that kind of thing right in C than you do in Python.

If you're learning the language because you urgently need to program a system/platform which has Python but doesn't have C, then writing Python programs that work like C programs is a reasonable interim measure. But that probably doesn't apply to you, and even if it did it's not the ultimate goal.

One thing you might be interested to look at because of your C experience, is the Python/C API. Python is great for many things, but it doesn't result in the fastest possible computational core of scientific apps [neither does C, probably, but let's not go into FORTRAN for now ;-)]. So if you're aiming to continue with scientific programming through your move in Python, and your programs are typically memory-bus- and CPU-bound doing immense amounts of number-crunching (billions of ops), then you might like to know how to escape into C if you ever need to. Consider it a last resort, though.

You do need to understand Python reasonably well before the Python/C API makes much sense, though.

Oh yes, and if you want to understand OOP in general, remember later on to take a look at something like Java, Objective-C, C++, or D. Python isn't just an OO language, it's a dynamic OO language. You might not realise it from comparing just C with Python, but dynamic vs static types is a completely independent issue from the OOP-ness of Python. Python objects are like hashtables that allow you to attach new fields willy-nilly, but objects in many other OO languages store data in ways which are much more like a C struct.

2 of 7
15

I learned everything I know about Python from the official documentation: http://docs.python.org/

And it's free.

🌐
Hacker News
news.ycombinator.com › item
Ask HN: Is it worth it to learn C to better understand Python? | Hacker News
February 3, 2022 - For instance, when you only need to write two curly braces to create a “dictionary” (of course behind the scenes this is a hash table) many of the nuances of that data structure are hidden from you. You have no idea that accesses are O(1) amortized but worst case are O(n). Even if you do, ...
Find elsewhere
🌐
Quora
cstdspace.quora.com › Should-I-learn-either-Python-or-C-first
Should I learn either Python or C first? - C Programmers - Quora
Answer (1 of 24): When people on Quora ask questions along the lines of “what computer programming language(s) should I learn first?”, my answer is invariably always the same, because the “first” implies that they intend to learn multiple languages, which implies that they want to program ...
🌐
Quora
quora.com › If-I-know-Python-can-I-learn-C-programming-quickly
If I know Python, can I learn C programming quickly? - Quora
Answer (1 of 8): It depends(tm) on what you mean by “quickly”. In favor: * Both are imperative programming languages and share commonalities such as sequences, conditionals, iterations, functional abstraction, types, arithmetic. Counterarguments: * Python is object-oriented, C is not. * Pyt...
🌐
Sololearn
sololearn.com › en › Discuss › 1695126 › is-c-language-is-basic-to-learn-python-
Is c language is basic to learn python
Sololearn is the world's largest community of people learning to code. With over 25 programming courses, choose from thousands of topics to learn how to code, brush up your programming knowledge, upskill your technical ability, or stay informed about the latest trends.
🌐
Medium
medium.com › tech-learners › is-c-programming-knowledge-is-a-must-to-learn-python-programming-language-972953988a66
Is C Programming Knowledge A Must To Learn Python or Any Other Programming Languages? | by Muhammad Sakib Khan Inan | TechLearners | Medium
March 23, 2022 - Nowadays, there is an ongoing myth among some people, who are complete beginners in the programming world or coding world that without learning languages like “C” or basically “C”, you won’t be able to learn modern high-level programming languages like “Python” well.
🌐
Sololearn
sololearn.com › en › Discuss › 1695126 › is-c-language-is-basic-to-learn-python
Is c language is basic to learn python | Sololearn: Learn to code for FREE!
It is supposed to be an opposite and make a fast learning environment, unlike C. ... From a beginner to a beginner: Yes you can. I must admit I had some basic understanding of C++ before I started off with python but I must tell you that Python is a much easier language to understand than C or C++ and much more can be accomplished with it with lesser code and therefore lesser development time.
🌐
Udemy
udemy.com › development
Python Programming for C and C++ Developers
February 22, 2026 - With its elegant syntax, vast libraries, and real-world applications, Python is used everywhere—from AI startups to automation tools, web development, and data science. This course, Learn Python After C/C++, is designed specifically for developers ...
Rating: 4.7 ​ - ​ 36 votes
🌐
CodeConvert AI
codeconvert.ai › home › convert from python › python to c converter
Free Python to C Converter - AI Code Translation | CodeConvert AI
Python and C differ in syntax, type system, standard libraries, and common idioms, so copying code line for line usually will not compile. The converter maps each Python construct to its closest C equivalent.
🌐
Coursera
coursera.org › coursera articles › computer science and engineering › software development › python vs. c++: which to learn and where to start
Python vs. C++: Which to Learn and Where to Start | Coursera
February 21, 2026 - Python excels at web development ... and game development. You can learn how to use either programming language via a combination of self-learning, instructor-guided courses, and certificate programs....