Basic python is likely to run out of memory if you have a large image. I therefore recommand that you use gdal or OTB. You will need to install the apps, but they will manage the memory better than Pyhon (I don't say that it is not possible to manage the memory with Python, but you'll need more skills).
Since my previous post, OTB has a new band calculator with a much easier syntax for this kind of work, BandMathX. The OTB applications can be installed on all operating system and embedded in Python if you like, but here is the command line to give you the syntax (I don't know what is your working environment).
otbcli_BandMathX -il "your_multi_band_image" -out "your_output_mean"
-exp "mean(im1)"
otbcli_BandMathX -il "your_multi_band_image" -out "your_output_mean"
-exp "var(im1)"
In this syntax, there can be multiple images listed in "-il", so "im1" means that you work on the first image (operations are determined at the pixel level) for all bands (you can use a selected band with its index, e.g. im1b4 would be the fourth band of the first image in your list).
if your output is a large file, you should use extended filenames to optimize the storage, e.g. your_output.tif?&gdal:co:COMPRESS=LZW&gdal:co:TILED=YES&gdal:co:BIGTIFF=YES"