2016-03-20 11 views
0

Bir API'yi çağırmak için Python requests kitaplığını kullanıyorum ve yaptığım her isteğe bir argüman (&t=abcd) eklemek istiyorum.Python isteklerini kullanarak tüm çağrıların url'sine bir argüman pythonically nasıl eklenir

import requests 
def callTheApi(url): 
    return requests.get(url, params={'t': 'abcd'}) 

ama nedense belki bir dekoratör falan kullanarak, bunu yapmak için daha temiz ve daha pythonic yol olduğunu fikrim yok: Tabii bir fonksiyonu böyle yapabilirsiniz. Kimse nasıl biliyor mu?

+3

Eğer 'kabul functools.partial', ya da sadece mı Basit bir sarıcı işlevi? – jonrsharpe

+0

Yani başka param parazitleri de olabilir mi? – schwobaseggl

+0

Elbette, 'requests.get = my_decorator (requests.get)' ifadesini yeniden atayabilirsiniz, ancak sorunuzdan örnek almak çok daha mantıklı. Standart kütüphaneyi de-factolamak için başka bir işlevi yeniden bağlamak, bir kod okuyan herkesi yanıltacak ve onları yanlış yönlendirecektir. Her şeyden önce - açık, örtük olmaktan iyidir. İkincisi, istekleri kullanan ve bu ekstra parametreyi gerektirmeyen herhangi bir ek kod sadece kırılacaktır. –

cevap

1

Sen functools.partial kullanabilirsiniz:

from functools import partial 
import requests  
call_the_api = partial(requests.get, params={"t": "abcd"})) 
call_the_api(url) 

Ayrıca/uzatmak başlangıç ​​olanları, geçersiz kılmak için ek anahtar kelime argümanlar iletebilirsiniz mesela:

call_the_api(url, params={"t": "efgh"}) 
İlgili konular