私はURLから渡された値を次のように取得しています:
user_data = {}
if (request.args.get('title')) :
user_data['title'] =request.args.get('title')
if(request.args.get('limit')) :
user_data['limit'] = request.args.get('limit')
それからそれを使用して
if 'limit' in user_data :
limit = user_data['limit']
conditions['id'] = {'id':1}
int(limit)
print type(limit)
data = db.entry.find(conditions).limit(limit)
それは印刷します:<type 'unicode'>
しかし、type
のlimit
をunicode
として取得し続けると、クエリからエラーが発生します!! Unicodeをintに変換していますが、なぜ変換しないのですか?助けてください!!!
int(limit)
は、整数に変換された値を返し、関数を呼び出すときに値を変更しません(期待どおりです)。
代わりにこれを行います:
limit = int(limit)
または、limit
を定義する場合:
if 'limit' in user_data :
limit = int(user_data['limit'])
Pythonでは、整数と文字列は 不変 であり、 値渡し です。文字列または整数を関数に渡し、引数が変更されることを期待することはできません。
したがって、文字列limit="100"
を数値に変換するには、以下を行う必要があります
limit = int(limit) # will return new object (integer) and assign to "limit"
あなたが本当にそれを回避したい場合は、リストを使用できます。リストはPythonで変更可能です。リストを渡すときは、コピーではなく、参照を渡します。だからあなたができる:
def int_in_place(mutable):
mutable[0] = int(mutable[0])
mutable = ["1000"]
int_in_place(mutable)
# now mutable is a list with a single integer
ただし、実際には必要ないはずです。 (おそらく、再帰を使用して、いくつかの可変状態を渡す必要がある場合)。