一个*传参:

  方式1:如果想传一个列表中的值,实参前加*。如: *[1,2,3]

  方式2:直接传入一个列表,不加*。如[1,2,3],则传入的是一整个列表,包括[]

两个**传参:

  方式1,:{name = 'zhuo'}

  方式2:**{'name':'zhuo','age':'23'}

 def  name(*y,**z):

   print(y,z)

 name(*[,,],**{'name':zhuo'}) #打印(1,2,3 ),{'name':'zhuo'}

 name([,,],{'name':'zhuo'}) #打印([,,],{'name':'zhuo'}) , {}

 name([,,],{name = 'zhuo'}) #打印[,,],{'name':'zhuo'}

形参

实参

位置参数:必须一一对应,不能缺少或增多,位置参数必须要在关键字参数左边

 (1)求x的n次方
def power(x,n): #x,n为位置参数
s=1
while n>0:
n=n-1
s=s*x
return s

关键字参数:

 5、关键字参数 ** (可以传入0到任意个关键字参数,格式 city='longyan')
>>> def person(name,age,**kw):
print('name:',name,'age:',age,'other:',kw)
(1)传入新的dict参数
>>> person('zhuo',22,city='longyan') # city='longyan'为关键字参数
name: zhuo age: 22 other: {'city': 'longyan'}
(2)使用现成的dict
>>> extra={'city:':'Beijing','job':'leader'}
>>> person('zhuo',22,city=extra['city:'],job=extra['job'])
name: zhuo age: 22 other: {'city': 'Beijing', 'job': 'leader'}
(3)使用现成的dict+ ** extra(**表示默认传入dict extra中的所有元素)
>>> person('zhuo',22,**extra)
name: zhuo age: 22 other: {'city:': 'Beijing', 'job': 'leader'}
● 在person函数里,我们保证能接收到name和age这两个参数,但是,如果调用者愿意提供更多的参数,我们也能收到
 6、命名关键字参数 , *,
(1)检查person函数内是否有city和job参数
def person(name,age,**kw):
if ‘city’ in kw:
#有city函数
pass
if ‘job’ in kw:
#有job函数
pass
print(name,age,kw) (2)限制关键字名字,分隔符 ,*,
命名关键字参数必须传入参数名,这和位置参数不同。如果没有传入参数名,调用将报错
def person(name, age, *, city, job):
print(name, age, city, job)
>>> person('Jack', 24, city='Beijing', job='Engineer')
Jack 24 Beijing Engineer

默认参数:调用函数时可以不传参数,使用定义时的默认参数

 默认参数(默认参数必须指向不变对象)
#默认参数使用注意事项:
#1.必选参数在前,默认参数在后
#2.有多个参数时,把变化大的参数放前面,变化小的参数放后面。后变化小的的可以作为默认参数
def power(x, n=2):
s = 1
while n > 0:
n = n - 1
s = s * x
return s
#可按自动顺序改变默认参数值,也可指定改变默认参数的值(如city本来是第四个参数,‘shenzheng’)
>>> enroll('zhu=o',5,city='longyan')
name: zhu=o
gender: 5
age: 6
city longyan #3.默认参数的坑(所以参数要定义为不变参数)
>>> add_end()
['END']
>>> add_end()
['END', 'END']
>>> add_end()
['END', 'END', 'END'

参数组(非固定参数):

 def  func(x,*args):
print(args)
func(1,['x','y','z'])
#(['x', 'y', 'z'],) 实参前不加*,默认传入的是一个元组,且该列表是元组中的第一个数据
func(1,*['x','y','z'])
#('x', 'y', 'z')实参前加*,表示传入的是一个整体列表
 可变参数 *
#计算a2 + b2 + c2 + ……
def calc(number):
sum=0
for i in number:
sum=i*i+sum
return sum
(1)传入新的列表参数
>>> print(calc([1,2,3]))
14
(2)使用现成的列表(角标)
>>> nums=[1,2,3]
>>> print(calc([nums[0],nums[1]]))
5
(3)使用 *nums 把nums列表的所有元素作为可变参数传入
>>> print(calc([*nums]))
14

python碎片 - 函数参数的更多相关文章

  1. (转)python中函数参数中如果带有默认参数list的特殊情况

    在python中函数参数中如果带有默认参数list遇到问题 先看一段代码 1 2 3 4 5 6 7 8 9 def f(x,l=[]):     for i in range(x):         ...

  2. python中函数参数的引用方式

    值传递和引用传递时C++中的概念,在python中函数参数的传递是变量指向的对象的物理内存地址!!! python不允许程序员选择采用传值还是传引用.Python参数传递采用的肯定是“传对象引用”的方 ...

  3. Python基础-函数参数

    Python基础-函数参数 写在前面 如非特别说明,下文均基于Python3 摘要 本文详细介绍了函数的各种形参类型,包括位置参数,默认参数值,关键字参数,任意参数列表,强制关键字参数:也介绍了调用函 ...

  4. Python之函数&参数&参数解构

    1.1函数定义 def 函数名(参数列表): 函数体(代码块) [return 返回值] p 函数名就是标识符,命名要求一样 语句块必须缩进,约定4个空格 Python的函数没有return语句,隐式 ...

  5. Python 可变长度函数参数

    func( *tuple_grp_nonkw_args, **dict_grp_kw_args ) 在编程的过程中,我们可能会遇到函数参数个数不固定的情况.这时就需要使用可变长度的函数参数来实现我们的 ...

  6. python中函数参数

    默认参数注意点 优点:灵活,当没有指定与形参对应的实参时就会使用默认参数 缺陷: 例子: >>> def h(m, l=[]):                    #默认参数时列 ...

  7. 对Python中函数参数类型及排序问题,三个方面的总结

    Python中函数的参数问题有点复杂,主要是因为参数类型问题导致的情况比较多,下面来分析一下. 参数类型:缺省参数,关键字参数,不定长位置参数,不定长关键字参数. 其实总共可以分为 位置参数和关键字参 ...

  8. 第5.2节 Python的函数参数收集

    函数的参数使用除了常规的位置参数和关键字参数外,还支持可变个数的函数参数,这种支持可变个数的参数方法称为参数收集,对应的参数称为收集参数. 一.参数收集的定义 Python的函数支持可变不定数量的参数 ...

  9. python的函数参数传递方式

    python的一切数据类型都是对象.但是python的对象分为不可变对象和可变对象.python的变量是引用,对python变量的赋值是引用去绑定该对象. 可变对象的数据发生改变,例如列表和字典,引用 ...

随机推荐

  1. 基于球分割的空间二叉树检索算法(sphere-kdtree)

    sphere-kdtree算法思路说明 具体思路如下: 第一.球半径分割,即利用不同的球半径,将三维空间点(向量)分割成多块.所以首先要求确定的就是分割多少块,怎么设置半径最合理. 第二.三维空间点平 ...

  2. VBA通过C#以API方式调用JS脚本函数

    http://www.cnblogs.com/Charltsing/p/JSDotNetAPI.html 在网页采集中,很多时候需要运行网站下载的某个js文件中的函数,以计算Request参数.VBA ...

  3. 1、VMware安装步骤

    最后重启电脑

  4. gson转换json到bean时重命名

    @Expose   @SerializedName("0001") public Map<String,ChannelBean> c0001 = new HashMap ...

  5. 2018-5 - 热经 - 北京中地时空数码科技有限公司 - 研发工程师(WEBGIS 方向)

    一面: 登记,填写个人信息 笔试 选择题: HTML,CSS,JS 的选择题,都是基础题.其中有一道问哪个不是 document 的属性或方法,我在 bgColor 和 focus() 上面纠结了一下 ...

  6. Nginx1.8源码包编译安装

    1.下载解压Nginx,为方便管理下载包一般将下载包放在指定目录下 ,即/usr/local/src/下. wget http://nginx.org/download/nginx-1.8.0.tar ...

  7. 阶段3 1.Mybatis_06.使用Mybatis完成DAO层的开发_8 properties标签的使用及细节

    properties 可以把数据库链接的配置放在上面的properties里面 #{占位符}的形式去引用上面的.下面的内容就是引用上面的内容的定义. 运行查询的方法测试一下 这样改造可以成功的运行程序 ...

  8. vue 请求完接口后执行方法

    getLunbo: function() { var that = this; that.lunbo = []; // api.showProgress({ // title: '加载中' // }) ...

  9. 超详细 SpringMVC @RequestMapping 注解使用技巧

    @RequestMapping 是 Spring Web 应用程序中最常被用到的注解之一.这个注解会将 HTTP 请求映射到 MVC 和 REST 控制器的处理方法上. 在这篇文章中,你将会看到 @R ...

  10. C++ Primer笔记(1)——连续读取数据、类型对应的尺寸、类型转换、字符串分行写法

    这次要看看C++ Primer,这本基本上就是必读书籍了.下面的内容就是一些之前没有学过的知识的笔记. 读取数量不定的输入数据 虽然很简单,但是还是记一下: #include <iostream ...