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

来源:互联网 发布:java算法数据结构 编辑:程序博客网 时间:2024/06/13 18:57

  • 函数-参数
    • 参数的传递
    • 可变参数的修改及避免此类修改
    • 特定参数匹配模型
      • 基础知识
      • 匹配语法
    • 实例

函数-参数

参数的传递

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

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

可变参数的修改

a = 1L = [1,2,3]def change(x,y):    x = 2    y[0] = 'hello'change(a,L)print a,L

避免可变参数的修改

a = 1L = [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-8s = '''HTTP/1.1 200 OKServer: Apache-Coyote/1.1Content-Type: text/javascript;charset=utf-8Transfer-Encoding: chunkedContent-Encoding: gzipVary: Accept-EncodingDate: 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_1def 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 dicfunc(s)
原创粉丝点击