您的位置:首页 > 编程语言 > Python开发

谭子python学习笔记--函数的参数

2017-06-07 21:58 786 查看
函数-参数
参数的传递

可变参数的修改及避免此类修改

特定参数匹配模型
基础知识

匹配语法

实例

函数-参数

参数的传递

参数传递是通过自动将对象赋值给本地变量名来实现

在函数内部的参数名赋值不会影响调用者

改变函数的可变对象参数的值也许会对调用者有影响

可变参数的修改及避免此类修改

可变参数的修改

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)函数匹配必须在调用中按照关键字传递

实例

#coding:utf-8

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)
<
a297
span class="hljs-keyword">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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: