python中argument函数_PythonStudy——函数的参数 Function argument

形参与实参

# 参数介绍:

# 函数为什么要有参数:因为内部的函数体需要外部的数据

# 怎么定义函数的参数:在定义函数阶段,函数名后面()中来定义函数的参数

# 怎么使用函数的参数:在函数体中用定义的参数名直接使用

# 实参:有实际意义的参数

# -- 在函数调用的时候,()中传入的参数

# 形参:参数本身没有意义,有实参赋予形参值后,该形参就具备了意义

# 补充:有默认值的形参,在没有被实参赋值,具备的是自身意义,但一旦被实参赋值,意义同实参 - def add(n1, n2=2):

# -- 在定义函数的时候,()中出现的参数

# 形参范畴

def add(n1, n2): #形参n1,n2在没有被实参赋值时,没有实际意义,被什么意义的实参赋值,就被赋予了什么意义

return n1 + n2

# 实参范畴

print(add('a', 'b')) #实际的字符串

print(add(10, 20)) #实际的数字

a = 200b= 300

print(add(a, b)) #存放实际数字的变量

形参是对实参的值拷贝

# 形参与实参可以重名,但是代表的是两个不同的变量

# 不可变类型,形参发生重指向,实参不变

deffn(num):print('1>>>:', num) #10

num = 20

print('2>>>:', num) #20

num= 10fn(num)print('3>>>:', num) #10

# 可变类型,形参发生值的内部变化,实参变,两个指向的是同一个地址

deffunc(ls):print('1>>>:', ls) #[10]

ls.append(20)print('2>>>:', ls) #[10, 20]

ls= [10]

func(ls)print('3>>>:', ls) #[10, 20]

实参的分类

# 实参分为:1.位置实参 2.关键字实参

deffn(a, b):print(a, b)

# 1)拿实际值进行传参

fn(10, 20) #10 => a | 20 => b

# 2)拿位置实参进行传参:形参与实参进行位置一一对应,eg:一号为的实参一定传给一号位的形参

a = 100b= 200fn(a, b)#a:100 => a | b:200 => b

fn(b, a) #b:200 => a | a:100 => b

# 3)拿关键字实参进行传参:指名道姓进行传参 - 传参的过程过指名道姓形参

# 明确:形参名目前为a和b

fn(a=1000, b=2000) #a:1000 => a | b:2000 => b

fn(b=2000, a=1000) #b:2000 => b | a:1000 => a

a = 666b= 888

# 前面的是形参名,后面的是传递的实参名

fn(a=a, b=b) #a:666 => a | b:888 => b

# 位置实参:一定按照位置,且个数要一一对应进行传参

# 关键字实参:指名道姓进行传参,个数一致位置可以改变进行传参

# 实参组合传参规则:必须先传位置实参,再传关键字实参

形参的分类

# 六大分类:

# 1.无值位置形参(位置形参):可以被位置与关键字实参进行传参,必须传值

# 2.有值位置形参(默认形参):可以被位置与关键字实参进行传参,可以不用传参采用默认值

# 3.可变长位置形参:可以接受前两个没有接收完位置实参,接收的个数可以为0~n个,0个是就是空元组

# 4.无值关键字形参:只能由关键字实参进行传参,必须传值

# 5.有值关键字形参:只能由关键字实参进行传参,可以不用传参采用默认值

# 6.可变长关键字形参:接收4,5没有接收完的关键字实参,接收的个数可以为0~n个,0个是就是空字典

# 声明顺序:

# 位置形参:a -> 默认形参:b -> 可变长位置形参:args -> 有无默认值关键字形参:cde -> 可变长关键字形参:kwargs

def fn(a, b=10, *args, c, d=20, e, **kwargs):pass

# 注意点:

# 1.可变长位置形参只能接受位置实参,要想被附上值,前面的有值位置形参的默认值没有多大意义

# 2.args与kwargs是可变长形参的变量名,所以可以自定义,但约定俗成就用它俩

# 常出现的组合

def f1(*args, **kwargs):

pass

def f2(a, b=10, **kwargs):

pass

def f3(a, *args, **kwargs):

pass

def f4(a, *, x, **kwargs):

pass

def f5(a, *args, x, **kwargs):

pass

# 使用法则:

# 1.所有位置形参全部采用位置实参进行传值

# 2.所有关键字形参全部采用关键字实参进行传值

# 3.不管位置还是关键字形参,全部按照顺序进行传参

可变参数的整体使用

# 1、可变位置形参以元组方式接收值

# 如:接收10,20,30三个数

def fn1(*args):print(args) #(10, 20, 30)

# 第一种传参

fn1(10, 20, 30)

# 第二种传参

t = (10, 20, 30) #单列集合及字符串类型都可以

fn1(*t)

# 2、可变位置实参以字典方式接收值

def fn2(**kwargs):print(kwargs) #{'name': 'Owen', 'age': 18}

# 第一种传参

fn2(name='Owen', age=18)

# 第二种传参

d = {'name': 'Owen', 'age': 18} #单列集合及字符串类型都可以

fn2(**d)

函数对象

# 函数名就是存放了函数的内存地址,存放了内存地址的变量都是对象,即 函数名 就是 函数对象

打散机制

def fn(*args, **kwargs):print(args)print(kwargs)

t= (1, 2, 3)

dic= {'a': 100, 'b': 200, 'c': 300}

# *单列容器 会打散单列容器

# **双列容器 会打散双列容器

fn(1, 2, 3, a=100, b=200, c=300) #(1, 2, 3) {'a': 100, 'b': 200, 'c': 300}

fn(*t, **dic) #(1, 2, 3) {'a': 100, 'b': 200, 'c': 300}

fn(*(1, 2, 3), **{'a': 100, 'b': 200, 'c': 300}) #(1, 2, 3) {'a': 100, 'b': 200, 'c': 300}

# 字符串也可以被打散

fn(*'abc') #('a', 'b', 'c') {}

print(*'abc') #a b c

# 测试:

def xingxing_test(*args, **kwargs):print(args)print(kwargs)print('-------------------------------------------------------------------')print(*args)print(*kwargs)#print(**args) # 报错

#print(**kwargs) # 报错

xingxing_test(str_1, list_2, tuple_2, dic_3, set_4)

输出:

('abcd', [3, 4, 5], (1, 2, 3), {'a': 1, 'b': {'c': 1}}, {'g', 'f', 'e', 'h'})

{}-------------------------------------------------------------------abcd [3, 4, 5] (1, 2, 3) {'a': 1, 'b': {'c': 1}} {'g', 'f', 'e', 'h'}

xingxing_test(*str_1, *list_2, *tuple_2, **dic_3)

输出:

('a', 'b', 'c', 'd', 3, 4, 5, 1, 2, 3)

{'a': 1, 'b': {'c': 1}}-------------------------------------------------------------------a b c d3 4 5 1 2 3a b

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/527308.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matlab 分隔线,matlab字符分割方法

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼以下是我编的,您给看一下,往下我就不会了。。。。。希望您能帮帮我clear allclose alliimread(C:\Users\lenovo\Desktop\验证码.bmp)jrgb2gray(i)figure(1),imshow(i),title(原始彩色图像)figure,imshow(j),…

oracle fs1 2多少u,甲骨文FS1系列闪存的“大道至简”

近年来,存储技术中,闪存技术顶着“最高效挖掘数据能力”和“最小容量需求”的称号试图颠覆传统存储的技术架构和竞争格局。据IDC预测,全闪存存储阵列市场规模在2015年将增至12亿美元,而到2016年这一市场将增至16亿美元&#xff0c…

python boxplot orient_Python 可视化 | Seaborn5 分钟入门 (三)——boxplot 和 violinplot

微信公众号:「Python读财」如有问题或建议,请公众号留言Seaborn是基于matplotlib的Python可视化库。 它提供了一个高级界面来绘制有吸引力的统计图形。Seaborn其实是在matplotlib的基础上进行了更高级的API封装,从而使得作图更加容易&#xf…

kibana 更新 索引模式_升级 Kibana - Kibana 中文文档

IMPORTANT:在升级 Kibana 之前:请参考重要变更文档。在升级生产服务之前请先在测试环境测试升级。使用 Elasticsearch 的 snapshots 特性备份数据。除非存在备份数据,否则版本 不能向前回滚 。如果使用了自定义插件,检查其是否有兼容版本。从…

oracle裁员原因_Oracle大幅度裁员意味着什么?

近日,Oracle开始大幅度裁撤中国区研发中心(CDC),整个CDC一共1600人,被裁掉的将有900人,近六成的员工将面临失业。Oracle中国如此大动作裁员的原因究竟是什么呢?2018财年,甲骨文总营收为398.31亿美元&#x…

oracle计算1到一百偶数的和,Perl 打印在1..100内所有偶数和奇数

#!/usr/bin/perl -w#本程序用来打印#1-100的所有偶数#1-100的所有奇数#1-100里所有以1、2、7结尾的数for(my $i1;$i<100;$i){if (!($i % 2)){print "$i\t";}}print "\n";for(my $i1;$i<100;$i){if ($i % 2){print "$i\t";}}print "\n…

python微信集成_Python微信公众号后台开发005:集成智能聊天机器人​

​给公众号集成一个智能聊天机器人一、前述ChatterBot是一个基于机器学习的聊天机器人引擎&#xff0c;构建在python上&#xff0c;主要特点是可以自可以从已有的对话中进行学(jiyi)习(pipei)。二、具体1、安装是的&#xff0c;安装超级简单&#xff0c;用pip就可以啦pip insta…

django oracle 性能,4.利用Django在前端展示Oracle 状态趋势

利用Django在前端展示Oracle 状态趋势2017-12-15 Python 宅必备开发环境操作系统:CentOS 7.4Python版本 :3.6Django版本: 1.10.5操作系统用户:oms数据处理:pandas前端展示:highcharts通过上面我们已介绍了如何定时获取系统Oracle状态语句以及如何利用pandas处理成highcharts识别…

分段二次插值例题_分段三次插值

摘要用函数来表示变量间的数量关系广泛应用于各学科领域&#xff0c;但是在实际问题中&#xff0c;往往是通过实验、观测以及计算等方法&#xff0c;得到的是函数在一些点上的函数值。如何通过这些离散数据找到函数的一个满足精度要求且便于使用的近似表达式&#xff0c;是经常…

linux文件在哪个分区,linux下肿么查看目录所在的分区

1、用df 命令查看查看目录所在分区&#xff0c;例如查看/var目录所在分区&#xff1a;[rootlocalhost var]# df -h /varFilesystem Size Used Avail Use% Mounted on/dev/mapper/vg1-lvroot 51G 2.6G 46G 6% /mounted on 列下面就是所在的分区2、如果还想看磁盘分区情况&#x…

linux 格式化 目录,Linux 磁盘分区、格式化、目录挂载

实验环境: Citrix虚拟化, RHEL6.4系统环境本文目的: 熟悉Linux的基本磁盘分区、格式化、目录挂载。1.显示当前主机目录2.磁盘分区3.磁盘格式化4.挂载目录1. 显示当前主机目录命令df -h[rootlocalhost ~]# df -hFilesystem Size Used Avail Use% Mounted on/dev/map…

通州区机器人比赛活动总结_机器人大赛赛后总结

机器人大赛赛后总结机器人大赛结束了&#xff0c;每个科协人都缓和了一下自己忙碌的节奏。在比赛这段时间里&#xff0c;大家都辛苦地准备了很久&#xff0c;尽管在比赛中有着不尽如人意的地方&#xff0c;比赛也落下了完美的帷幕。赛后我们认真总结了此次活动中出现的问题。首…

linux用分词系统,Linux(CentOS 6.4)Solr4.8.1中文分词配置(IK分词)

1、环境准备CentOS6.4、Tomcat6.0、Jdk1.7、Solr4.8.1、IK Analyzer 2012FF_hf12、配置步骤(1)下载IK Analyzer分词包&#xff0c;解压缩(2)将IKAnalyzer2012FF_u1.jar拷贝到solr服务的目录solr/WEB-INF/lib下cp /usr/download/IK Analyzer 2012FF_hf1/IKAnalyzer2012FF_u1.jar…

python我的世界服务器_Python取Minecraft服务器信息

最近猛玩Minecraft&#xff0c;无聊之下写了这个东西&#xff0c;可以取到版本&#xff0c;在线人数&#xff0c;最大人数。import socketimport codecsclass mcstatus:def __init__(self,hostname,port,timeout 0.6):self.hostname hostnameself.timeout timeoutself.port …

华为内部存储转sd卡_怎样把华为手机内存的东西传、转到SD卡中呢

2016-08-24华为mate8手机里没有SD卡有关系吗华为Mate8支持SD卡锁功能&#xff0c;下面小编就来讲讲SD卡锁如何使用。一、当前手机没有设置SD卡密码功能&#xff0c; 手机一旦丢失&#xff0c;SD卡中的内容也将泄露&#xff1b;Mate 8支持SD卡加密功能&#xff0c;通过对SD加密&…

linux隔一级目录找文件,linux查看文件和子目录

Q4&#xff1a;linux查找当前目录下所有子目录特定文件类型需要查找的文件内容1、find [选项] [目录] [条件] [动作]如果不指定任何目录&#xff0c;find将会查找当前目录。如果 不指定条件&#xff0c;则条件相当于“true”&#xff0c;这样会把全部文件都找出来。选项、条件和…

linux c程序加args,C/C++可变参数,“## __VA_ARGS__”宏的介绍和使用

在阅读代码的时候&#xff0c;在一个宏定义语句中&#xff0c;发现了个之前未曾见过的编译器预定义宏&#xff1a;“__VA_ARGS__”。当时&#xff0c;从代码语句中推测它代表宏参数&#xff1a;“…”(本文称之为省略号)&#xff0c;依稀记得printf函数声明中有使用这个省略号&…

python梦幻西游鼠标偏移_【按键盒子】梦幻西游解决鼠标漂移问题

Gosub GetFbl//Gosub 点击任务红名/////获取窗口分辨率///Sub GetFbl//左上角找图FindPic 0, 0, 1024, 768, "Attachment:\zsj.bmp", 0.9, intX1, intY1If intX1 < 0MessageBox "未找到窗口左上角"Else//定位窗口右下角Delay 10FindPic 0, 0, 1024, 768…

linux看java堆大小,linux 改java堆内存大小

linux 改java堆内存大小[2021-02-08 23:06:29] 简介:linux查内存大小的方法&#xff1a;首先打开应用程序&#xff1b;然后选择系统工具选项&#xff0c;并单击系统终端选项&#xff1b;接着在系统终端命令行输入【free -h】命令&#xff1b;最后在结果中找到total即可查看到系…

脉冲宽度调制pdm_PWM (脉冲宽度调制)原理与实现

原理与实现1、PWM原理2、调制器设计思想3、具体实现设计一、PWM(脉冲宽度调制Pulse Width Modulation)原理&#xff1a;脉冲宽度调制波通常由一列占空比不同的矩形脉冲构成&#xff0c;其占空比与信号的瞬时采样值成比例。图1所示为脉冲宽度调制系统的原理框图和波形图。该系统…