一、函数的参数有四种,位置参数、默认参数、可变参数和关键字参数

def func(x, y=0, *arg, **args):
'''x为位置参数
y有默认值
*arg为可变参数
**args为关键字参数
'''
print('x= ', x)
print('y= ', y)
print('*arg= ', arg)
print('**arg= ', args)

二、仅输入位置参数时,默认参数会打印默认值

>>> func(1)
x= 1
y= 0
*arg= ()
**arg= {}

三、输入两个参数

>>> func(1,2)
x= 1
y= 2
*arg= ()
**arg= {}

三、可变参数:可变参数接收0个或多个参数。输入的多个参数会自动组合成一个tuple,变成可变参数

>>> func(1,2,3,4,5)
x= 1
y= 2
*arg= (3, 4, 5)
**arg= {}

可变参数可以直接接收一个list或者tuple,但是要在参数前面加上*

>>> list1 = [3, 4, 5]
>>> tuple1 = (3, 4, 5)
>>> func(1,2,*list1)
x= 1
y= 2
*arg= (3, 4, 5)
**arg= {}
>>> func(1,2,*tuple1)
x= 1
y= 2
*arg= (3, 4, 5)
**arg= {}

四、关键字参数:关键字参数接收0个或多个带参数名的参数,这些参数会自动组合为一个dict,变成关键字参数

>>> func(1, 2, [3, 4, 5], 6, name='alex', age=18)
x= 1
y= 2
*arg= ([3, 4, 5], 6)
**arg= {'name': 'alex', 'age': 18}

关键字参数可以直接接收一个dict,但是要在参数前面加上**

>>> dict1 = {'name': 'Alex', 'age': 18}

>>> func(1, 2, [3, 4, 5], 6, **dict1)
x= 1
y= 2
*arg= ([3, 4, 5], 6)
**arg= {'name': 'Alex', 'age': 18}

五、实例说明

1、入参为可变参数

def sum(*nums):#求所有入参之和
sum = 0
for num in nums:
sum += num
return sum

输入0个或多个参数,查看结果:

>>> print('sum()= ', sum()) #输入0个参数,相当于传一个空元组
sum()= 0 >>> print('sum(1,2,3)= ', sum(1,2,3))
sum(1,2,3)= 6 >>> print('sum(*[1,2,3])= ', sum(*[1,2,3]))
sum(*[1,2,3])= 6 >>> print('sum(*(1,2,3))= ', sum(*(1,2,3)))
sum(*(1,2,3))= 6

2、入参为关键字参数

def user_info(name, age, **others): #获取用户信息
print(name, age, others)

输入用户信息,查看结果:

>>> user_info('zhang',18) #关键字参数为空时,返回一个空字典
zhang 18 {} >>> user_info('wang',19, city='shanghai',salary=500)
wang 19 {'city': 'shanghai', 'salary': 500} >>> user_info('li',20, sex='M')
li 20 {'sex': 'M'} >>> user_info('zhou',21,**{'sex': 'W', 'city': 'beijing', 'salary': 3000})
zhou 21 {'sex': 'W', 'city': 'beijing', 'salary': 3000}

最新文章

  1. Find Out What Your Entity Framework Query Is Really Doing
  2. Zebra_Dialog 弹出层插件
  3. 转 http://www.5icool.org/a/201106/a654.html CSS开发中常用的公用样式
  4. linux入门教程(一) 关于linux的历史
  5. UIScollView Touch事件
  6. 环境配置与JBoss安装-EJB3.0入门经典学习笔记(1)
  7. json的细节
  8. Vultr新加坡机房速度怎么样?值得购买吗?最新评测!
  9. 【Android 应用开发】 ActionBar 基础
  10. 【shell基础】数学计算
  11. Django的Admin站点管理
  12. Qt图片显示
  13. Alpha冲刺! Day7 - 砍柴
  14. Oracle包被锁定的原因分析及解决方案
  15. 【第三组】心·迹 Alpha版本 成果汇报
  16. 基础:enctype 包含上传input时必须(解决图片上传不成功问题)
  17. golang interface 类型变量当作某个具体类型使用
  18. js表单的focus()与blur()方法
  19. pyDay9
  20. 常用sql commands以及mysql问题解决日志

热门文章

  1. java——多线程的实现方式、三种办法解决线程赛跑、多线程数据同步(synchronized)、死锁
  2. python 之 paramiko
  3. Could not read settings.xml
  4. JAVA HTTP请求和HTTPS请求
  5. TCP/IP协议<一>
  6. 2019.03.21 读书笔记 readonly与const
  7. git使用笔记-基础篇
  8. gdb调试汇总
  9. C# winform文件批量转编码 选择文件夹
  10. [Java][Liferay] 模拟用户