函数-参数
参数的传递可变参数的修改及避免此类修改特定参数匹配模型
基础知识匹配语法 实例
函数-参数
参数的传递
参数传递是通过自动将对象赋值给本地变量名来实现在函数内部的参数名赋值不会影响调用者改变函数的可变对象参数的值也许会对调用者有影响
可变参数的修改及避免此类修改
可变参数的修改
a =
1
L = [
1,
2,
3]
def change(x,y):
x =
2
y[
0] =
'hello'
change(a,L)
print a,L
避免可变参数的修改
a =
1
L = [
1,
2,
3]
def change(x,y):
x =
2
y[
0] =
'hello'
change(a,L[:])
change(a,tuple(L))
print a,L
特定参数匹配模型
基础知识
位置:从左至右进行匹配关键字参数:通过参数名进行匹配默认参数:为没有传入值的参数定义参数值可变参数:收集任意多基于位置或关键字的参数可变参数解包:传递任意多的基于位置或关键字的参数
匹配语法
语法位置解释
func(value)调用者常规参数:通过位置进行匹配func(name=value)调用者关键字参数:通过变量名匹配func(*sequence)调用者以name传递所有对象,并作为独立的基于位置的参数func(**dic)调用者以name成对的传递所有关键字/值,并作为独立的关键字参数def func(name)函数常规参数:通过位置或变量名进行匹配def func(name=value)函数默认参数值,如果没有在调用中传递参数的话def func(*name)函数匹配并搜集(在元组中)所有包含位置的函数def func(**name)函数匹配并收集(在字典中)所有包含位置的参数def func(*args,name)函数匹配必须在调用中按照关键字传递
实例
s =
'''
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/javascript;charset=utf-8
Transfer-Encoding: chunked
Content-Encoding: gzip
Vary: Accept-Encoding
Date: Tue, 07 Mar 2017 07:50:57 GMT
'''
def ff_1(func):
a = []
def ff1(*args):
print 'hello'
for i
in args:
if isinstance(i,str):
a.append(func(i))
try:
write_data(a)
except:
print "写入数据出错"
return a
def write_data(s):
s = str(s)
fp = open(
'data.txt',
'w+')
fp.writelines(s)
fp.close()
return ff1
@ff_1
def func(s):
alist = s.strip().split(
'\n')
dic = {}
for line
in alist:
if ':' in line:
dic[line.strip().split(
':',
1)[
0]] = line.strip().split(
':',
1)[
1]
print dic
return dic
func(s)