浔阳地僻无音乐,终岁不闻丝竹声。 住近湓江地低湿,黄芦苦竹绕宅生。 其间旦暮闻何物?杜鹃啼血猿哀鸣。

1 函数使用

1.1 函数的作用和特性

作用:

  函数就是封装了一部代码,实现一定功能的语义代码块,声明后可以被调用执行
特性:
  声明函数不会执行函数中的代码
  调用函数才会执行函数中的代码
  优势:函数提高了代码的复用性

1.2 函数的声明和调用、使用方式

函数的声明:

def 函数名称([参数]):  # 名称遵循变量命名规则"""文档注释:函数的作用"""代码[return 返回结果]  # []表示可选# def:固定语法,关键字,专门用来声明函数
# 函数名称,就是一个标识符,命名规则参考变量
# 参数:函数中的代码执行时需要的数据
# 函数中的代码:封装起来的需要重复利用执行的代码块
# return的作用:1)返回函数中代码的执行结果 2)结束函数,后面的代码不会再执行
# 函数声明前后空2行

为方便展示,本文函数省略文档注释,实际使用中请根据情况添加。

函数调用:

  多次调用不同的过程相互独立,互相不影响

  无参数无返回值:函数名称()
  有参数无返回值:函数名称(传递给参数的数据)
  无参数有返回值:变量 = 函数名称()
  有参数有返回值:变量=函数名称(传递给参数的数据)

函数使用:

  当程序中需要一个重复使用的功能,定义函数
  当功能在执行时需要资源,定义参数
  当执行的结果,在后续代码中需要,返回结果

2 函数的参数

2.1 按照参数的作用

形式参数(形参
  位置:声明函数时放在函数名称后面括号中的变量
  作用:描述函数执行时形式上需要的数据

实际参数(实参)
  位置:调用执行函数时放在函数名称后面括号中的数据
  作用:实际传递给函数执行时的数据,可以参与真实运算

2.2 按照参数的操作方式

2.2.1 位置参数

调用函数时,实际参数按照前后顺序依次给形式参数赋值的过程

def test(a, b):print(a, b)a = "音乐"
b = "丝竹"
test(a, b)  # 音乐 丝竹

2.2.2 关键字参数

形参=实参 的形式忽略形参的定义顺序进行的传参的传参方式
关键字参数必须位置参数后面

def test(a, b, c):print(a, b, c)# 关键字参数与位置无关,交换位置得到相同的效果
test("终岁", c="丝竹声", b="不闻")  #  # 终岁 丝竹声 不闻

2.2.3 默认值参数

如果调用有给默认参数传递数据,则使用实际传递数据
如果没有传递,则使用默认数据(声明时赋值给形式参数)

def test(a, b="终岁不闻丝竹声"):print(a, b)# 没有传递是使用默认值
test("浔阳地僻无音乐")  # 浔阳地僻无音乐 终岁不闻丝竹声# 有传递则使用传递数据
test("浔阳地僻无音乐", "窗前明月光")  # 浔阳地僻无音乐 窗前明月光
test("浔阳地僻无音乐", b="疑是地上霜")  # 浔阳地僻无音乐 疑是地上霜

2.2.4 可变参数–元组参数

元组参数是符号 * 开头的参数
不确定函数执行时需要接受参数的类型和个数,可使用元组参数接收数据, 将变量包装成元组
未知参数要放在可变参数前

# args是习惯写法,可用其他字母代替
def test(*args):print(args)s = ("住近湓江地低湿", "黄芦苦竹绕宅生")
test("浔阳地僻无音乐", "终岁不闻丝竹声")  # ('浔阳地僻无音乐', '终岁不闻丝竹声')
test(s[0])  # ('住近湓江地低湿',)

2.2.5 可变参数–字典参数

不确定函数执行过程中接受什么类型的参数个数,可使用字典参数(关键字参数)
给形参前面添加**使参数变成一个字典,所有传递的参数变成字典的键值对

# kwargs是习惯写法,可用其他字母代替
def test(**kwargs):print(kwargs)  test(s1="浔阳地僻无音乐", s2="终岁不闻丝竹声")  # {'s1': '浔阳地僻无音乐', 's2': '终岁不闻丝竹声'}
# *只作为标记,后面的是关键字参数,必须写成关键字
def test(a, *, b, c):print(a, b, c)test("黄芦", b="苦竹", c="绕宅生")  # 黄芦 苦竹 绕宅生

2.2.6 强制关键字参数

某些特殊应用项目中,需要强制调用者使用关键字参数调用函数,提高代码可读性

# * 只作为标记,后面的是关键字参数,必须写成关键字
def test(a, *, b, c):print(a, b, c)test("黄芦", b="苦竹", c="绕宅生")  # 黄芦 苦竹 绕宅生

2.2.6 万能参数

语义上的可以接受所有合法参数格式的数据,通常默认的表示方式(*args, **kwargs)

def test(*args, **kwargs):print(args)print(kwargs)test("其间旦暮", "闻何物", s1="杜鹃啼血", s2="猿哀鸣")
('其间旦暮', '闻何物')
# ('其间旦暮', '闻何物')
# {'s1': '杜鹃啼血', 's2': '猿哀鸣'}

2.3 参数定义顺序

位置参数>元组参数>默认参数>字典参数
先定义位置参数,再定义关键字参数,字典参数必须最后

3 函数的返回值

函数的返回值:即函数中的代码执行的结果
函数执行的结果,如果在后续的代码中需要使用,就需要在函数中定义返回值并且在调用的时候接收返回值

# 返回单个数据
def test():return "浔阳地僻无音乐,终岁不闻丝竹声"s1 = test()  # 浔阳地僻无音乐,终岁不闻丝竹声
print(s1)# 返回一组数据
def test2():return ["住近湓江地低湿", "黄芦苦竹绕宅生"]  # 可指定数据类型(元组,列表)s2 = test2()
print(s2)  # ['住近湓江地低湿', '黄芦苦竹绕宅生']# 返回多个数据(元组)
def test3():return "其间旦暮闻何物", "杜鹃啼血猿哀鸣"s3 = test3()  # ('其间旦暮闻何物', '杜鹃啼血猿哀鸣')
print(s3)# 连续赋值接收
a, b = test3()
print(a)  # 其间旦暮闻何物
print(b)  # 杜鹃啼血猿哀鸣

4 函数的互相调用和递归函数

4.1 函数相互调用

在代码中,一个函数调用另一个函数
需要注意函数什么时候执行结束

def test1():print("浔阳地僻无音乐", end=" ")def test2():test1()print("终岁不闻丝竹声")test2()  # 浔阳地僻无音乐 终岁不闻丝竹声

4.2 递归函数

递归调用就是函数自己调用执行自己

递归函数的两个条件:
  1)必须留出口
  2)自己调用自己

递归调用一定要注意:
  每次调用自己都会在内存中多复制一份~如果递归次数过多,最终会导致申请的内存消耗完了[内存溢出],导致程序崩溃。

# 打印5次指定字符
def test(num):if num == 0:returnprint("浔阳", num, end=" ")num = num - 1return test(num)  # 浔阳 浔阳 浔阳 浔阳 浔阳test(5)

浔阳地僻无音乐,终岁不闻丝竹声——python函数相关推荐

  1. python函数-函数进阶

    python函数-函数进阶 一.命名空间和作用域 1.命名空间 内置命名空间 -- python解释器 就是python解释器一启动就可以使用的名字存储在内置命名空间中 内置的名字在启动解释器的时候被 ...

  2. day-05 python函数

    # #-*- coding:utf-8 -*-# 1:编写一个名为 make_shirt()的函数,它接受一个尺码以及要印到 T 恤上的字样.这个函数应打印一个句子,概要地说明 T 恤的尺码和字样.d ...

  3. python函数type的用意_Python内置函数Type()函数一个有趣的用法

    Python内置函数Type()函数一个有趣的用法 今天在网上看到type的一段代码 ,然后查了一下文档,才知道type还有三个参数的用法. 以前只是知道type可以检测对象类型.然后发现了一个有趣的 ...

  4. Python Train_使用隐马尔可夫模型进行音乐流派分类的Python实现

    音乐类型分类一直是音乐信息检索领域研究的热点问题.在本教程中,我们将尝试使用隐马尔可夫模型对音乐类型进行分类,隐马尔可夫模型非常擅长对时间序列数据进行建模.由于音乐音频文件是时间序列信号,我们希望HM ...

  5. python用于获取用户输入的函数是_在Python函数中,用于获取用户输入的是( )...

    在Python函数中,用于获取用户输入的是( ) 答:input() 中国大学MOOC:\"骨质疏松症的特征是是以骨量减少.骨的微观结构退化,致使发生的严重后果是\"; 答:\&q ...

  6. Python爬取豆瓣音乐存储MongoDB数据库(Python爬虫实战1)

    Python爬取豆瓣音乐存储MongoDB数据库(Python爬虫实战1) 1.  爬虫设计的技术 1)数据获取,通过http获取网站的数据,如urllib,urllib2,requests等模块: ...

  7. Python函数参数传递的几种形式

    Python函数参数传递的几种形式 前言 位置传参 序列传参(单星号元组传参) 关键字传参 字典关键字传参(双星号字典传参) 混合传参 函数的缺省参数 结束 前言 莫听穿林打叶声,何妨吟啸且徐行.竹杖 ...

  8. Pass算子python 函数

    Pass算子python 函数 函数 • 函数是代码的一种组织形式 • 函数应该能完成一项特定的工作,而且一般一个函数只完成一项工作 • 有些语言,分函数和过程两个概念,通俗解释是,有返回结果的是函数 ...

  9. Python 函数的可变参数(*paramter与**paramter)的使用

    Python 函数的可变参数主要有 *paramter与**paramter 可变参数主要有 *paramter的作用 接受任意多个实际参数并放到一个元组中 def people(*people):f ...

最新文章

  1. python中如何在写文件之前删除文件内容_Python:文件的读取、创建、追加、删除、清空...
  2. 攻防世界Reverse第一题Hello, CTF
  3. c#可移动不规则窗体
  4. Android开发笔记(一百二十二)循环器视图RecyclerView
  5. 大数据如何应用在企业人力资源管理
  6. 贝尔英才学院计算机,特稿 | 从高三的二模倒数第一到考取南京邮电大学贝尔英才学院,他仅用了半年!...
  7. html+css模拟京东商城登陆首页
  8. SDUT程序设计基础(一)往年期末考试题目题解(2018年)
  9. 利用python进行股票分析(五)通过tushare读取股票数据
  10. MLM模型中,是否应该按15%的比例mask?
  11. P1048 [NOIP2005 普及组] 采药
  12. 使用原汁原味的Java 语言
  13. 编译安装baas平台-cello-h3c
  14. 法国《队报》:贝利领衔世界杯32大传奇球员
  15. 电动车NFC一键启动(仪表总成、电源锁)_Ci522 Ci523_小体积超低成本13.56M非接触式读写器芯片
  16. numpy 数组和矩阵的乘法的理解
  17. 一天 用户旅程_我完成100天代码的旅程
  18. CSS圆角边框和盒子阴影
  19. 山西计算机专业英语,计算机专业英语(必懂)
  20. 计算机基础和wps office,办公装office还是wps好,wps和office哪个好用

热门文章

  1. 2020年中级数据库工程师考试笔记1—计算机系统知识
  2. 如何用卡片法高效做视频?
  3. 关于CCD定位的方法总结
  4. 计算机搜索没办法打汉字,Win10左下角搜索框无法输入字符的两种解决方法
  5. Java基础篇——三大特性(多态)
  6. springboot JPA整合国产神通数据库(神州通用数据库)
  7. 平时使用的Lszrz到底是什么协议?说说Xmodem/Ymodem/Zmodem
  8. Python奇妙之旅-出发吧
  9. 【linux】curl安装
  10. 汇编语言指令及七种寻址方式指令实现