Handling 3 operands in an expression without raising an exception
Νίκος
nikos.gr33k at gmail.com
Sat Sep 28 09:23:53 EDT 2013
Στις 28/9/2013 1:19 μμ, ο/η Chris Angelico έγραψε:
> On Sat, Sep 28, 2013 at 7:33 PM, Νίκος <nikos.gr33k at gmail.com> wrote:
>> It woould be nice if we could write it as:
>>
>>
>> ipval = ( os.environ.get('HTTP_CF_CONNECTING_IP') or
>> os.environ.get('REMOTE_ADDR', "Cannot Resolve") )
>> try:
>> gi = pygeoip.GeoIP('/usr/local/share/GeoIPCity.dat')
>> city = gi.time_zone_by_addr( ipval )
>> host = socket.gethostbyaddr( ipval ) [0]
>> except socket.gaierror as e:
>> if city failed assign to it "Άγνωστη Πόλη" while if host failed
>> assign it "Άγνωστη Προέλευση"
>>
>> but without an if statement and in 1 single line.
>
> [ROLL] Rosuav rolls his eyes: 1, 1, totalling 2.
>
> Then split your try blocks! You've already been told this.
>
> ChrisA
>
No we didn't have said this. if you are referring to this:
ipval = ( os.environ.get('HTTP_CF_CONNECTING_IP') or
os.environ.get('REMOTE_ADDR', "Cannot Resolve") )
city = "Άγνωστη Πόλη"
host = "Άγνωστη Προέλευση"
try:
gi = pygeoip.GeoIP('/usr/local/share/GeoIPCity.dat')
city = gi.time_zone_by_addr( ipval )
host = socket.gethostbyaddr( ipval ) [0]
except socket.gaierror as e:
print( "metrites.py => (%s): " % lastvisit, repr( sys.exc_info() ),
file=open('/tmp/err.out', 'w') )
this is not the case, because we want the string to beassigned to the
variables in the except clause not before the try/except block.
And in 1-liner after the except: too, and value must take only which var
has failed to be assigned one from within try.
More information about the Python-list
mailing list