Python内置了很多函数,可以直接调用。Python内置的函数可以通过官方文档查看。也可以通过help()查看帮助信息。函数名是指向函数对象的引用,把函数名赋给变量,相当于给函数起了别名。

1. 定义函数

使用def 函数名(参数):语句定义函数,在缩进块中编写函数体,返回值用return语句返回,如果没有return语句,返回值为None,等价于return None

根据需要,return语句也可以返回多个值组成的tuple,可以不写括号(),多个值之间用逗号’,’隔开,调用函数时可以用多个变量接受返回值,多个变量按位置赋值

pass语句可以用做占位符,表示什么都不做,可用来定义一个空函数。在没想好具体语句的时候,可以用pass语句使代码先运行起来

2. 默认参数:用于定义函数,为参数提供默认值,调用函数时可传可不传该默认参数的值(注意:所有位置参数必须出现在默认参数前,包括函数定义和调用)

将变化小的参数作为默认参数,如果没有传入或改变默认参数的值,则使用默认参数。如果不需要改变默认参数,不用传入默认参数;需要改变默认参数时,传入默认参数即可

必选参数在前,默认参数在后。有多个默认参数时,调用的时候,既可以按顺序提供默认参数,也可以不按顺序提供部分默认参数。当不按顺序提供部分默认参数时,需要把参数名写上。表示该参数用传进去的值,其他默认参数继续使用默认值

实例:学生注册信息,设置姓名和性别为必选参数,设置年龄和城市为默认参数

默认参数必须指向不变对象。因为不变对象一旦创建,对象内部的数据就不能修改,这样就减少了由于修改数据导致的错误。此外,由于对象不变,多任务环境下同时读取对象不需要加锁,同时读一点问题都没有。在编写程序时,如果可以设计一个不变对象,那就尽量设计成不变对象。

由于列表是可变对象,为了固定默认参数的值,函数add_end()可做如下修改,用不可变对象None实现不改变默认参数的值:

3. 可变参数

传入的参数个数可变,可以为0到任意个。在参数前加*实现可变参数。 可变参数在函数调用时自动组装为一个tuple。

在列表和元组前加*,可以将列表或元组中的元素变为可变参数传入函数。

4. 关键字参数

将任意个含参数名的参数组装为一个dict。在参数前加**实现关键字参数

在dict前加**,可以将dict作为为关键字参数传入函数。传入的为dict的拷贝,在函数中的修改不会影响函数外的dict。

实例:定义函数person()包含必选参数name和age,还包含关键字参数kw:

5. 命名关键字参数

关键字参数可以传入任意多个名字,对名字没有限制。

如果要限制关键字参数的名字,需要在参数列表中使用,之后的关键字为命名关键字,只接受这些参数作为关键字名字。

如果已经有可变参数,不需要特殊分隔符*

调用函数时,必须传入参数名,位置可以颠倒:

该函数只接受两个位置参数,如果调用时不用函数名person(‘Tom’, 18, ‘Tianjin’,

‘china’), Python解释器认为传入了四个位置参数,会报错:

如果命名关键字参数有缺省值,调用时可以不传入该参数

6. 组合参数

不同类型的函数可以组合使用,参数定义的顺序必须为:必选【位置】参数,默认参数,英语拼写可变参数,命名关键字参数和关键字参数

定义变量:

输出:

func1中:

- d为可变参数,可以为空,d=3被认为是关键字参数;

-

e为命名关键字参数,调用时必须使用名字调用;

- 用*t, *l, *dic调用时,*t, *l的前三个元素作为必选参数a, b,

默认参数c,后面的部分作为命名关键字e=10,剩下的部分作为可变参数构成tuple d=(6, 7, 8, 9), **dic作为关键字参数。

func2中:

- d, e均为命名关键字,必须使用名字调用。

-

因为不包含可变参数,如果要使用tuple, list调用,tuple和list的长度必须不超过固定参数加默认参数的长度,所以只能使用t1进行调用。

python def函数报错详解_【python】详解python函数定义 def()与参数args、可变参数*args、关键参数**args使用实例...相关推荐

  1. python打开文件报错无效序列_解决Python 写文件报错TypeError的问题

    处理上传的文件: f1 = request.FILES['pic'] fname = '%s/%s' % (settings.MEDIA_ROOT, f1.name) with open(fname, ...

  2. python运行启动报错解决方法_解决python运行启动报错问题

    解决python运行启动报错问题 问题一: python启动报错api-ms-win-crt-process-l1-1-0.dll丢失 解决: 下载api-ms-win-crt-process-l1- ...

  3. python打开文件报错无效序列_黑马python入门(4):python基础(序列,异常,操作文件,模块包,日志调试信息)

    序列 str声明:test_str="abcedf" 也可以保留字符串里面的格式来 test_str=""" \r\n测试标题 hello world ...

  4. python里面的报错语句翻译_(翻译)30天学习Python

    30天学习Python 第十四天--错误处理 错误处理 没有程序是完美的,除非是一个精心编写的hello world程序 ????. 今天我要探讨的是Python中错误处理的全部内容,我尽量用平实简单 ...

  5. python打开文件报错无效序列_如何在python中读取fasta文件?

    我正在尝试读取FASTA文件,然后查找特定的 motif(string)并打印出序列和次数. A FASTA file只是一系列序列(字符串),以标题行开头,标题或新序列的开头是">& ...

  6. python def函数报错详解_python自定义函数def的应用详解

    这篇文章主要介绍了python自定义函数def的应用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 这里是三岁,来和大家唠唠 ...

  7. python class函数报错_24 【python入门指南】class

    一.类 1.1,构造函数,析构函数 #!/bin/python classdog():def __init__(self, age, name): self.age=age self.name=nam ...

  8. python连接数据库mysql失败_解决python连接mysql报错问题

    解决python连接mysql报错问题 最近跑python脚本时遇到一个问题,当sql语句中有中文时,执行python脚本报以下错误: Traceback (most recent call last ...

  9. 关于vs2010调用python中Py_Initialize函数报错的原因

    程序刚开始运行到Py_Initialize()函数,报错:ImportError: No module named site 如遇到这个函数报错那么基本上就是你没有将相关路径添加到环境变量中. 两个方 ...

  10. python安装报错类型_解决Python安装cryptography报错问题

    解决Python安装cryptography报错问题 错误一: gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wst ...

最新文章

  1. tiny-cnn执行过程分析(MNIST)
  2. Java解析HTML
  3. Jmeter(4)Http Cookie Manager
  4. 12-Qt6 列表类QList
  5. C#中的DES加解密方法
  6. 嵌套点击事件只执行第一次
  7. C#生成不重复随机数列表
  8. 计算机GUI设计报告,GUI 程序设计实验报告.doc
  9. 爬取菜鸟教程Python100例
  10. Java2022面试题集锦
  11. CCF CSP 归一化处理
  12. 翼次元空间:GoodUP.io与4WiN全球互贸链的基础=智协云店通+BitCOO
  13. 批量删除多个 PDF 文档空白页
  14. 表格(table)属性cellspacing、cellpadding
  15. 免费制作证件照,这3个在线网站千万别错过
  16. HashMap面试题,看这一篇就够了!
  17. 网站分析软件Umami
  18. 怎么看电脑的hdmi是输出还是输入_【电脑切换hdmi信号】电脑切换hdmi模式_电脑hdmi输出设置...
  19. nes转php,PHP4 ORACLE8i NES3.6 for Solaris2.6编译和远程连接指南(转)
  20. 简析外贸网站建设应注意的要术

热门文章

  1. Python的Descriptor和Property混用
  2. 网管必看的好东东(一)
  3. matlab 文件名分离_MATLAB偏微分方程
  4. v-model双向绑定原理_Vue数据绑定
  5. 班尼机器人如何代理_如何学习电商短视频拍摄剪辑
  6. jQuery简单实现遍历的方法
  7. python django vue_Django+Vue.js构建项目
  8. java length 使用方法 例题_java.util.BitSet.length()方法实例
  9. python多态的概念_Python 多态
  10. 英雄联盟显示服务器连接异常 即将退出,win7系统玩英雄联盟提示服务器连接异常即将退出...