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

前端 未结 10 745
名媛妹妹
名媛妹妹 2020-12-04 21:34

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

10条回答
  •  温柔的废话
    2020-12-04 22:38

    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())
    

提交回复
热议问题