一个*传参:

  方式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. postgres 数据导入导出

    # 导出表结构 pg_dump  -U postgres -s helloworld > hello.sql  # 导出表数据 pg_dump  -U postgres helloworld & ...

  2. 五、RF中UI自动化操作基础

    列表分类 1.打开浏览器 Open Browser   url   browser [ url | browser=firefox | alias=None | remote_url=False | ...

  3. 二:flask-debug模式详解

    debug模式的情况下可以抛出详细异常信息 新建一个脚本并运行 访问 此时是非debug模式,如果运行的时候代码报错了,是不会提示详细错误的,只会报服务器内部错误 开启debug模式,可以查看到详细错 ...

  4. Delphi的类与继承

    既然已经做出了com程序用delphi来开发的决定,那当然就要对delphi进行一些深入的了解.有人说delphi是一个用控件堆砌起来的工具,和vb没什么两样:也有人说dephi实际上是面向过程的,他 ...

  5. note.js使用express创建项目的步骤以及ip和端口配置

    1.安装express npm install -g express 2.创建项目 express -e 项目名称 3.打开cmd进入项目目录安装依赖 npm install 4.打开配置文件./bi ...

  6. js函数的定义和调用

    函数的定义 函数使用function 声明,后跟一组参数以及函数体,语法如下: function functionName([age0,age1,......argn]){ statements } ...

  7. js中 json对象的转化 JSON.parse()

    JSON.parse() 方法用来解析JSON字符串,json.parse()将字符串转成json对象.构造由字符串描述的JavaScript值或对象.提供可选的reviver函数用以在返回之前对所得 ...

  8. Java——LinkedList底层源码分析

    1.简介 LinkedList 是用链表结构存储数据的,很适合数据的动态插入和删除,随机访问和遍历速度比较慢.另外,他还提供了 List 接口中没有定义的方法,专门用于操作表头和表尾元素,可以当作堆栈 ...

  9. Larkin’s NOI

    Larkin’s NOI Problem Description Larkin has been to Yantai to take part in NOI 2010!众所周知(do you know ...

  10. 类———用类定义对象———error:C++表达式必须包含类类型

    //原文参考https://blog.csdn.net/lanchunhui/article/details/52503332 你以为你定义了一个类的对象,其实在编译器看来你是声明了一个函数 clas ...