python 函数参数介绍

python 使用过程总,总会遇到 *args,**kw形式的参数,总是一头雾水,而且网上介绍的或是叫法不一,为此专门深入实践进而了解了函数参数的使用

具体请看代码

#-*-coding:utf-8-*-
# Time:2017/10/11 23:17
# Author:YangYangJun #学习 python 函数中参数的使用。 # 以下是调用函数时可使用的正式参数类型:
#
# 必备参数 -- 位置参数
#
# 默认参数
#
# 关键字参数
#
# 可变参数
#
# 关键字可变参数 # 默认参数一定要用不可变对象,如果是可变对象,程序运行时会有逻辑错误!
#
# 要注意定义可变参数和关键字参数的语法:
#
# *args是可变参数,args接收的是一个tuple;
#
# **kw是关键字参数,kw接收的是一个dict。 # 必备参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
# 调用函数,你必须传入一个参数,不然会出现语法错误: def mustParams(param1,param2): print "mustParam1:", param1 print "mustParam2:", param2
# 执行结果 参见调用方法
# mustParam1: 12
# mustParam2: 23 # 调用函数时,默认参数的值如果没有传入,则被认为是默认值 def defaultParams(param1,param2= '你好'): print "defaultParam1:", param1 print "defaultParam2:", param2
print param1,param2 # 执行结果 参见调用方法
# defaultParam1: 小明
# defaultParam2: 你好
# 小明 你好
# defaultParam1: 小明
# defaultParam2: 干活
# 小明 干活 # 关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。
# 使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。 def keywordParams(param1,param2): print "keywordParam1:", param1 print "keywordParam2:", param2 #执行结果 参见调用方法
# keywordParam1: 518
# keywordParam2: 988
# keywordParam1: 988
# keywordParam2: 518
# keywordParam1: 988
# keywordParam2: 518 # 你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做可变参数,python会将这些多出来的参数放入一个元组中
# 在实际的使用中,我们经常会同时用到必选参数、默认参数、可变参数和关键字参数或其中的某些。但是,需要注意的是,
# 它们在使用的时候是有顺序的,依次是必选参数、默认参数、可变参数和关键字可变参数。
# 注意 可变参数和关键字可变参数 不能和关键字参数一起使用
def variableParams(param1,param2,param3=56,*args): print "variableParam1:", param1 print "variableParam2:", param2
print "variableParam3:", param3
print "variableParamargs:", args #执行结果
# variableParam1: 12
# variableParam2: 25
# variableParam3: 568
# variableParamargs: (456, 125) # “关键字”“可变长”顾名思义是允许在调用时传入多个“关键字”参数,python会将这些多出来的<参数名, 参数值>放入一个字典中。需要注意的是,关键字变量参数应该为函数定义的最后一个参数,带** def variableKeywordParames(**kwargs): print "variableKeywordParames:",kwargs
# 执行结果
# variableKeywordParames: {'age': 18, 'param2': 58, 'param1': 12, 'name': 'Tester'} # 当非关键字可变长参数和关键字可变长参数出现在同一个函数中时,他们应当遵守如下的顺序约定: def newfoo(normal1, normal2,normal3='testParam', *args, **kw):
print "normal1:",normal1
print "normal2:",normal2
print "normal3:",normal3
print "args:",args
print "kw:",kw #执行结果 参见调用方法
# normal1: 1
# normal2: 2
# normal3: 3
# args: (4, 5, 6)
# kw: {'age': 18, 'name': 'Tester'} if __name__ == '__main__': #必备参数调用
mustParams(12,23) #默认参数调用
defaultParams("小明")
defaultParams("小明","干活") #关键字参数调用
keywordParams(param2=988,param1=518)
keywordParams(param1=988,param2=518)
#注释代码是会出错的代码即,这种写法不可用
#keywordParams(param1=988,518)
#keywordParams(param2=988,518)
# keywordParams(988, param1=518)
#TypeError: keywordParams() got multiple values for keyword argument 'param1'
keywordParams(988, param2=518)
#由此可见如果关键字参数与必选参数再起的使用时,关机字参数要在必选参数之后,且参数名要与定义函数时参数顺序一致
#如果参数全为关键字参数,则可以忽略先后顺序 # 可变参数调用,注意不能添加关键字参数
variableParams(12,25,568,456,125) variableKeywordParames(param1 = 12,param2 = 58,name = "Tester",age = 18) newfoo(1,2,3,4,5,6,name = "Tester",age = 18)

python 函数参数介绍的更多相关文章

  1. Python函数参数默认值的陷阱和原理深究"

    本文将介绍使用mutable对象作为Python函数参数默认值潜在的危害,以及其实现原理和设计目的 本博客已经迁移至: http://cenalulu.github.io/ 本篇博文已经迁移,阅读全文 ...

  2. python函数参数的pack与unpack

    python函数参数的pack与unpack 上周在使用django做开发的时候用到了mixin(关于mixin我还要写一个博客专门讨论一下,现在请参见这里),其中又涉及到了一个关于函数参数打包(pa ...

  3. Python 关于Python函数参数传递方式的一点探索

    关于Python函数参数传递方式的一点探索 by:授客 QQ:1033553122 实践代码 #!/usr/bin/env python # -*- coding:utf-8 -*- __author ...

  4. python函数参数类型及其顺序

    根据inspect模块官文文档中关于函数参数类型的相关说明,python函数参数共有五种类型,按顺序分别为:POSITIONAL_ONLY.POSITIONAL_OR_KEYWORD.VAR_POSI ...

  5. Python 函数参数类型大全(非常全!!!)

    Python 函数参数类型大全(非常全!!!) 1.在python编写程序里面具有函数文档,它的主要作用是为了让别人可以更好的理解你的函数,所以这是一个好习惯,访问函数文档的方式是: MyFuncti ...

  6. Python函数参数默认值的陷阱和原理深究(转)

    add by zhj: 在Python文档中清楚的说明了默认参数是怎么工作的,如下 "Default parameter values are evaluated when the func ...

  7. python函数-参数

    python函数-参数 实验室 # 演示形参是可变类型 def register(name, hobby, hobby_list=[]): hobby_list.append(hobby) print ...

  8. 详解Python函数参数定义及传参(必备参数、关键字参数、默认可省略参数、可变不定长参数、*args、**kwargs)

    详解Python函数参数定义及传参(必备参数.关键字参数.默认可省略参数.可变不定长参数.*args.**kwargs) Python函数参数传参的种类   Python中函数参数定义及调用函数时传参 ...

  9. Python函数参数详解

    Python函数参数详解 形参与实参 什么是形参 在定义函数阶段定义的参数称之为形式参数,简称形参,相当于变量名. 什么是实参 在调用函数阶段传入的值称为实际参数,简称实参.相当于"变量值& ...

随机推荐

  1. MFC六大核心机制之三:动态创建

    MFC中很多地方都使用了动态创建技术.动态创建就是在程序运行时创建指定类的对象.例如MFC的单文档程序中,文档模板类的对象就动态创建了框架窗口对象.文档对象和视图对象.动态创建技术对于希望了解MFC底 ...

  2. Learning to Rank算法介绍:RankNet,LambdaRank,LambdaMart

    之前的博客:http://www.cnblogs.com/bentuwuying/p/6681943.html中简单介绍了Learning to Rank的基本原理,也讲到了Learning to R ...

  3. OS X 下动态库的引用

    foo.c #include <stdio.h> void foo(void) { printf("foo.\n"); } main.c #include <st ...

  4. linux常用命令:scp 命令

    scp(secure copy)用于进行远程文件拷贝. 1.命令格式: scp [参数] [源文件] [目标文件] 2.命令功能: scp在主机间复制文件,他使用 ssh(1)作为数据传输,而且用同样 ...

  5. PDF常见问题总结

    欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...

  6. Linux中Postfix虚拟用户及虚拟域(六)

    Postfix基于虚拟用户虚拟域的邮件架构 上图是一个几乎完整的邮件系统架构图,这里基于Mysql数据库进行用户认证,不管是Postfix.Dovecot.webmail都需要去Mysql数据库中进行 ...

  7. CPU负载过高异常排查实践与总结

    昨天下午突然收到运维邮件报警,显示数据平台服务器cpu利用率达到了98.94%,而且最近一段时间一直持续在70%以上,看起来像是硬件资源到瓶颈需要扩容了,但仔细思考就会发现咱们的业务系统并不是一个高并 ...

  8. STL与泛型编程(第一周)

    part 1 C++模版简介 一,模版概观 1.模板 (Templates)是C++的一种特性,允许函数或类(对象)通过泛型(generic types)的形式表现或运行. 模板可以使得函数或类在对应 ...

  9. Duilib Edit编辑框禁止输入中文的方法

    转载:http://www.myexception.cn/vc-mfc/300749.html 编辑框是供用户输入的,但有时候我们要限制用户输入的内容,比如我们不让用户输入中文,只能输入字符和数字,因 ...

  10. 第一个html文件

    1.新建记事本文件,后缀改为.html 2.添加: <html>  <head>  <title>jude`s first web</title>  & ...