一个*传参:

  方式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. P1076 寻宝

    P1076 寻宝 题解 这道题真是感人啊,废了蒟蒻一天的时间 关键 1. a[ k ][ ] 数组记录第k层有楼梯房间的编号 a[ k ][ 0 ]  第k层有几个有楼梯的房间 a[ k ][ i ] ...

  2. WPF C# 创建缩略图

    不太精确的方法: public bool ThumbnailCallback() { return false; } private void CreateThumb(int toWidth) { S ...

  3. 看天猫EDM营销学企业EDM营销

    众所周知,天猫EDM营销在业内算做的风生水起,相当不错.本文就由天猫EDM营销来教大家学做企业EDM营销. 1.邮件内容相对精美,并都带有天猫tmall各个栏目的链接,并且对于重点推出了的几个店铺给出 ...

  4. Binary-to-text ecoding:

    binary to Text ecoding是指将二进制数据转换成可打印的符号 如果传输channel 不允许二进制数据(如email) 一般使用Base64 ASCII 标准使用128位来表示字母数 ...

  5. 阶段3 1.Mybatis_01.Mybatis课程介绍及环境搭建_03.jdbc操作数据库的问题分析

    分析一段代码,传统的jdbc的功能,最终要实现的功能就是sql语句.

  6. 中国MOOC_零基础学Java语言_第4周 循环控制_2念整数

    2 念整数(5分) 题目内容: 你的程序要读入一个整数,范围是[-100000,100000].然后,用汉语拼音将这个整数的每一位输出出来. 如输入1234,则输出: yi er san si 注意, ...

  7. Android专项测试监控资源

    版本号 V 1.1.0 Android性能测试分为两类:1.一类为rom版本(系统)的性能测试2.一类为应用app的性能测试(本次主要关注点为app的性能测试) Android的app性能测试包括的测 ...

  8. linux文件属性软链接

    linux里的软链接 相当于windows系统中的快捷方式 软链接总结: 1.删除源文件,软链接文件依然存在,但是无法访问指向源文件路径内容. 2.失效时候一般是白字红底闪烁显示. test -> ...

  9. 第三次实验报告&&学习总结

    实验三 String类的应用 实验目的 掌握类String类的使用: 学会使用JDK帮助文档: 实验内容 1.已知字符串:"this is a test of java".按要求执 ...

  10. 【监控实践】【4.2】perfmon监控性能计数器(基于typeperf命令)

    关键词:typeperf typeperf 命令 使用示例: 案例1:#使用typeperf收集windows cpu.内存.硬盘性能 #使用typeperf收集windows cpu.内存.硬盘性能 ...