pyhon之函数参数
#函数的参数分为形参和实参,其中形参就是形式参数,是在创建函数的时候定义,实参就是实际参数,是在调用的函数的时候创建,这个并不是重点,具体
#的参数内部,我们可以把参数分为以下4种
# 1、普通参数
# 2、默认参数
# 3、指定参数
# 4、动态参数 1、首先学习普通参数
#我们先来看下普通参数,也是最常用的参数,普通参数,实参和形参要一一对应,比如第一个实参必须要对应第一个形参,第二个实参必须要对应第二个
#形参,以此类推........ #普通参数,x对应123,y对应"abc"
def test_func(x,y):
print(x,type(x))
print(y,type(y)) test_func(123,"abc") # 123 <class 'int'>
# abc <class 'str'>
2、然后在学习默认参数
#我们在来看下默认参数,默认参数可以允许我们在形参的位置给形参定义一个默认的参数,如果在实参的位置对该形参有对应的实参,则使用实参的值,
#如果在实参的位置没有该形参对应的实参,则使用默认的值,且默认参数必须要放在最后面,不能放在非默认参数的前面,如果放在非默认参数的前面,
#执行python代码将会报错 def test_func(x,y="b",z="c"):
print(x,type(x))
print(y, type(y))
print(z, type(z)) #三个形参均有对应的实参,我们可以看到,最终的形参的值是对应的实参的值
test_func("1","2","3") # 1 <class 'str'>
# 2 <class 'str'>
# 3 <class 'str' #三个形参只有第一个有对应的形参,我们可以看到x和y的值为定义的默认值
test_func("a")
# a <class 'str'>
# b <class 'str'>
# c <class 'str'>
3、然后我们在来学习一下指定参数
#然后我们在来看下指定参数,上面的普通参数,第一个形参必须要对应第一个实参.......,用指定参数,则可以不受此约束
def test_func(x,y,z):
print(x,type(x),id(x),sep="/",end="\n")
print(y,type(y), id(y), sep="/", end="\n")
print(z,type(z), id(z), sep="/", end="\n") test_func(z="c",x="a",y="b") # a/<class 'str'>/26879968
# b/<class 'str'>/26904800
# c/<class 'str'>/26850848
4、然后我们在来学习一下动态参数
#最后我们在来学习一下大名鼎鼎动态参数,动态参数有三种,分别为*args;**kwargs,*args,**kwargs
#首先来看下*args,*args主要用来接受多个普通参数,把多个普通参数全部放在args这个tuple中,如果实参传递一个list,如果直接传列表的名称
#则该列表整体会被当做一个参数,如果在列表的前面加一个*号,则会把列表中的每一个元素当做一个参数参数传递给args这个tuple
def test_func(*args):
l = len(args)
for i in range(l):
print(args[i]) l1 = [0,1,2,3,4,5]
test_func(l1)
# [0, 1, 2, 3, 4, 5] test_func(*l1)
# 0
# 1
# 2
# 3
# 4
# 5 test_func(0,1,2,3,4) # 0
# 1
# 2
# 3
# 4 #下面我们在来看下**kwargs
def test_func(**kwargs):
for k,v in kwargs.items():
print(k,v) d1 = {"k1":"v1","k2":"v2","k3":"v3"} #这样传是错误的,python会报错,因为如果形参是**kwargs,需要传递x=y这样的结构,或者是字典前加**的结构
# test_func(d1) #这样传才是正确的
test_func(**d1)
# k1 v1
# k2 v2
# k3 v3 #这样的传递方法也是正确的
test_func(x="1",y="2",z="3")
# x 1
# y 2
# z 3
5、最后我们在来看下大名鼎鼎的万能参数,完成参数可以接受任何人类可以想象到的参数
#最后是大名鼎鼎的万能参数,在下面的例子中,*args必须要放在前面,**kwargs必须要放在后面,python会自动把list形状的参数放在args中,
#把字典形状的参数放在kwargs中
def test_func(*args,**kwargs):
i = len(args)
for n in range(i):
print(args[n])
for k,v in enumerate(kwargs.items()):
print(k,v,sep=":",end="\n") l1 = [0,1,2,3,4,5]
d1 = {"k1":"v1","k2":"v2","k3":"v3"} test_func(*l1,**d1) # 0
# 1
# 2
# 3
# 4
# 5
# 0:('k1', 'v1')
# 1:('k2', 'v2')
# 2:('k3', 'v3') def test_func(*args,**kwargs):
i = len(args)
for n in range(i):
print(args[n])
for k,v in enumerate(kwargs.items()):
print(k,v,sep=":",end="\n") test_func(1,2,3,4,54,k1="v1",k2="v2",k3="v3") # 1
# 2
# 3
# 4
# 54
# 0:('k1', 'v1')
# 1:('k2', 'v2')
# 2:('k3', 'v3')
小伙伴们,python函数的参数我们就学习完了,如果有问题可以留言咨询!
pyhon之函数参数的更多相关文章
- Delphi_08_Delphi_Object_Pascal_基本语法_06_函数参数
发现Delphi中关于函数参数部分的内容还是比较多的,暂时说到这篇随笔为止吧,以后再继续讨论一下函数的参数部分的内容. 一 工程文件 program DefaultParameter; {$APPTY ...
- 深入理解javascript函数参数与闭包(一)
在看此文章,希望先阅读关于函数基础内容 函数定义与函数作用域 的章节,因为这篇文章或多或少会涉及函数基础的内容,而基础内容,我放在函数定义函数作用域 章节. 本文直接赘述函数参数与闭包,若涉及相关知识 ...
- php与js中函数参数的默认值设置
php函数参数默认值设置: <?phpfunction test($val=3){ echo $val."<br/>";}test(11);test();?& ...
- JS中的函数(二):函数参数(你可能不知道的参数传递)
前言: 函数分为有参有返回值,有参无返回值,无参无返回值,无参有返回值:那么对于无参数的函数你想使用函数的调用怎么办呢?如果你想封装一个代码,实现多种功能,但是形参大于实参或者实参大于形参又该如何?本 ...
- Python函数参数学习笔记
1.Python中函数参数类型可分为五种: f(x):x为位置参数: f(x,n=2):n为默认参数,调用时可以省略参数n,如f(5); f(*args):*args表示把args这个list或tup ...
- C语言指针变量作为函数参数
0x01 指针变量作为函数参数的作用是:将一个变量的地址传送到另一个函数中. 0x02 简单的例子:虽然都能实现功能,但意义不同. 正确的写法: #include <stdio.h> vo ...
- 深入理解javascript函数系列第二篇——函数参数
× 目录 [1]arguments [2]内部属性 [3]函数重载[4]参数传递 前面的话 javascript函数的参数与大多数其他语言的函数的参数有所不同.函数不介意传递进来多少个参数,也不在乎传 ...
- Python函数参数默认值的陷阱和原理深究"
本文将介绍使用mutable对象作为Python函数参数默认值潜在的危害,以及其实现原理和设计目的 本博客已经迁移至: http://cenalulu.github.io/ 本篇博文已经迁移,阅读全文 ...
- 速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数
[源码下载] 速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数 作者:webabcd 介绍速战速决 之 PHP 函数基础 函数参数 函 ...
随机推荐
- python selenium-1 环境搭建new
1.Mac安装Anaconda集成环境 集成环境有助于快速编写脚本. 将安装的python3版本设置为python,系统的python更改为python2 Anaconda地址 https://www ...
- 1082 Read Number in Chinese (25 分)
1082 Read Number in Chinese (25 分) Given an integer with no more than 9 digits, you are supposed to ...
- golang web框架 beego 学习 (三) beego获取参数
直接上常用的例子吧: A: 获取URL中的参数 router func init() { beego.Router("/task/?:id/?:name", &co ...
- Spark学习笔记5:Spark集群架构
Spark的一大好处就是可以通过增加机器数量并使用集群模式运行,来扩展计算能力.Spark可以在各种各样的集群管理器(Hadoop YARN , Apache Mesos , 还有Spark自带的独立 ...
- 第14章 UDP编程(3)_利用UDP实现广播功能
3. 广播的介绍 (1)广播 ①广播实现一对多的通信,如QQ群 ②它通过向广播地址发送数据报文实现的 (2)SO_BROADCAST选项 ①SO_BROADCAST选项控制着UDP套接字是否能发送广播 ...
- 安装HBase(0.9)数据库
基本知识: 1.hbase是一种基于列存储的数据库,也就是说它的一列的数据是存储在一个文件里面的,而传统的数据库存储都是一个文件存储多个行,这些行有不同的列,这些列的数据类型 不同. 2.基于HDFS ...
- NFS各个版本之间的比较
NFS是一种网络文件系统,从1985年推出至今,共发布了3个版本:NFSv2.NFSv3.NFSv4,NFSv4包含两个次版本NFSv4.0和NFSv4.1.经过20多年发展,NFS发生了非常大的变化 ...
- PyQt
知识内容: 1. 2. 3. 以后有时间再写...
- drop解决过拟合的情况
用到的训练数据集:sklearn数据集 可视化工具:tensorboard,这儿记录了loss值(预测值与真实值的差值),通过loss值可以判断训练的结果与真实数据是否吻合 过拟合:训练过程中为了追求 ...
- sql 随机取数
Sql server: select top 10 * from 表 order by newid()Access: SELECT top 10 * FROM 表 ORDER BY ...