# What is the ":" symboled mean used in this way in python

I have never seen the “:” symbol used in this way, could someone please tell me what it is and the documentation for it? in

``````    """
num_iters gradient steps with learning rate alpha

Args:
x (ndarray (m,))  : Data, m examples
y (ndarray (m,))  : target values
w_in,b_in (scalar): initial values of model parameters
alpha (float):     Learning rate
num_iters (int):   number of iterations to run gradient descent
cost_function:     function to call to produce cost

Returns:
w (scalar): Updated value of parameter after running gradient descent
b (scalar): Updated value of parameter after running gradient descent
J_history (List): History of cost values
p_history (list): History of parameters [w,b]
"""

w = copy.deepcopy(w_in) # avoid modifying global w_in
# An array to store cost J and w's at each iteration primarily for graphing later
J_history = []
p_history = []
b = b_in
w = w_in

for i in range(num_iters):
dj_dw, dj_db = gradient_function(x, y, w , b)

# Update Parameters using equation (3) above
b = b - alpha * dj_db
w = w - alpha * dj_dw

# Save cost J at each iteration
if i<100000:      # prevent resource exhaustion
J_history.append( cost_function(x, y, w , b))
p_history.append([w,b])
# Print cost every at intervals 10 times or as many iterations if < 10
if i% math.ceil(num_iters/10) == 0:
print(f"Iteration {i:4}: Cost {J_history[-1]:0.2e} ",
f"dj_dw: {dj_dw: 0.3e}, dj_db: {dj_db: 0.3e}  ",
f"w: {w: 0.3e}, b:{b: 0.5e}")

return w, b, J_history, p_history #return w and J,w history for graphing`````````

Colon guides that the lines after that needs to be indented.

Hello,

In which way? to which column you are referring to? In the code, there are different “:” used with different meanings.

Best

Sorry for not being specific,
Specifically this one

``````print(f"Iteration {i:4}: Cost {J_history[-1]:0.2e} ",
f"dj_dw: {dj_dw: 0.3e}, dj_db: {dj_db: 0.3e}  ",
f"w: {w: 0.3e}, b:{b: 0.5e}")
``````

thanks

Hello,

no problem, according to the python doc for I/O formatting:
Passing an integer after the `':'` will cause that field to be a minimum number of characters wide. This is useful for making columns line up.

basically the “:” inside the “{}” give the format you want to print the variable which precedes the “:”.