Skip to main content
 首页 » 编程设计

Python 条件运算符用法

2025年05月04日21qq号

我试图更好地理解将条件变量实现到 python 请求的 http 请求中的方法。

我正在做以下事情:

def make_post(parameter1_value, parameter2='None'): 
 
    payload = { 
        "parameter1": parameter1_value, 
        "parameter2": "None" 
    } 
 
    r = requests.post('https://myrequesturl.com/location/', params=payload) 

我正在尝试找到不在参数中包含 "parameter2": "None" 值的最佳方法,除非该值不等于 None。

我意识到我可以有几个条件语句来根据参数选择适当的请求格式,但是对于函数中所需的每个额外的 parameterN 来说,它会变得难以扩展。

我想知道是否有一种方法可以在 payload 中包含条件类型的变量,只有当它不等于默认值集时才会包含该参数;在本例中为“无”。

因此,如果 parameter2 的值 = None:

    payload = { 
        "parameter1": parameter1_value 
    } 

但如果 parameter2 的值 = None 以外的任何值

payload = { 
            "parameter1": parameter1_value, 
            "parameter2": "Non_default_value" 
        } 

我试图避免以下类型的方法:

if some_parameter != 'None': 
    payload = { 
                "one": "arrangement" 
            } 
 
if some_some_other_parameter != 'None': 
    payload = { 
                "one": "arrangement" 
            } 

在只有两个参数的例子中似乎有点不切实际,但如果我有一个带有许多参数的函数,那么一行包含/排除类型表达式似乎会大大减少所需的整体代码量。当我想不出如何让 python 做一些聪明的事情时,这是我的经验,这只是因为我不知道怎么做,而不是 python 不能。

请您参考如下方法:

是这样的吗?

def foo(v1, v2=None): 
    params = {k:v for k,v in locals().items() if v!=None} 
    print params 
 
foo('hello') 
foo('hello', 'world') 

输出:

{'v1': 'hello'} 
{'v1': 'hello', 'v2': 'world'} 

或者

是这样的吗?

def foo(a={}, url=''): 
    params = {k:v for k,v in a.items() if v!=None} 
    print params 
 
foo({'k1':'v1','k2':2,'k3':None, 'k4':'v4'}) 
foo() 

输出:

{'k2': 2, 'k1': 'v1', 'k4': 'v4'} 
{}