Python学习笔记·代码复用(函数)

来源:互联网 发布:淘宝3c认证可以用其他 编辑:程序博客网 时间:2024/06/07 01:23

Python学习笔记·代码复用(函数)

注:在校计算机学生一名,菜鸟一枚,最近开始学习Python的基础知识希望有什么不对的地方各位大佬能够不令赐教!开学事情一多就落下了一些内容这两天在补。
课程是在中国大学MOOC上学的,有兴趣的同学可以自行搜索
Ps:整理是自己看了一些资料和博客之后写的,尽量将原博客的地址给出来让大家参考,有一些时间可能有些远了还请大家见谅

      • 函数定义
      • 函数的调用和返回
      • 改变参数值的函数
      • 递归

函数定义

  函数:完成特定功能的一个语句组,通过调用函 数名来完成语句组的功能。 为函数提供不同的参数,可以实现对不同数据的 处理 函数可以反馈结果。 函数分为自定义函数(用户自己定义)以及系统自带函数(如math库中的 sqrt())两种。使用函数目的: 降低编程的难度 和 代码的重用

#函数定义:使用def语句def <name>(<parameters>):          <body> #函数名<name>:可以是任何有效的Python标识符 #参数列表<parameters>:是调用函数时传递给它的 值(可以由多个,一个,或者零个参数组成,当有多 个参数时,各个参数用逗号分隔) 
  • 形式参数:定义函数时,函数名后面圆括号中的 变量,简称“形参”。形参只在函数内部有效
  • 实际参数:调用函数时,函数名后面圆括号中的 变量,简称 “实参”。
#函数调用的一般形式:   <name>(parameters>) 

函数接口:返回值和参数
- 通过函数返回值的方式传递信息
- 通过参数传递信息

函数的调用和返回

函数调用执行的四个步骤:
- 1、调用程序在调用处暂停执行
- 2、函数的形参在调用时被赋值为实参
- 3、执行函数体
- 4、函数被调用结束,给出返回值
函数的调用是一个递归的过程。

函数的返回值
- return语句:程序退出该函数,并返回到函数被调用的地方
- return语句返回的值传递给调用程序
- Python函数的返回值有两种形式: 1、 返回一个值 2、返回多个值 。
- 无返回值的return语句等价于return None。 (None是表示没有任何东西的特殊类型。)
- 返回值可以是一个变量,也可以是一个表达式。

#函数多返回值测试代码#©TyxMaekdef test(a,b,c):    return c,a,ba=1b=2c=3a,b,c=test(a,b,c)print(a,b,c)

多返回值测试代码

改变参数值的函数

  虽然形参和实参名字相同,但他们是不同的变量 ,如下列代码的执行结果并没有改变变量a的值

a=1b=2def f(a,b):    a=a+b    print("函数内部结果:{}".format(a))f(a,b)print("函数外部结果:{}".format(a))

没有改变变量a的值
函数的形参只接收了实参的值,给形参赋值并不影响实参。Python中并没有像C++一样可以用&来传递修改实参,但 Python可以通过值来传递参数。比如:

a=1b=2def f(a,b):    a=a+b    print("函数内部结果:{}".format(a))    return aa=f(a,b)print("函数外部结果:{}".format(a))

值来传递参数

如果变量是可变对象(如列表或者图形对象),返回到调用程序后,该对象会呈现被修改后的状态。

listp=[1,2,3]def f(listp):    for i in range(len(listp)):        listp[i]+=1    print("函数内部结果:{}".format(listp))f(listp)print("函数外部结果:{}".format(listp))

可变对象

递归

   递归是重复调用函数自身实现循环。但递归不是循环。递归有一个或多个基例是不需要再次递归的; 所有的递归链都要以一个基例结尾。例如求一个数的阶乘的代码如下:

#递归测试函数 ——阶乘#©TyxMaekdef f(n):    if n==0:        return 1;    else:        return n*f(n-1)print(f(3))

阶乘

  • 递归每次调用都会引起新函数的开始
  • 递归有本地值的副本,包括该值的参数
  • 阶乘递归函数中:每次函数调用中的相关n值在中途的递归链暂时存储,并在函数返回时使用。
  • 构造递归函数,需要基例。基例不进行递归,否则递归就会无限循环执行 Python在900余次调用之后,到达默认的“递归深度的最大值”,终止调用。