利于優(yōu)化的網(wǎng)站怎么讓網(wǎng)站排名上去
1. 可變類型作為參數(shù)
可變對象: list/set/dict
參數(shù)會指向可變對象的副本的地址,每次修改的是同一個對象。
def flist(l):l.append(0)print(l)ll = []
flist(ll)
flist(ll)
輸出為:
[0]
[0, 0]
# 注意:l只是ll的一個副本,修改l不會改變ll的值
def clear_list(l):l = []ll = [1,2,3]
clear_list(ll)
print(ll)
輸出為:
[1, 2, 3]
注意:參數(shù)每次指向同一個對象的地址。
def flist(l=[1]):l.append(1)print(l)flist()
flist()
輸出為:
[1, 1]
[1, 1, 1]
2. 不可變類型作為參數(shù)
不可變對象:bool/int/float/tuple/str/frozenset
每次執(zhí)行函數(shù),會建立一個不可變對象的副本,因此參數(shù)每次指向一個新的不可變對象的地址。
def fstr(s):s += 'a'print(s)s = "hehe"
fstr(s)
fstr(s)
輸出為:
hehea
hehea
3. 關(guān)鍵字參數(shù)
*args被打包成tuple
**kwargs被打包成dict
def print_multiple_args(*args):print(type(args), args)for idx, val in enumerate(args):print(idx, val)print_multiple_args('a', 'b', 'c')
另一種方式為:
def print_multiple_args(*args):print(type(args), args)for idx, val in enumerate(args):print(idx, val)print_multiple_args(*['a', 'b', 'c'])
輸出為:
<class ‘tuple’> (‘a(chǎn)’, ‘b’, ‘c’)
0 a
1 b
2 c
def print_kwargs(**kwargs):print(type(kwargs), kwargs)for k, v in kwargs.items():print('{}: {}'.format(k, v))print_kwargs(a=1, b=2, c=3, d=4)
另一種方式為:
def print_kwargs(**kwargs):print(type(kwargs), kwargs)for k, v in kwargs.items():print('{}: {}'.format(k, v))print_kwargs(**dict(a=1, b=2, c=3, d=4))
輸出為:
<class ‘dict’> {‘a(chǎn)’: 1, ‘b’: 2, ‘c’: 3, ‘d’: 4}
a: 1
b: 2
c: 3
d: 4
def print_all(a, *args, **kwargs):print(a)if args:print(args)if kwargs:print(kwargs)print_all('hello', 'world', name='Jack')
輸出為:
hello
(‘world’,)
{‘name’: ‘Jack’}