哪一种是正确的语法?

时间:2019-10-13 14:58:12

标签: python syntax

此处是初学者程序员。我正在编写一个简单的程序来显示我的计算机的本地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 :(得分:0)

我要说第一个。始终返回string的好处是,如果不返回,则抛出异常。这是一种可预见的行为。这意味着更容易记录文档,并且无法访问您的源代码的人可以理解和使用FetchExternalAddress()方法。

只要您正确记录了表明方法返回一个string并在未检测到有效的Internet连接时抛出Exception的方法即可。

您还应避免在方法中出现诸如print("No internet connection")之类的副作用,因为这可能会给用户带来意外的打印结果。