简介

大家都知道,在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. 手脱NsPacK壳

    1.查壳 使用PEiD未能检测到壳信息,这时,我们更换其他工具 从图中可以看到壳的信息为[NsPacK(3.x)[-]] 2.百度壳信息 北斗程序压缩(Nspack)是一款压缩壳.主要的选项是:压缩资 ...

  2. 图解Tire树+代码实现

    简介   Trie又称为前缀树或字典树,是一种有序树,它是一种专门用来处理串匹配的数据结构,用来解决一组字符中快速查找某个字符串的问题.Google搜索的关键字提示功能相信大家都不陌生,我们在输入框中 ...

  3. Centos7上安装python3.7

    Centos7安装python3.7 由于python2和python3在很大程度上有些不同,因为需要,就以决定安装python3.x的版本,但由于Centos上自安装的就是pyhton2.6.所以在 ...

  4. 以点类 Point 及平面图形类 Plane 为基础设计三角形类 Triangle

    学习内容:以点类 Point 及平面图形类 Plane 为基础设计三角形类 Triangle 代码示例: import java.util.Scanner; class Point{ private ...

  5. Net6 Xunit 集成测试

    对于单元测试.集成测试大部分开发的朋友都懒得去写,因为这要耗费精力去设计去开发,做完项目模块直接postman 调用测试(当然这是一个选择,开发也中经常用到),但是如果测试需要多样化数据,各种场景模拟 ...

  6. python并发编程之线程/协程

    python并发编程之线程/协程 part 4: 异步阻塞例子与生产者消费者模型 同步阻塞 调用函数必须等待结果\cpu没工作input sleep recv accept connect get 同 ...

  7. ML第5周学习小结

    本周收获 总结一下本周学习内容: 1.学习了<深入浅出Pandas>的第五章:Pandas高级操作的两个内容 数据迭代 函数应用 我的博客链接: pandas:数据迭代.函数应用 2.&l ...

  8. CF 1015F

    题意:[CF 1015F](https://codeforces.com/contest/1015/problem/F) 给你一个模式串A(一个不一定合法的括号序列),让你构造长度为2*n的合法括号序 ...

  9. React简单教程-3.1-样式之使用 tailwindcss

    前言 本文是作为一个额外内容,主要介绍 tailwindcss 的用法 tailwindcss 是一个功能类优先的 CSS 框架,我在以前的文章里有描述为什么使用功能类优先:为什么我在 css 里使用 ...

  10. 树莓派开发笔记(十五):树莓派4B+从源码编译安装mysql数据库

    前言   树莓派使用数据库时,优先选择sqlite数据库,但是sqlite是文件数据库同时仅针对于单用户的情况,考虑到多用户的情况,在树莓派上部署安装mysql服务,通过读写锁事务等使用,可以实现多进 ...