My school book says that 0^0 can't be defined, while the calculator says that 0^0 = 1, which is true?

Well, the claim that it “can’t” be defined is obviously false. We can define anything we like.

The question is whether we *do* define it, and if so to what value.

And it turns out that in a wide variety of situations, it is useful to define 0^0 as equal to 1.
whichever one your current proffesor says is true.
Friendly reminder that despite public perception, not all of math is universally agreed upon.

Defining 0^0 is essentially a matter of convenience; it's useful in certain applications to have a value there. Not everyone in the math community will agree that it should be defined or what the definition should be, and it's not going to be defined in all contexts.

Your calculator is programmed by people somewhere, and whoever programmed it decided (or more likely, was told) that the calculator should return 1 when you input 0^0.

So really, they are both "true" or neither is "true" depending on your point of view. Any definition we give in math for anything is an attempt to provide a starting point from which to build useful results. Those definitions will change in different areas, even when they are generally agreed upon (example: parallel lines in euclidean vs. non-euclidean geometry).
by
> My school book says that 0^0 can't be defined

Let's see...

**Definition:** 0^0 is equal to a potato.

There.

0^0 = a potato (by definition)

It can be defined, I just did.
Depending on how you do it (by hand), 0^0 can result to 0 or 1. As I understand, it is from this contradiction that "0^0 is undefined" arises.

That said, it is often useful to define 0^0 = 1.
Generally speaking, 0^0 is undefined, but in certain circumstances we adopt the convention that 0^0 = 1 because it simplifies things.
by
There is not a general consensus.  Some authors choose for it to be 1  for the sake of convenience others leave it undefined.  I would say the best way is that it is indeterminate similar to 0/0.
I'm pretty sure it's not defined
>>> pow(0,0)
1
>>>

Python 3.10 says its 1, so as far as I'm concerned its 1
lim x->0 x^x = 1

$\lim _{x \to 0} x^x = 1$