I have a simple example for this:
>>> model = nn.Linear(4, 2)
>>> x = torch.randn(10, 4)
>>> y = torch.LongTensor([1, 0, 1, 1, 0, 1, 0, 1, 1, 1])
>>> optimizer = torch.optim.SGD(model.parameters(), lr=0.1, momentum=0.9)
>>> # compute the output
>>> out = F.log_softmax(model(x), dim=1)
>>> pre = list(model.parameters())[0]
>>> # print the parameters before update:
>>> print(pre)
Parameter containing:
tensor([[ 0.4893, -0.4020,  0.3605, -0.3534],
        [-0.3695,  0.3736,  0.1374,  0.3506]], requires_grad=True)

Now, we do the update step:
>>> optimizer.zero_grad()
>>> loss = F.nll_loss(out, y)
>>> loss.backward()
>>> optimizer.step()
>>> post = list(model.parameters())[0]
>>> print(pre)
Parameter containing:
tensor([[ 0.4812, -0.3906,  0.3314, -0.3524],
        [-0.3614,  0.3621,  0.1665,  0.3496]], requires_grad=True)
>>> print(post)
Parameter containing:
tensor([[ 0.4812, -0.3906,  0.3314, -0.3524],
        [-0.3614,  0.3621,  0.1665,  0.3496]], requires_grad=True)

So you can see that pre and post have the same values after the update step is performed, but the printed values of paramaters before the update are different.