Сегодня я наткнулся на этот ответ , который определяет функцию после определения системной платформы.
Я всегда предполагал (точнее, никогда по-настоящему не считал иначе) что условие для определения правильного поведения для кроссплатформенных функций должно быть помещено внутри определения.
import subprocess
import sys
def show_file(path):
if sys.platform == "darwin":
subprocess.check_call(["open", "--", path])
elif sys.platform == "linux":
subprocess.check_call(["xdg-open", "--", path])
elif sys.platform == "win32":
subprocess.check_call(["explorer", "/select", path])
Мне любопытно, эффективнее ли это сделать так @ Dietrich Epp имеет?
if sys.platform == "darwin":
def show_file(path):
subprocess.check_call(["open", "--", path])
elif sys.platform == "linux":
def show_file(path):
subprocess.check_call(["xdg-open", "--", path])
elif sys.platform == "win32":
def show_file(path):
subprocess.check_call(["explorer", "/select", path])
Я понятия не имею, работает ли какой-либо из приведенных выше фрагментов, но это на самом деле не является частью вопроса.