鄙人学习笔记
开发工具:Spyder


文章目录

  • 函数function
    • 定义
    • 作用
    • 定义函数
    • 调用函数
    • 返回值
      • 举个例子
    • 可变与不可变类型数据在传参时的区别
      • 举个例子1
      • 举个例子2
    • 函数参数
      • 实参传递方式
      • 形参定义方式
        • 默认参数
        • 位置形参
          • 星号元组形参
        • 命名关键字形参
          • 双星号字典形参
        • 参数自左至右的顺序

函数function

定义

函数用于封装一个特定的功能,表示一个功能或者行为。函数是可以重复执行的语句块,可以重复调用。

作用

函数可以提高代码的可重用性和可维护性。(注意函数命名和清晰性)

定义函数

  • 语法
def 函数名(形式参数):函数体
  • 说明
def 关键字 全称是define, 意味"定义"
函数名 对函数体中语句的描述,命名规则与变量名相同
形式参数 方法定义者要求调用者提供的信息
函数体 完成该功能的语句

备注:函数的第一行语句,可以选择性地使用文档字符串存放函数与参数的说明。

调用函数

  • 语法
函数名(实际参数)

返回值

  • 定义

方法定义者告诉调用者的结果

  • 语法
return [表达式]
  • 说明

①表达式就是需要返回的结果
②若return后不带表达式,相当于返回None
③若不带return语句,函数执行完后返回None(相当于在最后加了一条 return None 语句)

举个例子

代码:

def my_add(num01, num02):result = num01 + num02return resultre = my_add(1, 2)
print(re)

结果:

可变与不可变类型数据在传参时的区别

  • 不可变类型数据

  • 可变类型数据

  • 传参说明

不可变类型的数据传参时,函数内部不会改变原数据的值。
可变类型的数据传参时,函数内部可以改变原数据。

举个例子1

代码:

def fun01(fun_num01):fun_num01 = 2print("fun_num01:"+ str(fun_num01))number01 = 1
fun01(number01)
print("number01:" + str(number01))

结果:

备注:str( )是python自带函数,是python保留的关键字,定义变量时应该避免使用str作为变量名。如果在使用str( )函数之前已经定义过str变量,则会出现TypeError: ‘str’ object is not callable这个报错。可以使用del str将str变量删除。

举个例子2

代码:

def fun01(num01, listA, listB):num01 = 100listA[0] = 200listB = 300number01 = 1
list01 = [2, 3]
list02 = [4, 5, 6]fun01(number01, list01, list02)print(number01)
print(list01)
print(list02)

结果:

函数参数

实参传递方式

①位置传参-序列传参
②关键字传参-字典传参

  • 例子

代码:

def fun01(a, b, c):print(a, b, c)#位置传参:实参与形参的位置依次对应
fun01(1, 2, 3)#序列传参:用*将序列拆分后与形参的位置依次对应
fun01(*[4, 5, 6])#关键字传参:实参根据形参的名称进行对应
fun01(b = 2, a = 1, c = 3)#字典传参:用**将字典拆分后与形参的名字进行对应
fun01(**{"b":20, "c":10, "a":5})

结果:

形参定义方式

默认参数

默认参数,可让调用者有选择性的传递需要的信息

  • 例子

代码:

def fun01(a = 0, b = 1, c = 2):print(a, b, c)fun01()
fun01(1)
fun01(*[2, 3])
fun01(b = 10)
fun01(**{"a":-1, "c":32})

结果:

位置形参
  • 语法
def 函数名(形参名1, 形参名2, ...):函数体
星号元组形参
  • 语法
def 函数名(*元组形参名):函数体
  • 作用

收集多余的位置传参

  • 说明

①一般情况下,元组形参名为’args’
②形参列表中最多只能有一个星号元组形参

  • 例子1

  • 例子2

命名关键字形参

我们先看2个例子,来感受一下命名关键字传参。

  • 例子1(强制实参使用关键字传参)

代码:

#若*放在最开头,则强制我们使用关键字传参
def fun01(*,a,b):print(a, b)#如果我们不通过关键字传参,则运行下面这行代码会报错
fun01(1, 2)

结果:

报错!

  • 例子2

代码:

#b必须使用关键字传参,否则会报错
def fun01(*a,b):print(a, b)fun01(1, 2, b = 2)

结果:

双星号字典形参
  • 例子1

  • 例子2

参数自左至右的顺序

位置形参 -> 星号元组形参 -> 命名关键字形参 -> 双星号字典形参

python基础(part10)--函数相关推荐

  1. python的用途实例-Python基础之函数原理与应用实例详解

    本文实例讲述了Python基础之函数原理与应用.分享给大家供大家参考,具体如下: 目标 函数的快速体验 函数的基本使用 函数的参数 函数的返回值 函数的嵌套调用 在模块中定义函数 01. 函数的快速体 ...

  2. Python基础之函数

    详情请戳 python基础之函数介绍及使用 python基础之内置函数 python基础之迭代器和生成器 python基础之装饰器 转载于:https://www.cnblogs.com/zhangl ...

  3. Python数据结构与算法(1.5)——Python基础之函数与异常

    Python数据结构与算法(1.5)--Python基础之函数与异常 0. 学习目标 1. 函数 1.1 自定义函数 1.2 函数与参数 1.3 函数与返回值 2. 异常处理 2.1 raise 语句 ...

  4. 刻意练习:Python基础 -- Task05. 函数与Lambda表达式

    背景 我们准备利用17天时间,将 "Python基础的刻意练习" 分为如下任务: Task01:变量.运算符与数据类型(1day) Task02:条件与循环(1day) Task0 ...

  5. Python基础__函数

    本节将进入函数的介绍,函数是Python基础中最精彩的部分之一,接下来将对函数做详细介绍. 函数 函数就是对代码进行一个封装.把实现某一功能的代码进行封装到一起.下次需要使用时不需要进行编写代码直接调 ...

  6. 『Python基础』函数

    Python中的函数 函数 (1)什么是函数? 软件开发,是为了解决生活中的问题,函数就是生活中的一种行为,如:吃饭.睡觉.学习.游戏等等等- 不需要资源.不需要结果.执行即可 关门的行为 需要资源. ...

  7. 第七篇 python基础之函数,递归,内置函数

    阅读目录 一 数学定义的函数与python中的函数 二 为何使用函数 背景提要 三 函数和过程 四 函数参数 五 局部变量和全局变量 六 前向引用之'函数即变量' 七 嵌套函数和作用域 八 递归调用 ...

  8. python入门之函数调用内置函数_第九篇 python基础之函数,递归,内置函数

    阅读目录 一 数学定义的函数与python中的函数 二 为何使用函数 背景提要 三 函数和过程 四 函数参数 五 局部变量和全局变量 六 前向引用之'函数即变量' 七 嵌套函数和作用域 八 递归调用 ...

  9. Python基础第六天——函数的使用、函数的参数、函数的返回值、函数的嵌套、命名空间、作用域、函数对象...

    一.拾遗 1.通常情况下无参函数只是进行操作,所以不需要返回值:有参数函数则需要返回值. 2.练习: 判断用户输入一串字符,如果这串字符的长度小于5则重新输入,如果大于5则退出循环. while Tr ...

最新文章

  1. ionic3中使用自定义配置
  2. unicode字符串 转 中文
  3. linux 防火墻生成器shorewall
  4. Redis configuration
  5. 使用Stream流的方式,遍历集合,对集合中的数据进行过滤
  6. AlphaGo之父亲授深度强化学习十大法则
  7. Java线程池理解及用法
  8. 用jdbc连接oracle的第一次经历
  9. Filecoin Gas基础费率升至5.06 nanoFIL
  10. asp.net mvc 路由检测工具
  11. c语言为什么运行慢,【图片】今天写几个性能测试,为什么C语言跑得这么慢呢??【c语言吧】_百度贴吧...
  12. HTML+CSS系列教程导学
  13. react native swiper ios 图片顺序 问题 解决
  14. Linux运维工程师综合面试题
  15. 程序员做笔记的利器:MarkDown软件
  16. Altium Designer初学教程(一)
  17. 安全研究 # 课题:二进制成分分析(Binary SCA)
  18. 在线教育是否能完美结合直播授课与短视频呢?
  19. 集成显卡驱动与linux不兼容,显卡驱动的问题,困扰了很久
  20. 扬州全景拍摄,扬州全景图片欣赏

热门文章

  1. python函数返回值_Python中函数的返回值示例浅析
  2. 2020年408真题_2020年408真题和参考解析
  3. 使用django创建一个单表查询的图书管理系统
  4. Redis工具之Jedis
  5. vue tabs 动态组件
  6. python使用os.listdir和os.walk获得文件的路径
  7. 添加 Bash 自定义命令
  8. 2016/09/16面试资料汇总
  9. openwrt 在centos7 上的开发环境搭建时需要注意的地方
  10. django-groundwork