if not 与 *args 和 **kwargs 的理解
手札-7
你好,我是悦创。
if not 的理解:
l = None # 空 False
# not False >>> True
if not l:
print('ok')
else:
print('No')
print(not False)
运行结果:
ok
True
把 l 修改成不为空:
l = 1 # 空 False
# not False >>> True
if not l:
print('ok')
else:
print('No')
print(not False)
print(not True)
运行结果:
No
True
False
python 中 *args 和 **kwargs 的区别
在 python 中,*args 和 **kwargs 都代表 1个 或 多个 参数的意思。*args 传入tuple 类型的无名参数,而 **kwargs 传入的参数是 dict 类型。下文举例说明。
1.*args 的用法,以下测试代码:
def p(url, *args):
print(url)
print(args[0])
p(1, 2, 3, 4)
def test(*args):
print("test-args", args)
for i in args:
print("test-i", i)
test(1,2,3)
def p(a, *args, **kwargs):
print("p-a", a)
print("p-*args", *args)
print("p-**kwargs", **kwargs)
p(1, 2, 3, 4)
运行结果:
test-args (1, 2, 3)
test-i 1
test-i 2
test-i 3
p-a 1
p-*args 2 3 4
p-**kwargs
2.**kwargs 的用法,以下测试代码:
def test(**kwargs):
print(kwargs)
keys = kwargs.keys()
value = kwargs.values()
print(keys)
print(value)
test(a=1,b=2,c=3,d=4)
# 输出值分别为
# {'a': 1, 'b': 2, 'c': 3, 'd': 4}
# dict_keys(['a', 'b', 'c', 'd'])
# dict_values([1, 2, 3, 4])