python3.7源码 01
作者:互联网
默认值是在 定义过程 中在函数定义处计算的,所以
i = 5
def f(arg=i):
print(arg)
i = 6
f()
会打印 5
。
重要警告: 默认值只会执行一次。这条规则在默认值为可变对象(列表、字典以及大多数类实例)时很重要。比如,下面的函数会存储在后续调用中传递给它的参数:
def f(a, L=[]):
L.append(a)
return L
print(f(1))
print(f(2))
print(f(3))
这将打印出
[1]
[1, 2]
[1, 2, 3]
如果你不想要在后续调用之间共享默认值,你可以这样写这个函数:
def f(a, L=None):
if L is None:
L = []
L.append(a)
return L
列表推导式的结构是由一对方括号所包含的以下内容:一个表达式,后面跟一个 for
子句,然后是零个或多个 for
或 if
子句。 其结果将是一个新列表,由对表达式依据后面的 for
和 if
子句的内容进行求值计算而得出。 举例来说,以下列表推导式会将两个列表中不相等的元素组合起来:
>>>
>>> [(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]
[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]
而它等价于
>>>
>>> combs = []
>>> for x in [1,2,3]:
... for y in [3,1,4]:
... if x != y:
... combs.append((x, y))
...
>>> combs
[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]
标签:...,01,combs,列表,python3.7,源码,子句,print,默认值 来源: https://blog.csdn.net/weixin_37989267/article/details/88844168