Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to avoid writing request.GET.get() twice in order to print it?

I come from a PHP background and would like to know if there's a way to do this in Python.

In PHP you can kill 2 birds with one stone like this:

Instead of:

if(getData()){     $data = getData();     echo $data; } 

I can do this:

if($data = getData()){     echo $data; } 

You check to see if getData() exists AND if it does, you assign it to a variable in one statement.

I wanted to know if there's a way to do this in Python? So instead of doing this:

if request.GET.get('q'):     q = request.GET.get('q')     print q 

avoid writing request.GET.get('q') twice.

like image 907
givp Avatar asked Nov 02 '09 21:11

givp


People also ask

What does requests get () do?

The get() method sends a GET request to the specified url.

What is returned by request GET GET method?

get() method is a method used for dictionaries. What your snippet of code is doing is saying, "Get the value of a GET variable with name 'page', and if it doesn't exist, return 1". Likewise, you will see request. POST used when a user submits a form.


2 Answers

See my 8-year-old recipe here for just this task.

# In Python, you can't code "if x=foo():" -- assignment is a statement, thus # you can't fit it into an expression, as needed for conditions of if and # while statements, &c.  No problem, if you just structure your code around # this.  But sometimes you're transliterating C, or Perl, or ..., and you'd # like your transliteration to be structurally close to the original. # # No problem, again!  One tiny, simple utility class makes it easy...:  class DataHolder:     def __init__(self, value=None): self.value = value     def set(self, value): self.value = value; return value     def get(self): return self.value # optional but handy, if you use this a lot, either or both of: setattr(__builtins__,'DataHolder',DataHolder) setattr(__builtins__,'data',DataHolder())  # and now, assign-and-set to your heart's content: rather than Pythonic while 1:     line = file.readline()     if not line: break     process(line) # or better in modern Python, but quite far from C-like idioms: for line in file.xreadlines():     process(line) # you CAN have your C-like code-structure intact in transliteration: while data.set(file.readline()):     process(data.get()) 
like image 198
Alex Martelli Avatar answered Oct 06 '22 04:10

Alex Martelli


Probably not exactly what you were thinking, but...

q = request.GET.get('q') if q:     print q 

this?

like image 37
Amber Avatar answered Oct 06 '22 04:10

Amber