python碎片 - 函数参数
一个*传参:
方式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碎片 - 函数参数的更多相关文章
- (转)python中函数参数中如果带有默认参数list的特殊情况
在python中函数参数中如果带有默认参数list遇到问题 先看一段代码 1 2 3 4 5 6 7 8 9 def f(x,l=[]): for i in range(x): ...
- python中函数参数的引用方式
值传递和引用传递时C++中的概念,在python中函数参数的传递是变量指向的对象的物理内存地址!!! python不允许程序员选择采用传值还是传引用.Python参数传递采用的肯定是“传对象引用”的方 ...
- Python基础-函数参数
Python基础-函数参数 写在前面 如非特别说明,下文均基于Python3 摘要 本文详细介绍了函数的各种形参类型,包括位置参数,默认参数值,关键字参数,任意参数列表,强制关键字参数:也介绍了调用函 ...
- Python之函数&参数&参数解构
1.1函数定义 def 函数名(参数列表): 函数体(代码块) [return 返回值] p 函数名就是标识符,命名要求一样 语句块必须缩进,约定4个空格 Python的函数没有return语句,隐式 ...
- Python 可变长度函数参数
func( *tuple_grp_nonkw_args, **dict_grp_kw_args ) 在编程的过程中,我们可能会遇到函数参数个数不固定的情况.这时就需要使用可变长度的函数参数来实现我们的 ...
- python中函数参数
默认参数注意点 优点:灵活,当没有指定与形参对应的实参时就会使用默认参数 缺陷: 例子: >>> def h(m, l=[]): #默认参数时列 ...
- 对Python中函数参数类型及排序问题,三个方面的总结
Python中函数的参数问题有点复杂,主要是因为参数类型问题导致的情况比较多,下面来分析一下. 参数类型:缺省参数,关键字参数,不定长位置参数,不定长关键字参数. 其实总共可以分为 位置参数和关键字参 ...
- 第5.2节 Python的函数参数收集
函数的参数使用除了常规的位置参数和关键字参数外,还支持可变个数的函数参数,这种支持可变个数的参数方法称为参数收集,对应的参数称为收集参数. 一.参数收集的定义 Python的函数支持可变不定数量的参数 ...
- python的函数参数传递方式
python的一切数据类型都是对象.但是python的对象分为不可变对象和可变对象.python的变量是引用,对python变量的赋值是引用去绑定该对象. 可变对象的数据发生改变,例如列表和字典,引用 ...
随机推荐
- Deepin 系统下设置Apache虚拟主机站点
1,在 var/www/html 文件夹中创建一个文件夹,命名为 a ,用来作为我们的PHP项目文件夹. 2,找到 etc/apache2/sites-available 文件夹,在文件夹中创建一个站 ...
- 三:flask-配置文件的两种方式
项目中,配置的参数一般采用配置文件的形式,方便统一管理 第一种方式:模块的形式:使用app.config.from_object(config)的方式加载配置文件,此方式需要导入配置文件视为模块 第二 ...
- Spring的应用上下文ApplicationContext
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes() ...
- mysql 锁超时
对一个别人正在读写的表执行DDL操作,经常需要先锁表,但是这个表正在被人执行读写操作,那么就会报:Lock wait timeout 类的错误. 通过MDB实例详情页面的进程管理可以看到类似如下的情况 ...
- 001-Django简介与项目创建
简介 django,是用python语言写的开源web开发框架,并遵循MVC设计 主要目的是简便.快速的开发数据库驱动的网站 强调代码复用,有很多第三方插件,强调快速开发和DRY(DoNotRepea ...
- 【MM系列】SAP 物料进销存报表查看
公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]在SAP里查看数据的方法 前言部 ...
- Matlab与C++混合编程 1--在C++中调用自己写的matlab函数
在Visual Studio中使用C++中调用MATLAB程序 在matlab中可以通过mbuild工具将.m文件编译成dll文件供外部的C++程序调用,这样就可以实现matlab和C++混合编程的目 ...
- ActiveMQ学习教程/1.简要介绍与安装
ActiveMQ学习教程(一)——简要介绍与安装 一.名词: 1.JMS:即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的 ...
- IIS7下配置web.config隐藏index.php
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.we ...
- linux工具之screen
screen官方网址:http://www.gnu.org/software/screen/ 参考文章:http://man.linuxde.net/screen 简介 Screen是一款由GNU计划 ...