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变量的赋值是引用去绑定该对象. 可变对象的数据发生改变,例如列表和字典,引用 ...
随机推荐
- linux 系统环境变量配置
使用Ubuntu 进行开发绕不开的就是环境变量的配置,由于Linux系统严格的权限管理,造成Ubuntu系统有多个环境变量配置文件,如果不了解其调用顺序,很有可能遇到配置了环境变量,而没有其作用的问题 ...
- PADS LAYOUT的一般流程
1.概述 本文档的目的在于说明使用PADS的印制板设计软件PowerPCB进行印制板设计的流程和一些注意事项,为一个工作组的设计人员提供设计规 范,方便设计人员之间进行交流和相互检查. 2.设计 ...
- Java中class的声明
在Java中下面Class的声明哪些是错误的?(A,B,C) A:public abstract final class Test { abstract void method();} B:pub ...
- handsonetable+vue 表格在线编辑
<template> <div> <div id="example-container" class="wrapper"> ...
- Python学习之==>接口开发
一.开发接口的作用 1.在别的接口没有开发完成的时候可以模拟一些接口以便测试已经开发完成的接口,例如假的支付接口,模拟支付成功.支付失败. 2.了解接口是如何实现的:数据交互.数据返回 3.开发给别人 ...
- Java面试题集(116-135)
Java程序员面试题集(116-135) 摘要:这一部分讲解基于Java的Web开发相关面试题,即便在Java走向没落的当下,基于Java的Web开发因为拥有非常成熟的解决方案,仍然被广泛应用.不管你 ...
- css之——div模拟textarea文本域的实现
1.问题的出现: <textarea>标签为表单元素,但一般用于多行文本的输入,但是有一个明显的缺点就是不能实现高度自适应,内容过多就回出现滚动条. 为了实现高度自适应:用div标签来代模 ...
- Servlet 三种创建方式
servlet 是运行在 Web 服务器(tomcat)中的小型 Java 程序(即:服务器端的小应用程序) (其实就是一个java类,只不过不用再new了).servlet 通常通过 HTTP(超文 ...
- 63 (OC)* NSAutoreleasePool 自动释放池
目录 0:ARC 1: 自动释放池 2:NSAutoreleasePool实现原理 3:autorelease 方法 4: Runloop和Autorelease的关系 5: Using Autore ...
- 前端 CSS的选择器
什么是选择器.在一个HTML页面中会有很多很多的元素,不同的元素可能会有不同的样式,某些元素又需要设置相同的样式,选择器就是用来从HTML页面中查找特定元素的,找到元素之后就可以为它们设置样式了. 选 ...