5 - 函数

1.函数的定义

def functionName(list of parameters):
    # fucntion body

示例:

def sum(i1, i2):
    result = 0
    for i in range(i1, i2 + 1):
        result += 1
    return result


def 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, num1

n1, n2 = sort(3, 2)
print("n1 is", n1)
print("n2 is", n2)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值