简介

大家都知道,在java中,函数或者方法的参数在调用时必须对其进行传参操作,也就是所谓的必选参数,也可以称为位置参数,除此之外,python还拥有其他语言不具有的一些参数类型,以下将进行一一介绍。

必选参数

必选参数,又称位置参数,是大多数语言都会有的参数类型, 此参数在调用是必须进行传参。

# 必选参数
def sum(x, y):
return x + y print(sum(1,2))

默认参数

默认参数一般会拥有一个默认值,当对默认参数传参时,和必选参数作用类似,当不对默认参数传参时,则使用默认参数的默认值

# 默认参数
def plus(x, y, z=1):
return x + y + z print(plus(1,2))
print(plus(1,2,3))

可变参数

可变参数主要是为了方便在参数未知的情况下传递参数值,可变参数一般是以元组(tuple)的形式调用, 符号为*args

# 可变参数
def sum2(*args):
print(args)
total = 0
for item in args:
total += item
return total print(sum2(1,3,4))
(1, 3, 4)
8

关键字参数

与可变参数类似,都是为了方便进行参数未知情况下的参数传递,不同的是传递的参数值是键值对形式,关键字参数一般是以字典(dict)形式传递,符号为**kwargs

# 关键字参数
def test(**kwargs):
print(kwargs) test(name='mike', age=14, gender='man')
{'name': 'mike', 'age': 14, 'gender': 'man'}

命名关键字参数

命名关键字参数是从关键字参数衍生而来的,对关键字参数做了进一步的限制,符号为*

# 命名关键字参数
def test2(name, age, *, gender, city):
print(name, age, gender, city) # 命名关键字参数传递键值对形式时只能传递*后面规定的key值,不能减少或添加新的key值,否则会报错
test2('mike',18, gender='man', city='nanjing')
test2('mike',18, test=1, city='beijing')
mike 18 man nanjing
Traceback (most recent call last):
File "/home/ts/flask_study/python参数类型/param.py", line 36, in <module>
test2('mike',18, a=1, city='beijing')
TypeError: test2() got an unexpected keyword argument 'a'

参数的顺序

由于存在多种参数,且部分参数的符号类似,因此,在进行多参数设置时需要考虑参数的顺序,顺序如下

必选参数(位置参数)、默认参数、可变参数、命名关键字参数和关键字参数。
def test3(a, b=1, *, d, **kwargs):
print(a,b,d,kwargs) test3(1,b=2, d=2, name='mike', gender='man')
1 2 2 {'name': 'mike', 'gender': 'man'}

总结

1.任何包含可变参数和关键字参数的函数都可以通过如下方式实现

func(*args, **kwargs)

2.为了代码更好的可读性,建议一次性不要使用过多的参数。

python 参数类型理解的更多相关文章

  1. Python参数类型以及实现isOdd函数,isNum函数,multi函数,isPrime函数

    Python参数类型以及实现isOdd函数,isNum函数,multi函数,isPrime函数 一.Python参数类型 形参:定义函数时的参数变量. 实参:调用函数时使用的参数变量. 参数传递的过程 ...

  2. arcgis python 参数类型和含义

    数据类型 datatype 关键字 描述 地址定位器 DEAddressLocator 用于地理编码的数据集,存储地址属性.关联的索引以及用于定义将地点的非空间描述转换为空间数据这一过程的规则. 地址 ...

  3. Python参数类型

    位置参数 默认参数 可变参数 命名关键字参数 关键字参数 def position_only(a, b): print(a, b) def keyword(a='a', b='b'): print(a ...

  4. Python函数小结(1)--参数类型(*, ** 的区别), 闭包

    刚开始学习python,python相对于java确实要简洁易用得多.内存回收类似hotspot的可达性分析, 不可变对象也如同java得Integer类型,with函数类似新版本C++的特性,总体来 ...

  5. Python的参数类型

    参数类型: 1.必填参数,位置参数(positional arguments,官方定义,就是其他语言所说的参数) 2.默认值参数,非必传 3.可变参数,非必传,不限制参数个数,比如说给多个人发邮件,发 ...

  6. Python 函数参数类型大全(非常全!!!)

    Python 函数参数类型大全(非常全!!!) 1.在python编写程序里面具有函数文档,它的主要作用是为了让别人可以更好的理解你的函数,所以这是一个好习惯,访问函数文档的方式是: MyFuncti ...

  7. Python函数中参数类型

    在学习Python函数的时候,函数本身的定义和调用并不是很复杂,但是函数的参数类型和用法的确有些复杂.在此做一个小结,加深理解. Python参数的定义 负责给函数提供一些必要的数据或信息,以保证函数 ...

  8. Python 带参数的装饰器 [2] 函数参数类型检查

    在Python中,不知道函数参数类型是一个很正常的事情,特别是在一个大项目里.我见过有些项目里,每一个函数体的前十几行都在检查参数类型,这实在是太麻烦了.而且一旦参数有改动,这部分也需要改动.下面我们 ...

  9. [Python]可变类型,默认参数与学弟的困惑

    一.学弟的困惑 十天前一个夜阑人静.月明星稀的夜晚,我和我的朋友们正在学校东门的小餐馆里吃着方圆3里内最美味的牛蛙,唱着最好听的歌儿,畅聊人生的意义.突然,我的手机一震,气氛瞬间就安静下来,看着牛蛙碗 ...

随机推荐

  1. @ConfigurationProperties(prefix = "server-options") 抛出 SpringBoot Configuration Annotation Processor not configured 错误

    说明 spring-boot-configuration-processor 包的作用是自动生成 META-INF/spring-configuration-metadata.json 文件,而这个 ...

  2. RabitMQ 简介

    每日一句 The secret of being miserable is to have leisure to bother about whether you are happy or not. ...

  3. synchronized下的 i+=2 和 i++ i++执行结果居然不一样

    起因 逛[博客园-博问]时发现了一段有意思的问题: 问题链接:https://q.cnblogs.com/q/140032/ 这段代码是这样的: import java.util.concurrent ...

  4. VMware Workstation 虚拟机安装教程

    一.介绍篇 VMware Workstation 16 Pro是VMware(威睿公司)于2021年最新发布的一代虚拟机软件,软件的中文名是"VMware 工作站 16 专业版". ...

  5. 从 CPU 讲起,深入理解 Java 内存模型!

    Java 内存模型,许多人会错误地理解成 JVM 的内存模型.但实际上,这两者是完全不同的东西.Java 内存模型定义了 Java 语言如何与内存进行交互,具体地说是 Java 语言运行时的变量,如何 ...

  6. tomcat 的安全配置预防后台被攻击

    安全是系统架构中最重要的关注点之一,通常情况下,所说的安全涵盖网络安全.数据安全.操作系统安全.服务器安全以及应用系统安全等诸多方面. Tomcat 是一个免费的开放源代码 的Web应用服务器,技术先 ...

  7. Linux基础命令、引号和括号的作用

    查看硬件信息 查看 cpu lscpu命令可以查看cpu信息 cat /proc/cpuinfo也可看查看到 查看内存大小 free命令 cat /proc/meminfo 查看硬盘和分区 lsblk ...

  8. ERROR: manifest for elasticsearch:latest not found: manifest unknown: manife

    当我们用docker下载 elasticsearch 的时候出现如下错误: 这里错误的原因是没有发现最新版,需要我们指定版本. docker pull elasticsearch:7.12.0 那我们 ...

  9. 爬虫(2) - Requests(1) | Requests模块的深度解析

    1.Requests 安装与请求方法 requests官方文档:https://docs.python-requests.org/zh_CN/latest/,官方文档不知道为什么挂了,访问不了.我找了 ...

  10. WPF双滑块控件以及强制捕获鼠标事件焦点

    效果 概述 最近有个小需求要用双滑块表示一个取值范围,于是就简单做了个用户控件,在此记录下. 使用矩形Rectangle表示范围,椭圆Ellipse表示滑块,使用Canvas控制滑块的左右移动. 椭圆 ...