见下面代码及注释:

 def calc(value):
sum=0
for m in value:
sum=sum+m
return sum data=[1,2,3,4,5,6,7,8,9,10]
print(str(calc(data)))
print(calc([1,2,3]))
print(calc((1,2,3)))
#print(calc(1,2,3)) 这句会报错,不过可以用可变参数改造函数calc def calc1(*value):
sum=0
for m in value:
sum=sum+m
return sum
#函数calc1为可变参数
print(calc1(1,2,3))
print(calc1()) #甚至还可以零参数调用 #如果有一个list或者tuple要调用可变参数怎么搞
nums=[1,2,3]
#print(calc1(nums)) 这句报错: unsupported operand type(s) for +: 'int' and 'list'
#像下面这样调用就可以
print(calc1(nums[0],nums[1],nums[2]))
#也可以这样调用,表示把nums这个list的所有元素做为一个可变参数传递进去
print(calc1(*nums)) #下面演示关键字参数
#关键字参数允许你传入0个或任意个含参数名的参数,
# 这些关键字参数在内部自动装为一个dict
def person(name,age,**kw):
print('name:',name,'age:',age,'other:',kw) print(person('刘小勇',30))
print(person('刘小勇',35,city='北京',job='软件工程师')) data1={'city':'北京','job':'卖菜'}
print(person('刘小能',45,city=data1['city'],job=data1['job']))
print(person('刘小勇',45,**data1)) #命名关键字参数
def person1(name,age,*,city,job):
print(name,age,city,job) print(person1("刘小勇",45,city="武汉",job="总统"))
#命令关键字参数只接受city,job,下面的调用因此会报错
#person1() got an unexpected keyword argument 'bby'
#print(person1("lxy",32,bby="kkk",job2="kkk2")) #命名关键勃参数还可以有缺省值
def person2(name,age,*,city="wuhan",job):
print(name,age,city,job) print(person2('xly2',23,job='')) #参数组合
#5种参数组合,必须按以下列顺序组合
#必选参数、默认参数、可变参数/命名关键字参数和关键字参数 def f1(a,b,c=0,*args,**kw):
print('a=',a,'b=',b,'c=',c,'args=',args,'kw=',kw)
def f2(a,b,c=0,*,d,**kw):
print('a=',a,'b=',b,'c=',c,'d=',d,'kw=',kw) print(f1(1,2))
print(f1(1,2,c=3))
print(f1(1,2,3,'a','b'))
print(f1(1,2,3,'a','b',x=33))
print(f2(1,2,d=99,ext=None)) #你甚至可以通过一个tuple和dict调用上面的函数
args=(1,2,3,4)
kw={'d':99,'x':'#'}
print(f1(*args,**kw)) args=(1,2,3)
kw={'d':88,'x':'#'}
print(f2(*args,**kw))
#所以,对于任意函数,都可以通过类似fun(*args,**kw)的形式调用它,无论它的参数
#是如何定义的 #几点总结
#默认参数一定要用不可变的对象
#*args是可变参数,接受一个tuple或list
#**kw是关键字参数,接受一个dict
 

python函数定义语法总结的更多相关文章

  1. Python(2)深入Python函数定义

    Python学习 Part2:深入Python函数定义 在Python中,可以定义包含若干参数的函数,这里有几种可用的形式,也可以混合使用: 1. 默认参数 最常用的一种形式是为一个或多个参数指定默认 ...

  2. Python函数定义和使用

    函数是一段可以重复多次调用的代码,通过输入的参数值,返回需要的结果.通过使用函数,可以提高代码的重复利用率.本文主要介绍Python函数的定义.调用和函数参数设置方法. 函数的定义 Python函数定 ...

  3. Python 函数定义以及参数传递

    Python 函数定义以及参数传递1.函数定义#形如def func(args...): doSomething123以关键字def 开头,后面是函数名和参数下面是函数处理过程. 举例: def ad ...

  4. Python 函数定义和使用

    # 函数的概念 # 概念 # 写了一段代码实现了某个小功能; 然后把这些代码集中到一块, 起一个名字; 下一次就可以根据这个名字再次使用这个代码块, 这就是函数 # 作用 # 方便代码的重用 # 分解 ...

  5. 初识python 函数(定义,传参,返回值)

    python基础(二): 菜鸟教程基础知识讲解的非常全面,内容选择我认为的重点输出一遍 函数: 定义一个函数: 你可以定义一个由自己想要功能的函数,以下是简单的规则: def fun(arg): pa ...

  6. python函数定义

    刚学用Python的时候,特别是看一些库的源码时,经常会看到func(*args, **kwargs)这样的函数定义,这个*和**让人有点费解.其实只要把函数参数定义搞清楚了,就不难理解了. 先说说函 ...

  7. python 函数定义及调用

    1.什么是函数? 在程序中,函数就是具备某一功能的工具,事先将工具准备好即函数的定义:遇到应用场景拿来就用即函数的调用:函数必须遵循先定义后调用的原则 2.为什么要用函数 不用函数的问题是: 程序冗长 ...

  8. Python学习-10.Python函数定义(二)

    在Python中定义函数的时候,可以使用参数默认值的方式定义函数 例子: def welcome(who,state='is',action='talking'): print(who,state,a ...

  9. 9 - Python函数定义-位置参数-返回值

    目录 1 函数介绍 1.1 为什么要使用函数 1.2 Python中的函数 2 函数的基本使用 3 函数的参数 3.1 参数的默认值 3.2 可变参数 3.2.1 可变位置传参 3.2.2 可变关键字 ...

随机推荐

  1. Websphere设置JVM时区解决程序、日志时间快8小时问题

    原文链接:http://www.itpub.net/thread-1204714-1-1.html 相信很多使用Websphere的朋友会经常在Windows操作系统中遇到程序时间快8小时的问题 如果 ...

  2. 转载: 让我们聊聊Erlang的nif中资源的安全释放

    让我们聊聊Erlang的nif中资源的安全释放 http://my.oschina.net/u/236698/blog/479221

  3. 面试的角度诠释Java工程师(一)

    前言: 我相信每一个程序员都是为了生活而努力着的.很多人因为兴趣,从此踏上了这条‘烧脑大行动’的金桥:也有很多人因为梦想和执着,奋不顾身融入这个职业:还有很多人因为被现实逼得太无奈,不得不为自己.为家 ...

  4. Win7 共享打印机 “错误:共享无法保存设置”

    原因:windows的后台防火墙服务进程[Windows Firewall{服务描述}.MpsSvc{服务名字}] 关闭了.services.smc 关闭 解决:重启服务 关闭防火墙的功能,通过控制面 ...

  5. DataList中动态显示DIV

    <%# DataBinder.Eval(Container,  "DataItem.ProductName").ToString() == "股票矩阵" ...

  6. [原] unity3d动态加载脚本

    本文记录如何通过unity3d进行脚本资源打包加载 1.创建TestDll.cs文件 public class TestDll : MonoBehaviour {    void Start () { ...

  7. Tomcat------启动时报错:Failed to start component [StandardEngine[Catalina].StandardHost[localhost].

    启动报错信息: Failed to start component [StandardEngine[Catalina].StandardHost[localhost] 因此出现这种错误的原因可能有: ...

  8. 在Ubuntu中开启Soft AP功能

    在Ubuntu中开启Soft AP功能 1.查看采用的无线网卡是否支持Soft AP: 注意,可以看到有AP字样,表明支持.楼主比较背,在易迅上挑了个销量最高的netcore nw360,结果无法搭建 ...

  9. backbone学习笔记:模型(Model)(1)基础知识

    backbone为复杂Javascript应用程序提供MVC(Model View Controller)框架,框架里最基本的是Model(模型),它用来处理数据,对数据进行验证,完成后台数据与前台数 ...

  10. Bypass ngx_lua_waf SQL注入防御(多姿势)

    0x00 前言 ​ ngx_lua_waf是一款基于ngx_lua的web应用防火墙,使用简单,高性能.轻量级.默认防御规则在wafconf目录中,摘录几条核心的SQL注入防御规则: select.+ ...