Разница в том, что $ machinename $ возвращает имя NetBIOS, а socket.gethostname () возвращает имя хоста.Это разные вещи, хотя Windows обычно называет их одинаково.API имени хоста может технически вернуть другой результат, если вы измените основной DNS-суффикс в настройках системы Windows.(В этот момент это будет имя машины + суффикс)
Это системный уровень, а не специфический для python, как показано эквивалентными API C #:
System.Net.Dns.GetHostName() --> method would return Mark-PC
Environment.MachineName --> property would return MARK-PC