我从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,但为什么不转换?
请帮忙!!!
答案 0 :(得分:50)
int(limit)
返回转换为整数的值,并且在调用函数时不会对其进行更改(这是您期望的那样)。
请改为:
limit = int(limit)
或者在确定limit
:
if 'limit' in user_data :
limit = int(user_data['limit'])
答案 1 :(得分:7)
在python中,整数和字符串是immutable并且是passed by value。您不能将字符串或整数传递给函数,并期望修改参数。
因此,要将字符串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
但你真的不需要它。 (有时当你使用递归并需要传递一些可变状态时)。