The field st_atime is changed by file accesses, for example, by execve(2), mknod(2), pipe(2), utime(2) and read(2) (of more than zero bytes). Other routines, like mmap(2), may or may not update st_atime.
While you run "python test.py", it won't call read(2), instead it would call mmap(2). That's why the access time didn't be udpated.
Here is output of "strace python test.py"
open("test.py", O_RDONLY) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=36, ...}) = 0
mmap(NULL, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ad626cdd000
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…