即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

谭子python学习与进阶学习与进阶笔记–函数的参数

编程语言 lihua_tan 10℃ 0评论
本文目录
[隐藏]

1.函数-参数

1.1.参数的传递

  • 参数传递是通过自动将对象赋值给本地变量名来实现
  • 在函数内部的参数名赋值不会影响调用者
  • 改变函数的可变对象参数的值也许会对调用者有影响

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

可变参数的修改

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

1.3.特定参数匹配模型

1.3.1.基础知识

  • 位置:从左至右进行匹配
  • 关键字参数:通过参数名进行匹配
  • 默认参数:为没有传入值的参数定义参数值
  • 可变参数:收集任意多基于位置或关键字的参数
  • 可变参数解包:传递任意多的基于位置或关键字的参数

1.3.2.匹配语法

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

1.4.实例

#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)
        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)

转载请注明:CodingBlog » 谭子python学习与进阶学习与进阶笔记–函数的参数

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情