函数基础学习总结

函数基础

什么是函数

函数就是实现某一特定功能的代码的封装。
(函数就是把实现某一个功能的代码打成一个包,以后再需要这段代码对应的功能的时候不需要再写这段代码,而是直接调用封装这段的函数)

函数分类(根据函数是谁创建的)

1)系统函数(别人造好机器)  -   Python自带的函数,例如:print、input、type、max、min、sorted等
2)自定义函数(自己造的机器)  -  由程序员自己创建的函数

定义函数/创建函数 - 造机器

语法:
def 函数名(形参列表):函数说明文档函数体说明:
def       -       关键字;固定写法
函数名     -       由程序员自己名,但是必须符号命名要求和规范要求:是标识符;不能是关键字规范:见名知义(看到函数名就大概知道这个函数对应的功能是什么); 字母都小写多个单词用下划线隔开;不使用系统的函数名、类名、模块名
():       -       固定写法形参列表    -      以'变量名1,变量名2,变量名3,...'的形式存在,这儿的变量名可以有也可以没有形参的作用:将函数外部的数据传递到函数里面怎么确定形参:看实现函数的功能需不需要额外的数据,需要几个(在函数体中就把形参当成对应的数据来使用)函数说明文档  -    本质就是一个多行注释,用来描述函数的功能和使用方法
函数体      -      结构上:和def保持一个缩进的一条或者多条语句(至少一条)逻辑上:函数体就是实现函数功能的代码
# 练习:定义一个函数求任意两个数的和
def sum2(num1, num2):# num1 = 23, num2 = 50"""求两个数的和(函数功能说明):param num1: 第一个数(参数说明):param num2: 第二个数:return: None(返回值说明)"""print(num1 + num2)      # print(23 + 50)  -> print(73)# 练习1:定义一个函数,统计指定字符串中中文的个数
def count_chinese(str1):# str1 = message = 'hello world! 你好,世界!'"""统计字符串中中文的个数:param str1: 指定的字符串:return: None"""count = 0for x in str1:if '\u4e00' <= x <= '\u9fa5':count += 1print(count)# 练习2:定义一个函数,将指定的数据插入到指定列表的最前面
def prepend(data, list1):"""将输入插入到列表的最前面:param data: 需要插入的数据:param list1: 列表:return: None"""list1.insert(0, data)# print(list1)# 练习3:定义一个函数,任意一个整数的阶乘
def factorial(num):"""求任意整数的阶乘:param num: 需要求阶乘的数(必须是大于等于1的整数):return: None"""s = 1for x in range(1, num+1):s *= xprint(s)# 练习4:定义一个函数,求任意一个圆的面积
def circle_area(r):"""求圆的面积:param r: 圆的半径:return: None"""print(3.1415926 * r ** 2)

函数的调用 - 使用机器

# 1) 定义函数不会执行函数体, 调用函数才会执行函数体
def func1():print('hello world!')print('abc'[10])# 2) 怎么调用函数
"""
语法:
函数名(实参列表)说明:
a.函数名     -       需要哪个函数的功能就调用哪个函数,就写哪个函数的函数名(注意:函数名必须是已经定义好的函数的函数名)
b.()        -       固定写法
c.实参列表    -      以'数据1, 数据2, 数据3,...'的形式存在实参就是通过形参从函数外部传递到函数内部具体的数据  (实参是用来给形参赋值)
"""
sum2(23, 50)
print('后面的代码')message = 'hello world! 你好,世界!'
count_chinese(message)
#
# count_chinese('化经济师aasdf')
#
# factorial(10)
# factorial(5)# 3) 函数调用过程
"""
当代码指向到函数调用语句的时候:
第一步:先回到函数定义的位置
第二步:传参(用实参给形参赋值)
第三步:执行函数体
第四步:确定函数返回值
第五步:回到函数调用的位置接着往后执行
"""

函数的返回值

返回值就是从函数内部传递到函数外部的数据1)怎么将确定函数返回值(怎么将指定的数据作为函数返回值)
看执行函数体的时候有没有遇到return,如果遇到return,return后面的值就是函数的返回值; 如果没有遇到return,返回值是None2)怎么获取函数返回值
获取函数调用表达式的值就是获取函数的返回值。
(每个函数调用表达式都是有结果,结果是返回值;所以函数的返回值能做的事情,函数调用都可以做)
函数调用表达式:调用函数的语句3)什么时候需要返回值
如果实现函数的功能产生了新的数据,我们就应该将新的数据返回原因:每次调用函数的时候,系统会自动为这个函数创建一个临时的栈区域,用来保存在函数中产生的数据(形参也是保存在这个里面的),当函数调用结束的时候系统会自动释放这块内存(内存中的数据会被删除),只有返回值不会直接删除
def func1():print(100)x = func1()
print('x1:', x)def func2():print('hello world!')return 100x2 = func2()
print('x2:', x2)
print(func2() * 2)def func3(n):# n = 3; n = 4if n % 2:return 100else:return 200
# 2. return
"""
return在函数中有两个作用:
1)返回返回值     -       谁在return的后面,谁就是返回值
2)提前结束函数    -       执行函数体的时候如果return,函数直接结束
"""

函数的参数

位置参数和关键字参数

根据实参传递方式分类:

  • 位置参数: 以’实参1,实参2,实参3,…'的形式存在,通过位置一一对应的方式来给形参赋值

  • 关键字参数:以’形参1=实参1, 形参2=实参2, …'的形式存在,直接用=来确定实参和形参的对应关系

    注意:位置参数和关键字参数可以混用,混用的时候位置参数必须在关键字参数的前面

    def func1(x, y, z):# x=10, y=20, z=30print(f'x:{x}, y:{y}, z:{z}')func1(10, 20, 30)       # x:10, y:20, z:30
    func1(20, 10, 30)       # x:20, y:10, z:30func1(x=10, y=20, z=30)     # x:10, y:20, z:30
    func1(y=20, z=30, x=10)     # x:10, y:20, z:30func1(10, y=20, z=30)       # x:10, y:20, z:30
    func1(10, z=30, y=20)       # x:10, y:20, z:30func1(10, 20, z=30)         # x:10, y:20, z:30
    # func1(x=10, 20, 30)       # 报错!
    

参数默认值

定义函数的时候,可以通过 ‘形参名=值’ 的方式给参数赋默认值; 如果一个形参有默认值,那么在调用函数的时候这个形参可以不用赋值。

注意:定义函数的时候,如果有的参数有默认值有的参数没有,那么没有默认值的参数必须放在有默认值参数的前面。

def func2(x=10, y=20, z=30):print(f'x:{x}, y:{y}, z:{z}')func2()
func2(100)
func2(100, 200)
func2(100, 200, 300)
func2(y=200, z=300)def func3(x, z, y=20):print(f'x:{x}, y:{y}, z:{z}')

参数类型说明

定义函数的时候指定参数类型

参数类型说明既可以提示使用者在调用函数的时候该传什么类型的数据;又可以让参数在函数体中使用的时候有代码提示。1)方法1:没有默认值的参数: 形参名:类型名
2)方法2:给参数赋默认值,默认值的类型就是参数的类型
def func4(str1: str, list1=[]) -> None:str1.upper()func4('anc', [1, 20])
# 补充:变量类型说明
message = '["abc", "sjksf", "23jhs"]'
list2 = eval(message)       # type: list
list2.clear()

不定长参数

作用:解决参数个数不确定的问题

1)带*的不定长参数
定义函数的时候,如果在某个形参前面加*,那么这个参数就变成了一个不定长参数,调用的时候这个形参可以接受若干个实参。本质:如果形参有*,那么这个参数就会自动变成一个元组,它接收到的所有的实参会作为这个元组的元素注意:a. 带*的不定长参数在传参的时候只能使用位置参数b. 定长参数和带*的不定长参数混用的时候,*前的定长参数必须用位置参数传参,*后面的定长参数必须用关键字参数传参2)带**的不定长参数 (了解)
本质:如果形参前有**,那么这个参数就会自动变成一个字典,它接收到的所有的实参会作为这个字典的键值对注意:传参的时候只能用关键字参数传参
def func5(*num):print(f'num:{num}')func5()
func5(10)
func5(20, 20)
func5(10, 20, 56, 78, 3)def func6(x, *y):passfunc6(10)
func6(10, 20, 34, 89)# 练习:定义一个函数,求多个数的和
def sum2(*nums):s = 0for x in nums:s += xreturn sprint(sum2(10, 29))
print(sum2(10, 29, 23))
print(sum2(10, 29, 23, 67, 23))def func7(x, *y, z):passfunc7(10, 20, 30, 40, z=100)# *的作用只是让之后的参数必须是关键字参数
def func8(a, *, b, c):passfunc8(1,b=3,c=4)def func9(**x):print(f'x:{x}')func9()
func9(a=10)
func9(a1=10, a2=30, b1=2, b2=3)
func9(k=20, j=23)# 混用,什么参数都可以传
def func10(*args, **kwargs):passfunc10()
func10(10, 20)
func10(a=19)
func10(10, v=23)

day10-函数基础总结相关推荐

  1. Python学习笔记--day10函数入门

    day10 函数入门 初识函数 函数的参数 函数的返回值 1. 初识函数 函数到底是个什么东西? 函数,可以当做是一大堆功能代码的集合. def 函数名():函数内编写代码......函数名() 例如 ...

  2. python命名空间和闭包_Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】...

    本文实例讲述了Python函数基础用法.分享给大家供大家参考,具体如下: 一.什么是命名关键字参数? 格式: 在*后面参数都是命名关键字参数. 特点: 1.约束函数的调用者必须按照Kye=value的 ...

  3. javaScript系列 [01]-javaScript函数基础

    [01]-javaScript函数基础 1.1 函数的创建和结构 函数的定义:函数是JavaScript的基础模块单元,包含一组语句,用于代码复用.信息隐蔽和组合调用. 函数的创建:在javaScri ...

  4. php vsftpd文件上传类,php ftp文件上传函数(基础版)

    php ftp文件上传函数(基础版) 复制代码 代码如下: // 定义变量 $local_file = 'local.zip'; $server_file = 'server.zip'; // 连接F ...

  5. python 函数进阶_Python学习入门基础:一篇文章搞定函数基础、函数进阶

    一.函数基础函数的快速体验 函数的基本使用 函数的参数 函数的返回值 函数的嵌套调用 在模块中定义函数私信小编001即可获取Python学习资料01. 函数的快速体验 1.1 快速体验 所谓函数,就是 ...

  6. 三, for循环----文件对象-----函数基础------模块基础

    for循环 文件对象 函数基础 模块基础 一,for 循环 1,for循环详解 二.文件对象 1,文件打开方法 2,文件输入 3,文件输出 4,操作文件 三,函数基础 1,函数基本操作 2,函数参数 ...

  7. JavaScript操作大全整理(思维导图三--函数基础)

    3.JavaScript函数基础 转载于:https://www.cnblogs.com/yuxia/p/3360806.html

  8. 初识python之函数基础

    课堂笔记: 1.什么是函数?函数相当于工具,需要事先准备好,在需要用时再使用. 2.如何使用函数?函数必须先定义.后调用. 3.函数的语法: # def 函数名(参数1,参数2...):# " ...

  9. Python学习入门基础:一篇文章搞定函数基础、函数进阶

    一.函数基础 函数的快速体验 函数的基本使用 函数的参数 函数的返回值 函数的嵌套调用 在模块中定义函数 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在 ...

  10. 没有ggplot这个函数_JavaScript学习笔记(四)——函数基础

    函数基础 我们代码里面所说的函数和我们上学的时候学习的什么三角函数.二次函数之类的不是一个东西 函数的概念 对于 js 来说,函数就是把任意一段代码放在一个 盒子 里面 在我想要让这段代码执行的时候, ...

最新文章

  1. php 换台电脑 表单部分_PHP更新购物车数量(表单部分/PHP处理部分)
  2. 驱动进化之路:总线设备驱动模型
  3. C# WinForm开发系列 - Excel
  4. TypeError: 'builtin_function_or_method' object has no attribute '__getitem__'的解决方法等
  5. gradle拷贝静态资源文件_Gradle-操作文件文件拷贝
  6. 本地wamp的Internal Server Error错误解决方法
  7. poj 2352 Stars 树状数组
  8. 2. sales quote merge before
  9. 键盘输入字符串统计_C语言 | 统计选票结果的程序
  10. 大数据时代侦查机制有哪些改变
  11. Luogu5629 【AFOI-19】区间与除法
  12. php 源码 flash,Flash小游戏PHP源码
  13. 小白怎样使用EXCEL导入MATLAB画出图像
  14. 《德鲁克管理思想精要》读书笔记小结
  15. JavaFx教程-01初识javaFX
  16. 浮点数切分 C++
  17. hive创建hbase外部表
  18. 圣思园——Java SE Lesson 6
  19. python取数字前n位
  20. 我们要注意的问题.net

热门文章

  1. deepin linux 安装jdk,deepin安装JDK
  2. 爬取全国12个热门城市奶茶店铺情况,看看你的城市哪个品牌最多
  3. 阿里云OCR图片文字识别使用教程
  4. 秋日登洪府滕王阁饯别序
  5. ubuntu系统重装恢复步骤
  6. c8500刷机 转帖
  7. Office 2007卸载
  8. pm2 启动 Node + TS 项目
  9. 干货分享 | 4万字全面解读数据中台、数据仓库、数据湖(建议收藏)
  10. 八类网线和七类网线的区别_八类网线你用过吗?与六类、七类等网线有啥区别?...