[英]Save URL params as CSV file with Python and Azure Function
[英]Best way to save function params for a given URL
我有一個帶有一些必需和可選參數的端點:
必需:ID [str]
可選:name_1 [str]、regex [boolean]、ignore_case [boolean]
我想構建一個 function 來使用這個端點:
import requests
def get_function(ID, name_1=None, regex=None, ignore_case=None):
url= 'heretheurl/{ID}'.format(ID)
params = {}
if name_1 is not None:
params.update({'name_1':name_1})
if regex is not None:
params.update({'regex':regex})
if ignore_case is not None:
params.update({'ignore_case':ignore_case})
response = requests.get(url, params=params)
這是避免所有這些 IF 的更好方法嗎?
您可以使用**kwargs
以方便將參數放在字典中,而不是一堆難以處理的局部變量,然后強制只接受某些 keyward arguments ,對於其他任何事情,引發TypeError
. (您可以改為使用顯式參數列表,然后使用locals()
,但它會包含其他局部變量,因此可能會變得混亂。)
import requests
def get_function(ID, **kwargs):
supported_args = {'name_1', 'regex', 'ignore_case'}
for key in kwargs:
if key not in supported_args:
raise TypeError(f"{key} not supported")
url = 'heretheurl/{ID}'.format(ID=ID)
params = dict((k, v) for k, v in kwargs.items() if v is not None)
response = requests.get(url, params=params)
get_function("blah", name_1="stuff", ignore_case=True)
順便說一句,在url =
開頭的行中,您的format
使用錯誤(您正在混合使用關鍵字和位置參數),所以我已經糾正了這一點。
這個答案的第一個版本說如果不支持參數,則引發ValueError
,但我已將其更改為TypeError
以匹配在使用顯式參數列表時傳遞意外關鍵字參數時引發的內容。
import requests
def get_function(ID, **kwargs):
url= 'heretheurl/{ID}'.format(ID)
response = requests.get(url, params=kwargs)
我想你可以說:
for local, value in locals().items():
if value is not None:
params[local] = value
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.