Какой из них является правильным синтаксисом? - PullRequest
1 голос
/ 13 октября 2019

Начинающий программист здесь. Я делаю простую программу для отображения локального IP-адреса моих компьютеров и внешнего IP-адреса моей сети. Это действительно не проблема, а скорее вопрос.

Итак, какой из этих форматов является предпочтительным синтаксисом?

1.

# -*- coding: utf-8 -*-

from socket import gethostname, gethostbyname
from requests import get
from requests.exceptions import ConnectionError

def FetchLocalAddress():
    hostname = gethostname()
    ip = gethostbyname(hostname)
    return ip

def FetchExternalAddress():
    ip = get('https://api.ipify.org').text
    return ip

try:
    print('Local ip-address: {}'.format(str(FetchLocalAddress())))
    print('External ip-address: {}'.format(str(FetchExternalAddress())))
except ConnectionError:
    print('No internet connection.')

2.

# -*- coding: utf-8 -*-

from socket import gethostname, gethostbyname
from requests import get
from requests.exceptions import ConnectionError

def FetchLocalAddress():
    hostname = gethostname()
    ip = gethostbyname(hostname)
    return ip

def FetchExternalAddress():
    try:
        ip = get('https://api.ipify.org').text
        return ip
    except ConnectionError:
        print('No internet connection.')

print('Local ip-address: {}'.format(str(FetchLocalAddress())))
external = FetchExternalAddress()
if external is not None:
    print('External ip-address: {}'.format(str(external)))

Заранее спасибо.

1 Ответ

0 голосов
/ 13 октября 2019

Я бы сказал, первый. У него есть преимущество, которое всегда возвращает string, а если нет, выдает исключение. Это предсказуемое и понятное поведение. Это означает, что легче документировать, и что кто-то, не имеющий доступа к вашему исходному коду, может понять и использовать метод FetchExternalAddress().

Пока вы правильно документируете свой метод, указывая, что он возвращает string иВыдает Exception, если действительное подключение к Интернету не обнаружено.

Вам также следует избегать побочных эффектов, таких как print("No internet connection"), в вашем методе, поскольку это может привести к неожиданным выводам на печать пользователю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...