一、参数传入规则

可变参数允许传入0个或任意个参数,在函数调用时自动组装成一个tuple;

关键字参数允许传入0个或任意个参数,在函数调用时自动组装成一个dict;

1. 传入可变参数:

def calc(*numbers):

sum = 0

for n in numbers:

sum = sum + n * n

return sum

以上定义函数,使用如下:

传入多个参数,

calc(1, 2, 3, 4)

30 #函数返回值

传入一个列表,

nums = [1, 2, 3]

calc(*nums) # 通过 * 将list中的元素作为可变参数传入函数

14 # 函数返回值

2.传入关键字参数:

>>> def person(name, age, **kw):

... print('name: ', name, 'age: ', age, 'other: ', kw)

...

>>>

>>> person('luhc', 24, city='Guangzhou')

name: luhc age: 24 other: {'city': 'Guangzhou'}

同样,可以将预先定义的dict作为参数传入以上函数:

>>> info = {'city': 'Guangzhou', 'job': 'engineer'}

>>>

>>> person('luhc', 24, **info)

name: luhc age: 24 other: {'city': 'Guangzhou', 'job': 'engineer'}

注意: 函数person 获得的是参数 info 的一份拷贝,在函数内修改不会影响 info 的值

3. 在关键字参数中,可以限制关键字参数的名字:

# 通过 * 分割,以指定关键字参数名

>>> def person(name, age, *, city, job):

... print('name: ', name, 'age: ', age, 'city: ', city, 'job: ', job)

...

>>>

>>> person('luhc', 24, city='Guangzhou', job='engineer')

name: luhc age: 24 city: Guangzhou job: engineer

# 如果传入参数中,存在参数名不在定义的范围内,将抛出异常

>>> person('luhc', 24, city='Guangzhou', jobs='engineer')

Traceback (most recent call last):

File "", line 1, in

TypeError: person() got an unexpected keyword argument 'jobs'

>>>

此外,如果函数中已经指定可变参数,则 * 可以省略,如下:

# 省略了用 * 作为分割,指定关键字参数名

>>> def person(name, age, *args, city, job):

... print('name: ', name, 'age: ', age, 'args: ', args, 'city: ', city, 'job: ', job)

...

>>>

>>> person('luhc', 24, 'a', 'b', city='Guangz', job='engineer')

name: luhc age: 24 args: ('a', 'b') city: Guangz job: engineer

>>>

# 同样,如果传入了关键字参数未指定的参数名,则抛出异常

>>> person('luhc', 24, 'a', 'b', city='Guangz', job='engineer', test='a')

Traceback (most recent call last):

File "", line 1, in

TypeError: person() got an unexpected keyword argument 'test'

>>>

二、参数组合使用:

参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数

def f1(a, b, c=0, *args, **kw):

print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)

def f2(a, b, c=0, *, d, **kw):

print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'kw =', kw)

以上就是本文给大家介绍的全部内容了,希望能够对大家理解Python的函数参数的传递有所帮助

python函数的传参要求_python中函数传参详解相关推荐

  1. python中importlib模块安装_Python中标准模块importlib详解

    Python中标准模块importlib详解 模块简介 Python提供了importlib包作为标准库的一部分.目的就是提供Python中import语句的实现(以及__import__函数).另外 ...

  2. python中json模块博客园_Python中的Json模块详解

    Python中的Json模块详解 Json(JavaScript Object Notation)它是一种轻量级的数据交换格式,具有数据格式简单,读写方便易懂等很多优点.许多主流的编程语言都在用它来进 ...

  3. python协程库_python中协程的详解(附示例)

    本篇文章给大家带来的内容是关于python中协程的详解(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 协程,又称微线程,纤程.英文名Coroutine 协程看上去也是子程序 ...

  4. python中split啥意思_python中split的用法详解_后端开发

    如何用python正则表达式匹配字符串?_后端开发 用python正则表达式匹配字符串的方法:1.当匹配单个位置的字符串时,可以使用[(.+?)]正则表达式来提取:2.当连续多个位置的字符串匹配时,可 ...

  5. python 下划线变量_Python中的下划线详解

    这篇文章讨论Python中下划线_的使用.跟Python中很多用法类似,下划线_的不同用法绝大部分(不全是)都是一种惯例约定. 一. 单个下划线直接做变量名(_) 主要有三种情况: 1. 解释器中 _ ...

  6. python中new方法详解及_Python中new方法的详解

    new_ 方法是什么? __new__方法其实就是创建对象的方法 new()方法是在类准备将自身实例化时调用. 一个类可以有多个位置参数和多个命名参数,而在实例化开始之后,在调用 init()方法之前 ...

  7. python中函数和类的区别_Python中函数和方法的区别

    简单总结: 与类和实例无绑定关系的function都属于函数(function): 与类和实例有绑定关系的function都属于方法(method). 首先摒弃错误认知:并不是类中的调用都叫方法 函数 ...

  8. python函数内部返回的值_Python中函数的返回值示例浅析

    前言: 前面我们介绍了简单的介绍了函数和函数的参数,今天我们来说一下Python中函数的返回值. 函数的返回值:函数运算的结果,需要进一步的操作时,给一个返回值return用来返回函数的结果,如果没有 ...

  9. python函数与方法的区别_python中函数和方法有哪些区别

    python中函数和方法有哪些区别 发布时间:2020-11-16 09:30:04 来源:亿速云 阅读:89 作者:小新 小编给大家分享一下python中函数和方法有哪些区别,相信大部分人都还不怎么 ...

  10. python中yield的使用_python中yield的用法详解-转载

    原文链接:https://blog.csdn.net/mieleizhi0522/article/details/82142856 ,今天在写python爬虫的时候,循环的时候用到了yield,于是搜 ...

最新文章

  1. 游戏开发--开源21---CroftSoft Code Library |Gibdo|JOGR...
  2. c语言后缀表达式构造二叉树,C ++程序为后缀表达式构造表达式树
  3. 深度学习笔记 第五门课 序列模型 第二周 自然语言处理与词嵌入
  4. Rabbits UVALive - 8211
  5. 转折后的总结--2014年找工作
  6. VirtualBox启动失败,The VM session was aborted.
  7. 图像变换——分段线性变换
  8. 操作系统原理(一)操作系统概述和操作系统用户界面
  9. java ee图书管理系统_基于jsp的图书管理系统-JavaEE实现图书管理系统 - java项目源码...
  10. sqlite3数据库-常用命令
  11. Separating Pebbles数学,暴力
  12. html怎么用2个caption不换行,caption怎么用
  13. python解析mht文件_将不同内容类型的MHT文件提取到多个MHT-fi中
  14. FreeTextBox编辑框遇到的问题
  15. 4大私域流量体系(个人号、公众号、社群和小程序)全方面价值对比:私域流量,企业保命之本爆发之源!...
  16. 国庆必备海报文案大礼包,速速收下!
  17. NOI2010~NOI2018选做
  18. 一度智信:拼多多开店必备条件
  19. UI设计师必备10大工具
  20. JavaScript实现注册页面的表单验证

热门文章

  1. 这几天又看了Gosu,发现也是蛮有意思
  2. c语言程序不用编译即可被计算机识别运行,2011秋华农c语言试卷
  3. Python3有哪几种数据类型?
  4. python判断值是否为空(亲测)
  5. 人工智能、机器学习和深度学习的区别?
  6. 去除tab、空格、回车符等使用replace语句
  7. Java秒杀系统优化的工程要点
  8. MongoDB 分片的原理、搭建、应用
  9. 总结下Mysql分表分库的策略及应用
  10. 使用wireshark以及filddler配合抓去手机端的TCP以及HTTP请求