5 - 函数

来源:互联网 发布:出纳日记账软件 编辑:程序博客网 时间:2024/06/06 09:15

1.函数的定义

def functionName(list of parameters):    # fucntion body

示例:

def sum(i1, i2):    result = 0    for i in range(i1, i2 + 1):        result += 1    return resultdef main():    print("Sum from 1 to 10 is", sum(1, 10))    print("Sum from  20 to 37 is", sum(20, 37))if __name__ == "__main__":    main()

2.参数的传递

  • 位置参数按函数中定义的顺序传递参数,而且数量、类型必须相匹配
  • 关键字参数:指定要传递的参数的名字,通过 name = value 的形式传递每个参数。通过关键字传参可以以任何顺序出现。
  • 二者混合出现:位置参数不得出现在任何关键字参数之后

函数

def func(p1, p2, p3):

正确的调用方式:

func(30, p2 =4 , p3 = 10)

错误的调用方式:

func(30, p2 =4 , 10)

3.通过传引用来传递参数

调用函数时,实参的值就被传递给形参,这个值通常就是对象的引用值,这种方式被称作值传递
也就是说,如果室参事一个数字或者字符串的时候,不管函数中的形参怎么变化,这个实参是不受影响的。

这样的原因是因为数字字符串被称作不可变对象。不可变对象的内容是不能被改变的。
当你将一个新数字赋值给变量时,Python会为这个新数字创建新对象,然后将这个新对象的引用赋值给这个变量。

4.模块化代码

  • 在Python中你可以将函数的定义放置在一个模块文件中,这种文件的后缀为.py,之后这些模块可以被导入到程序中以实现重用。
  • 这些模块文件应该和其他程序放到一个地方
  • 一个模块可以包含不止一个函数,每个函数都有不同的名字,如果模块中有两个名字相同的函数,那么前面的函数会被忽略。
  • 关于函数的重载问题:Python并不像Java、C++那样支持函数重载(函数同名不同参),但是Python提供的位置参数和关键字参数机制,使其传参方式变得多样化,间接地实现了函数的重载问题
  • Turtle、random、math等模块是定义在Python库中的模块,这样它们可以被导入到任何一个Python程序中。

5.变量的作用域

  • 局部变量:数内部定义的变量,只能在函数内部被访问。
  • 全局变量:在所有的函数之外创建,可以被所有的函数所访问。在函数中定义的变量也可以通过用 global 关键字来修饰变成全局变量。
  • 请注意,尽管允许使用全局变量,但是在一个函数中允许修改全局变量并不是什么好习惯,因为这样会是程序更容易出错。

6.默认参数值

  • Python允许定义带默认参数值的函数。当函数被调用时无参数,那么这些默认值就会被传递给实参。

例如:

def printArea(width = 1, height = 2):    area = width * height    print("width:", width, "\t height:", height, "\t area:", area)    printArea()printArea(width = 1.2)

7.返回多个值

Python的return语句允许返回多个值

def sort(num1, num2):    if num1 < num2:        return num1, num2    else:        return num2, num1n1, n2 = sort(3, 2)print("n1 is", n1)print("n2 is", n2)
0 0
原创粉丝点击