python如何设置变量等于0或1

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python如何设置变量等于0或1相关的知识,希望对你有一定的参考价值。

参考技术A 利用赋值
变量名 = 0或1
python赋值时,总是先计算"=“右边的结果,然后将结果按照赋值方式赋值给”="左边的变量。 所以,这里的过程是先将"long"赋值给变量b,再将b赋值给变量a。 因为总是先计算右边,所以交换变量非常的方便。

将函数输入的默认值设置为等于 Python 中的另一个输入

【中文标题】将函数输入的默认值设置为等于 Python 中的另一个输入【英文标题】:Setting the default value of a function input to equal another input in Python 【发布时间】:2011-04-01 20:28:20 【问题描述】:

考虑以下函数,它在 Python 中不起作用,但我将用它来解释我需要做什么。

def exampleFunction(a, b, c = a):
    ...function body...

也就是说,我想为变量 c 分配与变量 a 相同的值,除非指定了替代值。上面的代码在 python 中不起作用。有没有办法做到这一点?

【问题讨论】:

【参考方案1】:
def example(a, b, c=None):
    if c is None:
        c = a
    ...

关键字参数的默认值不能是变量(如果是,则在定义函数时将其转换为固定值。)通常用于将参数传递给主函数:

def main(argv=None):
    if argv is None:
        argv = sys.argv

如果None 可能是一个有效值,则解决方案是使用*args/**kwargs 魔法,如carl 的回答,或使用哨兵对象。执行此操作的库包括 attrs 和 Marshmallow,在我看来它更干净而且可能更快。

missing = object()

def example(a, b, c=missing):
    if c is missing:
        c = a
    ...

唯一c is missing 为真的方式是c完全你在那里创建的虚拟对象。

【讨论】:

没错。一旦定义了函数,默认参数就会一成不变。 @delnan 这就是为什么不能像def(x=2,y)那样在最后提供非默认设置参数的原因,而是我必须将函数定义为def(y, x=2)【参考方案2】:

这种通用模式可能是最好的和最易读的:

def exampleFunction(a, b, c = None):
    if c is None:
        c = a
    ...

您必须注意None 不是c 的有效状态。

如果您想支持“无”值,您可以执行以下操作:

def example(a, b, *args, **kwargs):
    if 'c' in kwargs:
        c = kwargs['c']
    elif len(args) > 0:
        c = args[0]
    else:
        c = a

【讨论】:

+1 提到 None 不能成为 c 的有效状态,以便 c=None 技巧起作用。【参考方案3】:

一种方法类似于:

def foo(a, b, c=None):
    c = a if c is None else c
    # do something

【讨论】:

以上是关于python如何设置变量等于0或1的主要内容,如果未能解决你的问题,请参考以下文章

为啥设置一个变量等于另一个变量会改变这段代码中的任何内容? [复制]

设置变量等于 if 语句条件

python中如何定义大于等于18小余等于50

如何理解python的“变量无类型,数据(对象)有类型“

如何理解python的“变量无类型,数据(对象)有类型“

如何理解python的“变量无类型,数据(对象)有类型“