piton

2013-05-10 27 views
23
Ben url geçirilen değerleri alıyorum

yılında int Unicode verilerini dönüştürün unicode olarak limit olarak type, sorgudan bir hata yükseltir !! Unicode'u int'ye dönüştürüyorum ama neden dönüştürme yapmıyor? Lütfen yardım edin!piton

cevap

43

int(limit), bir tam sayıya dönüştürülen değeri döndürür ve işlevi çağırdığınız sırada değiştirmez (beklediğiniz gibi).

yerine bunu yapın:

limit = int(limit) 

Ya limit tanımlama, zaman:

python'da
if 'limit' in user_data : 
    limit = int(user_data['limit']) 
+0

Mantığınız var .. Teşekkürler –

+1

+1 Ve '' onu hemen değiştirmez 'anlamına gelir, yani referans olarak değiştirmez. – Jared

+0

@Jared Bunu ekleyeceğim, teşekkürler :). Benim ifademin bir şekilde mükemmel olmadığını biliyordum: p – TerryA

7

, tamsayılar ve dizeleri immutable ve passed by value bulunmaktadır. Bir dizgeyi veya tamsayıyı bir işleve geçiremezsiniz ve bağımsız değişkenin değiştirilmesini bekleyebilirsiniz.

Yani bir sayıya dize limit="100" dönüştürmek için, size bir listesini kullanabilirsiniz, sen gerçekten etrafında gitmek istiyorsanız

limit = int(limit) # will return new object (integer) and assign to "limit" 

yapmak gerekir. Listeler python'da değiştirilebilir; Bir listeyi geçtiğinizde, referans değil, kopyalamanız gerekir. Bu nedenle, aşağıdakilere ihtiyacınız olabilir: Gerçekten buna ihtiyacın olmamalıdır. (Belki de bazen yineleme ile çalışırken ve bazı değişken durumları geçmeniz gerektiğinde).