Какой код эквивалентен предложению в Python ниже? - PullRequest
1 голос
/ 06 августа 2011
post_data = None if post_args is None else urllib.urlencode(post_args)

Я не могу понять, что на самом деле делает этот код.Любая помощь?

Спасибо.

Ответы [ 2 ]

4 голосов
/ 06 августа 2011
post_data = None if post_args is None else urllib.urlencode(post_args)

эквивалентно следующему:

if post_args is None:
    post_data = None 
else: 
    post_data = urllib.urlencode(post_args)
2 голосов
/ 06 августа 2011

Это условное выражение , введенное в Python 2.5.(Это действительно должно быть в одной строке).

Он делает именно то, что читает - post_data равно None, если post_args is None, в противном случае ему присваивается результат urllib.urlencode(post_args). * 1009.*

Более подробный способ написания:

if post_args is None:
    post_data = None
else:
    post_data = urllib.urlencode(post_args)

или, используя и / или трюк :

post_data = (post_args is None and [None] or [urllib.urlencode(post_args)])[0]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...