Batchnorm layers contain trainable parameters (weight and bias), if affine=True (default), as well as running estimates (running_mean and running_var).
bn.train()/eval() changes the behavior of the running estimates. The affine parameters will not be changed by it.