Doubt with few lines of code

i am unable to get why we are writing @tf.function over total_cost() and train_step() in neural art generation assignment.
secondly i am unable to get why we have defined the style matrix of style image as tf.variable and same is the case with the content matrix of content matrix
please help me

Several part answer:

Regarding the @ symbol:

Regarding tf.function() - it causes the following function to be compiled as a TensorFlow graph.

Regarding tf.Variable() - it creates a persistent state within a program:

thank u very much sir