目录

  • 1.函数定义及调用
    • 1.1 函数定义
    • 1.2 函数调用
  • 2.参数传递
    • 2.1 形参与实参
    • 2.2 位置参数
    • 2.3 关键字参数
    • 2.4 默认参数
    • 2.5 可变长参数*args
    • 2.6 可变长参数**kwargs
    • 2.7 可变长参数组合使用
  • 3.函数体与变量作用域
  • 4.返回值
  • 5.断言
  • 6.匿名函数
  • 7.面向过程和面向对象

盏茶python(一) 语言特性及环境配置
盏茶python(二) 基本数据类型
盏茶python(三) 组合数据类型
盏茶python(四) 控制流
盏茶python(五) 函数
本节我们将要讲解python的函数部分,主要包括函数的三要素,形参实参及面向过程面向对象的内容。

1.函数定义及调用
1.1 函数定义

函数可以看作一个白箱子,包括输入、处理、输出三个过程,包含三个要素,参数,参数体、返回值
函数形式:

def 函数名(参数):函数体return 返回值

为什么使用函数
(1)提高代码的复用性(复用功能,封装函数)
(2)将复杂的大问题化解成一系列的小问题(模块化设计)
(3)利用代码的维护和管理

1.2 函数调用

函数调用方式:

函数名(参数)

顺序代码

a = 10
b = 5
c = 3
d = a + b + c

函数代码

def cal(a, b, c):return a + b + ca = 10
b = 5
c = 3
d = cal(a, b, c)
2.参数传递
2.1 形参与实参

形参(形式参数):函数定义时的参数,实际上就是变量名
实参(实际参数):函数调用时候的参数,实际上就是变量的值

2.2 位置参数

严格按照位置顺序,用实参对形参进行赋值,一般用在参数比较少的时候,且实参和形参必须一一对应,一个不能多,一个不能少。

def function(a, b, c):print(c)function(1, 2, 3)
2.3 关键字参数

打破位置限制,直呼其名的进行值得传递的方式,必须遵守实参与形参数量上一一对应,多数用在参数比较多的场景。

def function(a, b, c):print(c)function(b=1, a =2, c=3)

位置参数和关键字参数混合使用,但是位置参数必须放在关键字参数的前面,且不能为同一个形参反复传值。

2.4 默认参数

在定义阶段就给形参赋值,在机器学习库中的方法非常常见,在调用函数时,可以不对该形参传值,也可以按照正常的形参传值。
注意:位置形参必须在默认形参前面,默认参数应该设置为不可变类型(数字、字符串、元组)

def function(a, b, c=6):print(c)function(b=1, a =2, c=3)

让参数变为可选的方式,采用None的赋值方式

def function(a, b, c=None):if c:print(c)else:print(a)function(b=1, a =2, c=3)
function(b=1, a =2)
2.5 可变长参数*args

有时不确定会传递多少,使用参数*args,该形参必须放在参数列表的最后

def fun(x, y, z, *args):print(x, y, z)print(args)# 多余的参数,打包传递给args
fun(1, 2, 3, 4, 5, 6)
# 实参打散
fun(1, 2, 3, [4, 5, 6])
fun(1, 2, 3, *[4, 5, 6])
2.6 可变长参数**kwargs

有时不确定会传递多少,使用参数**kwargs,该形参必须放在参数列表的最后

def fun(x, y, z, **kwargs):print(x, y, z)print(kwargs)# 多余的参数,以字典的形式打包传递给kwargs
fun(1, 2, 3, a=4, b=5, c=6)
# 字典实参打散
fun(1, 2, 3, **{”a“=4, "b"=5, "c"=6})
2.7 可变长参数组合使用

同时使用*args和**kwargs

def fun(*args, **kwargs):print(args)print(kwargs)fun(1, 2, 3, a=4, b=5, c=6)
3.函数体与变量作用域

函数体是只当函数被调用时,才会执行代码,代码构成与其他代码相同。
局部变量:仅在函数体内定义和发挥作用
全局变量:外部定义的变量,在函数体内可以直接被使用,可以通过global在函数体内定义全局变量

4.返回值

返回值通常使用return进行单个返回值的过程,多个返回值以元组的形式进行返回,函数内可以存在多个return语句,一旦其中一个执行,就代表函数结束运行,无return语句,返回值为None

5.断言

单元测试过程中,可以使用assert进行断言进行,当表达式结果为False的时候触发异常。

assert expression
6.匿名函数

基本形式

lambda 参数:函数返回值

匿名函数用法在参数列表中常用,尤其与key进行搭配

ls = [(93, 88), (79, 100), (65, 58), (21, 33), (45, 75)]
ls.sort()
ls.sort(key = lambda x: x[1])
ls.sort(key = lambda x: x[0] + x[1])
7.面向过程和面向对象

面向过程:以过程为中心的编程思想,以”什么正在发生“为主要目标进行编程。
面向对象:将现实世界的目标抽象成对象,更关注”谁在受影响“,更加贴近现实。

盏茶python(五) 函数相关推荐

  1. 盏茶python(六) 类

    目录 1.为什么使用类 2.类的定义 2.1 类的命名 2.2 类的属性 2.3 类的方法 3.创建实例 3.1 实例的创建 3.2 访问属性 3.3 调用方法 3.4 属性修改 4.类的继承 4.1 ...

  2. 盏茶python(四) 控制流

    目录 1.条件测试 1.1 比较运算 1.2 逻辑运算 1.3 存在运算 2.分支结构 2.1 单分支 2.2 二分支 2.3 多分支 3.遍历循环 3.1 基本结构 3.2 循环控制 3.3 与el ...

  3. 盏茶python 资料推荐

    Python作为一种简单高效的编程语言,被越来越多的人接受学习,本专栏主要介绍python的相关内容,提供高效学习python的方法,并为致力于机器学习方向做基础.盏茶学习,高效利用点滴时间. 本节主 ...

  4. python函数是一段具有特定功能的语句组_Python学习笔记(五)函数和代码复用

    本文将为您描述Python学习笔记(五)函数和代码复用,具体完成步骤: 函数能提高应用的模块性,和代码的重复利用率.在很多高级语言中,都可以使用函数实现多种功能.在之前的学习中,相信你已经知道Pyth ...

  5. Python语言学习:基于python五种方法实现使用某函数名【func_01】的字符串格式('func_01')来调用该函数【func_01】执行功能

    Python语言学习:基于python五种方法实现使用某函数名[func_01]的字符串格式('func_01')来调用该函数[func_01]执行功能 目录 问题提出 代码五种设计思路 T1方法:e ...

  6. 第三章:Python基础の函数和文件操作实战

    本課主題 Set 集合和操作实战 函数介紹和操作实战 参数的深入介绍和操作实战 format 函数操作实战 lambda 表达式介绍 文件操作函数介紹和操作实战 本周作业 Set 集合和操作实战 Se ...

  7. Python自定义函数的创建、调用和函数的参数详解

    这篇文章主要介绍了Python自定义函数的创建.调用和函数的参数.变量作用域等常见问题,需要的朋友可以参考下 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性 ...

  8. python查看函数参数_python函数参数

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 最简单的无参数def functionname(): pass function ...

  9. python进行linux编程,Python之函数进阶

    本节内容 递归函数 嵌套函数与闭包 匿名函数 高阶函数 内置函数 总结 一.递归函数 函数是可以被调用的,且一个函数内部可以调用其他函数.如果一个函数在内部调用本身,这个函数就是一个递归函数.函数递归 ...

最新文章

  1. Google Progressive Web App简称PWA
  2. 文件结束[置顶] javaweb框架--自定义标签与freemaker结合
  3. Vim快捷输出查找寄存器的内容(去除\,\和\V)
  4. pc工具不支持stb的加密方式_如何选择加密狗?九大标准
  5. php如何解码图片,php基于base64解码图片与加密图片还原实例_PHP
  6. vue、cnpm不是内部文件_选购办公室钢制文件柜花都文件柜厂家为我们全面解读这一块的知识...
  7. PaddlePaddle(6)—— 基于Hub Serving的微信小程序模型部署
  8. Effective C++(6) 如何拒绝编译器的自动生成函数
  9. 在.NET开发中的单元测试工具之(2)——xUnit.Net
  10. java二维数组详解
  11. 如何应对项目现场EasyNVR视频平台内ini配置文件丢失的现象?
  12. 校园食堂订餐管理系统企业点餐软件
  13. MySQL批量插入测试数据
  14. AlphaGo开源代码
  15. 龙芯3a4000 交叉编译链接错误
  16. linux查看ipv6 dns,云解析DNS IPv6
  17. html文本框怎么加粗,html怎么让字体加粗
  18. 出差经历的人在囧途那一天
  19. 小丁是怎样入门git的
  20. ceph mds启动流程

热门文章

  1. 帮我配一台7000块左右的电脑
  2. 搜救小车单片机_一种智能火灾搜救小车的制作方法
  3. MyBatis面试突击
  4. jaccard相似度
  5. selenium webdrive使用
  6. 使用cost733分型软件进行SOM分型及CDO简单操作
  7. 强化学习(Reinforcement learning)综述
  8. 远程桌面:未授予此用户在此计算机上的请求登陆类型
  9. vim 操作原石材料
  10. 《西雅图不眠夜》因爱难眠