一、位置参数


根据参数的位置来传递参数,调用函数时,传递的参数顺序和个数必须和定义时完全一致

# 定义函数
def man(name, age):
print("My name is %s,I am %d years old." % (name, age)) # 调用函数
>>> man('eastonliu',32)
My name is eastonliu,I am 32 years old. # 调用时传入的参数顺序必须和定义时一致 >>> man(32, 'eastonliu')
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
man(32, 'eastonliu')
File "C:/Users/lmj/AppData/Local/Programs/Python/Python36/2.py", line 2, in man
print("My name is %s,I am %d years old." % (name, age))
TypeError: %d format: a number is required, not str # 调用时传入的参数个数必须和定义时一致
>>> man("eastonliu")
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
man("eastonliu")
TypeError: man() missing 1 required positional argument: 'age'

二、默认参数


定义函数时,为参数提供默认值,调用函数时,可传可不传该默认参数的值。如果不传就取默认值,传了的话就取传入的值。定义和调用函数时,所有位置参数必须在默认参数前面

# 正确的定义方式
def man(name, age=18):
print("My name is %s,I am %s years old." % (name, age)) # 错误的定义方式
def man(age=18, name):
print("My name is %s,I am %s years old." % (age, name)) # 调用时默认参数不传则取默认参数
>>> man("eastonliu")
My name is eastonliu,I am 18 years old. # 调用时默认参数传值则取传入的值
>>> man("eastonliu",32)
My name is eastonliu,I am 32 years old.

三、关键字参数


调用函数时,通过“键-值”形式指定参数

# 定义函数
def man(name, age):
print("My name is %s,I am %d years old." % (name, age)) # 调用函数
>>> man(name="eastonliu",age=32)
My name is eastonliu,I am 32 years old. # 关键字参数不分顺序
>>> man(age=32, name="eastonliu")
My name is eastonliu,I am 32 years old. # 位置参数必须在关键字参数前面
>>> man("eastonliu",age=32)
My name is eastonliu,I am 32 years old. >>> man(name="eastonliu",32)
SyntaxError: positional argument follows keyword argument

四、参数收集


在函数定义的时候,用*和**来收集位置参数和关键字参数,这样用户在调用函数时,可以给函数提供任意多的参数

1、收集位置参数

def print_params(*params):
print(params) # 调用
>>> print_params(1,2,3,4,5)
(1, 2, 3, 4, 5)

2、收集关键字参数

def print_params(**params):
print(params) # 调用
>>> print_params(x=1,y=2,z=3)
{'x': 1, 'y': 2, 'z': 3} # 联合使用
def print_params(x,y,z=6,*pospar,**keypar):
print(x,y,z)
print(pospar)
print(keypar) >>> print_params(1,2,3,8,9,10,foo=12,bar=16)
1 2 3
(8, 9, 10)
{'foo': 12, 'bar': 16}

五、参数解包


在调用函数的时候,使用*和**来解包元组或字典形式参数

def add_demo(a,b,c)
print(a+b+c)
# 解包元组
>>> params=(1,2,3)
>>> add_demo(*params)
6
# 解包字典
>>> d = {'a':1,'b':2,'c':3}
>>> add_demo(**d)
6

Python3学习笔记(十一):函数参数详解的更多相关文章

  1. Python函数参数详解

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

  2. PHP date函数参数详解

    PHP date函数参数详解 作者: 字体:[增加 减小] 类型:转载       time()在PHP中是得到一个数字,这个数字表示从1970-01-01到现在共走了多少秒,很奇怪吧 不过这样方便计 ...

  3. IP2——IP地址和子网划分学习笔记之《子网掩码详解》

    2018-05-04 16:21:21   在学习掌握了前面的<进制计数><IP地址详解>这两部分知识后,要学习子网划分,首先就要必须知道子网掩码,只有掌握了子网掩码这部分内容 ...

  4. Go语言Slice作为函数参数详解

    Go语言Slice作为函数参数详解 前言 首先要明确Go语言中实质只有值传递,引用传递和指针传递是相对于参数类型来说. 个人认为上诉的结论不对,把引用类型看做对指针的封装,一般封装为结构体,结构体是值 ...

  5. Python学习记录3-函数参数详解

    参数详解 参数分类 普通参数 默认参数 关键字参数 收集参数 普通参数 定义时直接定义变量名 调用的时候直接把变量或者值放入指定位置 def 函数名 (参数1, 参数2, ....): 函数体 # 调 ...

  6. 【集成学习】sklearn中xgboot模块中fit函数参数详解(fit model for train data)

    参数解释,后续补上. # -*- coding: utf-8 -*- """ ############################################## ...

  7. [读书笔记]C#学习笔记三: C#类型详解..

    前言 这次分享的主要内容有五个, 分别是值类型和引用类型, 装箱与拆箱,常量与变量,运算符重载,static字段和static构造函数. 后期的分享会针对于C#2.0 3.0 4.0 等新特性进行. ...

  8. C#学习笔记二: C#类型详解

    前言 这次分享的主要内容有五个, 分别是值类型和引用类型, 装箱与拆箱,常量与变量,运算符重载,static字段和static构造函数. 后期的分享会针对于C#2.0 3.0 4.0 等新特性进行. ...

  9. 【Java学习笔记之三十三】详解Java中try,catch,finally的用法及分析

    这一篇我们将会介绍java中try,catch,finally的用法 以下先给出try,catch用法: try { //需要被检测的异常代码 } catch(Exception e) { //异常处 ...

  10. jQuery学习笔记之Ajax用法详解

    这篇文章主要介绍了jQuery学习笔记之Ajax用法,结合实例形式较为详细的分析总结了jQuery中ajax的相关使用技巧,包括ajax请求.载入.处理.传递等,需要的朋友可以参考下 本文实例讲述了j ...

随机推荐

  1. C++游戏服务器编程笔记 IP详解

    C++游戏服务器编程笔记 IP详解 IP详解 INTERNET的历史 上世纪60年底起源于美国 1992年,Internet上的主机超过了100万台 现在已经是现代文明人的必需品    TCP/IP的 ...

  2. jQuery俄罗斯方块游戏动画

    在线演示       本地下载

  3. golang(1):简介

    golang语言特性: 1. 垃圾回收 a. 内存自动回收,不需要开发人员管理内存,开发人员专注业务实现 b. 只需要new分配内存,不需要释放 2. 天然并发 a. 从语言层面支持并发,非常简单 b ...

  4. oppo 手机不能连接appium,提示does not have permission android.permission.CLEAR_APP_USER_DATA to clear data

    1)增加配置项noReset=true 2)除了常见开发者选项中打开usb调试,同时还需要开启以下2项,然后重启手机即可

  5. Docker架构及其三要素

    1.Docker架构 a.Docker客户端和服务端   Docker是客户-服务器(C/S)架构的程序.Docker客户端只需向Docker服务器或守护进程发出请求,服务器或守护进程将完成所有工作并 ...

  6. 依赖注入 php

    依赖注入:将当前类依赖的对象,以参数的方式注入到当前类中,简称依赖注入 <?php class Mi { public function size() { return '5.99寸全面屏'; ...

  7. Hive入门指南

    转自:http://blog.csdn.net/zhoudaxia/article/details/8842576 1.安装与配置 Hive是建立在Hadoop上的数据仓库软件,用于查询和管理存放在分 ...

  8. 虚拟机Linux下扩展硬盘的方法

    [原文链接]:http://blog.csdn.net/tianlesoftware/article/details/5642883 装虚拟机时空间划小了,于是又加了5G的空间,折腾了半天,挂上去了. ...

  9. 第二篇.1、python基础之数据类型与变量

    一.变量 1 什么是变量之声明变量 #变量名=变量值 age=18 gender1='male' gender2='female' 2 为什么要有变量 变量作用:“变”=>变化,“量”=> ...

  10. Rasa学习记录 01

    目录 Rasa的安装和简单的测试 什么是Rasa: 安装Rasa: 测试自带的数据 查看项目里的文件内容 举一反三(自己的第一个机器人) Rasa的安装和简单的测试 怪雨是新手,刚刚接触Rasa,以下 ...