此处是初学者程序员。我正在编写一个简单的程序来显示我的计算机的本地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)))
谢谢。
答案 0 :(得分:0)
我要说第一个。始终返回string
的好处是,如果不返回,则抛出异常。这是一种可预见的行为。这意味着更容易记录文档,并且无法访问您的源代码的人可以理解和使用FetchExternalAddress()
方法。
只要您正确记录了表明方法返回一个string
并在未检测到有效的Internet连接时抛出Exception
的方法即可。
您还应避免在方法中出现诸如print("No internet connection")
之类的副作用,因为这可能会给用户带来意外的打印结果。