相关疑难解决方法(0)

什么是避免作为空列表的默认参数的pythonic方法?

有时,使用默认参数(即空列表)似乎很自然.然而,Python在这些情况下会出现意外行为.

例如,我有一个功能:

def my_func(working_list = []):
    working_list.append("a")
    print(working_list)
Run Code Online (Sandbox Code Playgroud)

第一次使用默认值调用它将起作用,但之后的调用将使用不断更新的列表.

那么,获得我想要的行为的pythonic方法是什么(每个调用都有一个新的列表)?

python python-3.x

90
推荐指数
4
解决办法
4万
查看次数

函数参数的默认值等于另一个参数

是否可以在同一函数定义中将函数参数的默认值定义为另一个参数?就像是:

def func(a, b=a):
  print a, b
Run Code Online (Sandbox Code Playgroud)

但那没用.

python arguments default function

6
推荐指数
1
解决办法
1426
查看次数

内置函数中的可变默认参数

我们都知道'可怕的可变默认参数'

我惊讶地发现至少有一个使用可变默认参数的内置函数deepcopy(和相关的__deepcopy__).

def deepcopy(x, memo=None, _nil=[]):

资源

这只是模块作者的一个忽视,还是有一些特殊deepcopy的行为证明了这一点?

python

3
推荐指数
1
解决办法
48
查看次数

Python可选函数参数默认为另一个参数的值

我想用一些可选参数定义一个函数,比如说A(强制性)和B(可选)。如果没有给定B,我希望它取与A相同的值。我该怎么做?

我已经尝试过了,但是不起作用(未定义名称“ B”):

def foo(A, B=A):
    do_something()
Run Code Online (Sandbox Code Playgroud)

我知道参数的值未在函数主体之前分配。

python default-value optional-arguments python-2.7

1
推荐指数
1
解决办法
859
查看次数

Python 变量默认值的快捷方式是另一个变量值(如果它是 None)

我有以下函数声明:

def set_data(obj=None, name='delp', type=None):
Run Code Online (Sandbox Code Playgroud)

是否有一个 python 快捷方式,其中类型等于“名称”值(默认通过 r)如果是 None ?

python python-3.x

0
推荐指数
1
解决办法
1806
查看次数