《Python语言程序设计》第六章学习笔记

《Python语言程序设计》学习笔记

笔记选自《Python语言程序设计》[美]梁勇 著
本篇笔记没有记录用python绘画的turtle库


第6章 函数

  • 定义一个函数:
def functionName(list of parameters):
  # Function body

在这里插入图片描述

  • 程序里通常定义一个包含程序主要功能的名为main的函数

  • 实际上,不管你是否使用return,所有Python的函数都将返回一个值。如果某个函数没有返回值,默认情况下,它返回一个特殊值None。因此,无返回值函数,也被称作None函数。None函数可以赋值给一个变量来表明这个变量不指向任何对象。

  • None函数 不是一定需要return语句。但他能用于终止函数并将控制权返回函数调用者,语法是:
    returnreturn None

  • 位置参数和关键字参数:
    位置参数:实参必须和函数头中定义的形参在顺序、个数和类型上匹配。
    关键字参数:使用关键字参数调用函数,通过name=value的形式传递每个参数,和位置参数可混合使用,但是位置参数不能出现在任何关键字参数之后

def f(p1, p2, p3):
f(30, p2 = 4, p3 = 10) # 正确
f(30, p2 = 4, 10) # 错误
  • 模块化代码:可以将函数的定义放在一个被称为模块的文件中,这种文件的后缀名是.py。之后这些模块可以被导入到程序中重复使用。
from GCDFuction import gdc  #从模块GCDFuction中导入gcd函数
gcd() #调用gcd函数

import GCDFunction  #导入GCDFuction模块
GCDFuction.gcd()  #调用gcd函数
  • 尽管许多语言支持在同一个模块里定义两个同名的函数,但是Python并不支持这个特点。通过默认参数你只可以定义函数一次,但可以通过许多不同的方式调用函数。这和在其他语言中定义同名的多个函数的效果一样。如果在一个模块里定义了两个同名函数,不会出现语法错误,但后者取代了先前的函数

  • global语句:将一个局部变量的作用域绑定为全局的。也可以在函数中创建一个变量,然后在函数外使用。
    可以定义全局变量以便模块中的所有函数都能使用它。

x = 1
def increase():
  global x
  x = x+1
  print(x) # Displays 2

increase() # Displays 2
print(x)

# 这里函数里的x和函数外的x是一样的。
  • 默认参数:当函数被调用时无参数,那么这些默认值就会被传递给实参。
def printArea(width=1, height=2):
printArea()
printArea(height=5, width=3)
printArea(height=5)

函数可以混用默认值参数和非默认值参数,默认值参数必须定义在默认值参数之前
python不支持在同一个模块里定义两个同名的函数,可以通过默认参数形式实现同样效果。

  • 返回多个值:Python的return语句可以返回多个值。
    当它被调用时,需要同时赋值传递这些返回值。
def sort(number1, number2):
  # …
  return number1,number2
n1,n2=sort(2, 3)

本章总结

  1. 程序模块化和可重用性是软件工程的中心目标之一。函数可以实现这个目标。
  2. 函数头由关键字def开始,接下来是函数名和形式参数,最后以冒号结束。
  3. 形式参数是可选的;也就是说,函数可以不包含任何形式参数。
  4. 无返回值的函数被称为voidNone函数。
  5. 一个return语句可以在void函数中用来终止函数并将程序控制权返回给函数的调用者。有时,这对保证函数控制流正常是非常有用的。
  6. 传给函数的参数必须和定义在函数头里的形参在数目、类型和顺序上保持一致。
  7. 当程序调用一个函数时,程序的控制权就转移到被调用的函数。当执行到函数的return语句或执行到函数的最后一条语句时,被调用的函数就将控制权转给调用者。
  8. 带返回值函数也可以当作Python语句被调用。在这种情况下,函数的返回值被忽略。
  9. 函数参数可以当作位置参数关键字参数传递。
  10. 当调用一个带形式参数的函数时,实参的值就被传给形参。这种程序设计术语讲的就是值传递
  11. 函数中创建的变量被称为局部变量。局部变量的作用域从它被创建的位置开始,直到函数返回为止都存在。变量必须在使用前被创建。
  12. 全局变量被定义在所有函数之外,而且它们可以被所有函数访问。
  13. Python允许用默认参数值定义函数。当无参数调用函数时,默认值就被传给形参。
  14. Python的return语句可以返回多个值。
  15. 函数抽象是通过将函数的使用和实现分开实现。一个用户可以在不知道函数是如何实现的情况下使用函数。函数的实现细节被封装在函数内,并对调用该函数的用户来说是隐藏的。这被称为信息隐藏封装
  16. 函数抽象将程序模块化为整齐、分层的形式。程序被写成简洁函数的集合,这样使程序更易于编写、调试、维护和修改。这种编写风格会提高函数的可重用性。
  17. 当实现一个大程序时,使用自顶向下或自底向上的编写方法。不要一次性编写整个程序。这个方法似乎要占用更多的编码时间(因为要反复地运行这个程序),但它实际上更省时间和更易于测试。

关键术语

英文中文
actual parameter实际参数
argument实参
caller调用者
default argument默认参数
divide and conquer分治
formal parameters(i.e., patameter)形式参数(即形参)
functions函数
function asbtraction函数抽象
function header函数头
global variable全局变量
immutable objects不可变对象
information hiding信息隐藏
keyword arguments关键字参数
local variable局部变量
None functionNone函数
parameters参数
pass-by-value传值
positional arguments位置参数
return value返回值
scope of a variable变量的作用域
stepwisw refinement逐步求精
stub待完善方式
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值