Files
oam/knowledge base/python.md

3.5 KiB

Python

  1. TL,DR
  2. Web servers
    1. Flask
    2. WSGI server
  3. Further readings

TL,DR

# String formatting with f-strings.
f"Hello, {name}. You are {age}."
F"{name.lower()} is funny."

# Make elements in a list unique.
# Keep the resulting list mutable.
unique_list = list(set(redundant_list))

Maintenance:

# Generate a list of the outdated packages.
pip list --outdated

# Upgrade all packages.
pip install --requirement <(pip freeze | sed 's/==/>=/') --upgrade

# Remove orphaned dependencies.
# Requires `pip-autoremove`.
pip-autoremove

# Upgrade the included `pip` executable on Mac OS X.
~/Library/Python/3.8/bin/pip3 install --user --upgrade pip

Web servers

Flask

  • request.args gets query arguments
  • request.form gets POST arguments
from flask import request, jsonify

@app.route('/get/questions/', methods=['GET', 'POST','DELETE', 'PATCH'])
def question():
    if request.method == 'GET':
        start = request.args.get('start', default=0, type=int)
        limit_url = request.args.get('limit', default=20, type=int)
        data = [doc for doc in questions]
        return jsonify(
            isError = False,
            message = "Success",
            statusCode = 200,
            data= data
        ), 200
    if request.method == 'POST':
        question = request.form.get('question')
        topics = request.form.get('topics')
        return jsonify(
            isError = True,
            message = "Conflict",
            statusCode = 409,
            data = data
        ), 409

WSGI server

You can use waitress:

from flask import Flask

app = Flask(__name__)

@app.route("/")
def index():
    return "<h1>Hello!</h1>"

if __name__ == "__main__":
    from waitress import serve
    serve(app, host="0.0.0.0", port=8080)
pip install flask waitress
python hello.py

Further readings