Python—day10 函数的参数分类
一、实参与形参
1、形参:定义函数,在括号内声明的变量名,用来接受外界传来的值
def fn(形参们):
pass
def fn(a,b,c):# 形参就是考虑实参的值,随着函数的调用才会产生,并随着函数调用结束而销毁
# a,b c必须从外界获取值,才有意义
print(a)
print(b)
print(c)
# 外部提前产生了变量,内部可以使用(x,y,z)
print(x)
print(y)
print(z)
# x,y,z 是实际存在的值
x=10
y=20
z=30
2、实参:调用函数,在括号内传入的实际值,值可以为常量、变量、表达式或三者的组合
fn(x,y,z)
fn(10,20,30)
fn(x+10,y*2,z/5)
注:形参随着函数的调用而产生,随着调用结束而销毁(有特例)
混用
位置形参与默认形参同时存在,默认形参必须在后
def fn1(a,b,c=10,d=20):
print(a, b, c, d)
位置形参必须传值,默认形参分情况传值
fn1(100, 200, d=1000)
在函数的外部不能直接使用函数的形参,原因:函数调用完毕后,形参被销毁了
print(a)
print(b)
print(c)
二、实参与形参的分类
注:各种形参出现的先后
位置形参 - 默认形参 - 可变长位置形参 - 无|有初值关键字形参 - 可变长关键字参数
def fn(a, b, c=10, *args, d, e=20, f, **kwargs):
pass
# 位置形参:a、b
# 默认形参:c
# 可变长位置形参:args
# 无初值关键字形参:d、f
# 有初值关键字形参:e
# 可变长关键字参数:kwargs
1、实参分类:
位置实参:必须按照顺序给形参传值 def fn (a,b,c):
print(a,b,c) 位置形参可以由位置实参与关键字实参来传值
fn(10,20,30)
fn(a=10,b=20,c=30)
关键字实参:按照关键字给形参传值,所以顺序可以颠倒
fn1(a=10,b=20,c=30)
fn1(c=30,b=20,a=10)
注:混用
1.关键字实参必须出现在位置实参后
2.多个位置实参还是按照位置传参
3.关键字实参为没有从位置实参拿到值的形参传值,可以不用按照指定顺序 def fn2(a, b, c, d, e, f):
print(a, b, c, d, e, f)
fn2(10, 20, 30, e=100, f=500, d=200)
注:位置实参、关键字实参共存是,关键字实参必须出现在所有位置实参之后
2、形参分类:
2-1、位置形参:位置实参与关键字实参都可以对其传参
# positional argument
def fn(a, b, c):
print(a, b, c)
2-1、位置形参可以由 位置实参 与 关键字实参 来传值
fn(10, 20, 30)
fn(a=10, b=20, c=30)
2-3、默认形参:位置实参与关键字实参都可以对其传参,也可以不被传参(采用自身默认值)
fn()
fn(20, 30)
fn(a=200, b=300)
fn(100) # 就给a传
fn(b=100) # 就给b传
2-4、可变长位置形参:可变长形参会以 元组 形式接受 位置形参与默认形参未接受完的 所有传入的位置实参,用索引来取第几个
可变长形参只能由 位置实参 来传值 *****
def fn(a, b=10, *args):
print(a, b)
print(args)
小细节:可变长形参只能接受位置实参的值,位置实参还必须在关键字实参前,
导致默认形参只能由位置实参来传值
fn(1, 20, 100, 200) # 1给a 20给b,不能用b=20传 100,200给args
def fn(*args):
print(args)
fn(,,,,)# 输出(,,,,) a='ab'
b=[,]
c=(,)
d={,} fn(a) #('ab',)
fn(b)#([,],)
fn(c)#((,),)
fn(d)#({,},) *单列集合(保护字符串)将该变量进行 打散 传值(本质传递的是地址)
fn(*a)
fn(*b)
fn(*c)
fn(*d) 打散
def fn1(*args):
print(args)
ls=[,,,,]
fn1(ls)# 输出的结果是([,,,,],) fn1(*ls)
将ls打散为1,,,,5再进行传值=》》(,,,,)
2-5、无初值关键字形参:只能由关键字实参传值
前提:出现在 * 之后的形参
def fn(a, b=10, *, c, d=20, e):
pass
# c,d,e都是出现在*之后,都是关键字形参,由于必须由 关键字实参 来传值,没有顺序的强行要求
2-6、有初值关键字形参:只能由关键字实参传值,也可以不被传值
* 为分割线,可以有变量名如*args,也可以只用做分隔
a:位置
b:默认
c,e:无值关键字形参
d:有值关键字形参 注
a和b有先后顺序
c,d,e无先后顺序
2-7、可变长关键字形参:用来接收没有被关键字形参接收完的关键字形参,也只能由关键字实参来传值
用字典来存放数据
def fn(**kwargs):
print(kwargs)
fn(a=10,b=20) # {'a': 10, 'b': 20}
dic = {'x': 100, 'y': 200}
fn(**dic) # {'x': 100, 'y': 200}
def fn(*,a,b=,c,**kwargs):
print(a,b)
print(kwargs)
fn(d=,e=,a=,c=) # 随便定义一些值,输出a,b的值 整体赋值
dic={'name':'Owen','age':}
def fn1(**kwargs):
print(kwargs) fn1(**dic) #输出结果{'name':'Owen','age':} def fn1(**dic):
print(**dic)
dd={
'k1':[,,,,],
'k2':{'name':'Bob'} }
fn1(**dd) def fn2(*args):
print(args)
ll=[,[,],{'name':'Bob'}]
fn2(*ll) # 输出结果(,[,],{'name':'Bob'})
三、可变参数的整体使用
如:接收10,20,30三个数
def fn1(*args):
print(args) # (10, 20, 30)
第一种传参
fn1(10, 20, 30)
第二种传参
t = (10, 20, 30) # 单列集合及字符串类型都可以
fn1(*t)
def fn2(**kwargs):
print(kwargs) # {'name': 'Owen', 'age': 18}
第一种传参
fn2(name='Owen', age=18)
第二种传参
d = {'name': 'Owen', 'age': 18} # 单列集合及字符串类型都可以
fn2(**d)
Python—day10 函数的参数分类的更多相关文章
- python基础——函数的参数
python基础——函数的参数 定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了.对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复 ...
- Python进阶-函数默认参数
Python进阶-函数默认参数 写在前面 如非特别说明,下文均基于Python3 一.默认参数 python为了简化函数的调用,提供了默认参数机制: def pow(x, n = 2): r = 1 ...
- 深入理解python中函数传递参数是值传递还是引用传递
深入理解python中函数传递参数是值传递还是引用传递 目前网络上大部分博客的结论都是这样的: Python不允许程序员选择采用传值还是传 引用.Python参数传递采用的肯定是"传对象引用 ...
- Python中函数传递参数有四种形式
Python中函数传递参数有四种形式 fun1(a,b,c) fun2(a=1,b=2,c=3) fun3(*args) fun4(**kargs) 四种中最常见是前两种,基本上一般点的教程都会涉及, ...
- 讲讲python中函数的参数
python中函数的参数 形参:定义函数时代表函数的形式参数 实参:调用函数时传入的实际参数 列如: def f(x,y): # x,y形参 print(x, y) f(1, 2) # 1, 2 实参 ...
- day10 python之函数的参数
函数的基本属性 1.1 函数的含义 # 1.功能 :包裹代码,实现功能,达到目的 # 2.特点 :反复调用,提高开发效率,便于代码维护 1.1.2 函数的基本格式 # 函数名 :变量命名规则 # 函数 ...
- python 中函数的参数
一.python中的函数参数形式 python中函数一般有四种表现形式: 1.def function(arg1, arg2, arg3...) 这种是python中最常见的一中函数参数定义形式,函数 ...
- python中函数的参数解析
python中函数的各种参数梳理: 1.形参:函数定义时传入的参数 2.实参:函数调用时传入的参数 (有形参必传实参,形参里自身特点可不传的,可传可不传) 3.缺省参数:不传为默认值,传了会覆盖(下面 ...
- python 之 函数的参数
函数的参数好几种类型:包括位置参数.默认参数.可变参数.关键字参数.命名关键字参数. 廖大神python学习笔记,大神网站:百度搜索“廖雪峰的官网” 1.位置参数:调用函数时根据函数定义的参数位置来传 ...
随机推荐
- linux 搭建ftp服务并设置限制访问目录
服务器有好几个项目,新项目前端外包,因为要微信授权登陆,所以前端没有办法本地调试,必须上次ftp在我们服务器上调试代码,当然要限制ftp访问的目录,否则整个服务器项目都能看到了. 安装vsftpd s ...
- C语言作业06--结构体&文件
1.本章学习总结 1.1 思维导图 1.2学习体会 在本周的学习中,我们学习了关于结构体和文件的内容.定义结构体可以使代码整个练习更加紧密,非常实用,当我们需要在对一个个体的不同属性调用时可以更加系统 ...
- BZOJ1173 CDQ分治 笔记
目录 二维数据结构->cdq 预备知识 T1: 二维树状数组 T2:cdq分治 bzoj1176 mokia:Debug心得 一类特殊的CDQ分治 附: bzoj mokia AC代码 二维数据 ...
- C++入门笔记(一)零碎基础知识
零碎基础知识 一.创建和运行程序 1.使用文本编辑器编写程序,保存为文件,该文件就叫源代码. 2.编译源代码:运行一个程序,将源代码翻译为主机使用的内部语言----机器语言.包含了 编译后程序的文件就 ...
- [Ubuntu]Firefox书签Ubuntu与Windows同步
Ubuntu默认使用Firefox国际版.其他平台访问官网下载到的都是中国版,而国际版和中国版使用两套账号体系,相互之间无法同步,导致Ubuntu的Firefox无法和其他平台的Firefox同步书签 ...
- vmware虚机 修改bios方法
.vmx文件添加以下行,会在下次启动时自动出现bios,并会将"TRUE"改为“false” bios.forceSetupOnce = "TRUE"
- vuex的一些学习
刚开始学vuex看文档看的一脸懵逼,故而网上各种查找资料,视频去观看学习,虽然看了很多还是很蒙圈,最近看了一个讲vuex的视频还有一个 类似的简书文档从中学到了很多,慢慢理清了头绪,至此记录一下,共同 ...
- Php中文件下载功能实现超详细流程分析
浏览器发送一个请求,请求访问服务器中的某个网页(如:down.php),该网页的代码如下 客户端从服务端下载文件的流程分析: 浏览器发送一个请求,请求访问服务器中的某个网页(如:down.php) ...
- Linux_常用命令简单介绍(netstat,awk,top,tail,head,less,more,cat,nl)
1.netstat netstat -tnl | grep 443 (查看443端口是否被占用) root用户,用netstat -pnl | grep 443 (还可显示出占用本机443端口的进程P ...
- [LeetCode] Possible Bipartition 可能的二分图
Given a set of N people (numbered 1, 2, ..., N), we would like to split everyone into two groups of ...