【Python学习】函数

函数无疑是程序设计中极其重要的一部分,它第一次提出了封装的概念,将一定的功能进行封装以便于使用,这无疑是需要让人非常理解的部分。虽然Python不像C++与Java一样以构造函数为主体的方式进行程序编译。但其依然不可小觑。本篇笔记直接从面向对象的角度学习函数。

一.函数的定义

作用:封存一定的代码段,以实现功能的重复使用,它实现了结构化的程序设计,减少了程序的复杂度,易于开发、调试,有时5也可实现特殊功能。

分类:内置函数、标准库函数、第三方库函数、自定义函数。

语法

def 函数名([形参列表]):
    '''注释'''
    函数体
    return 返回结果

        注:形参列表不需要声明数据类型;函数内部允许嵌套定义。

        开头注释的部分一般用来描述函数的功能,可以省略

调用:函数(实参列表)

二.函数的参数类型与传递

形参:声明函数时声明的参数,不占内存。

实参 :程序运行时实际需要的参数,占内存。

在输入实参时,要保证输入实参的数目和数据类型符合要求。

引用传递:因为Python中没有指针一说,故在函数传递中,直接进行地址传递而非值传递。

                在进行不可变变量如:int、bool、str等数据的形参传递,且形参会在函数中更改数值时,不会影响原实参变量,会在内存中新开辟一个地址进行内容存放。如果传递的是可变变量,则 直接 更改实参。

参数类型:

位置参数:即按照形参顺序、数目进行实参传递。

关键字参数:以”形参名=实参“的形式进行传递,不在乎顺序。

默认参数:即直接在形参时赋值,在实参传递时可以省略。但必须在形参列表的最右端。eg:a=5.

        注:默认参数存在重用现象,即如果默认参数在函数中会被修改值,并且程序中会多次使用该函数。则从第二次开始,默认参数会继承第一次的改变值,继续重复。解决方法即将默认参数设定为等于None,再在函数中设定一个if语句,判定默认参数是否等于None,等于则为[ ],接下来正常编译。

动态参数

位置动态:*形参

        收到多余位置会变成一个元组传递给形参。

关键字动态:**形参

        收到多余关键字时当作字典传递给形参。

注意:动态参数必须在形参列表最后一位。

序列解包

传递参数时,序列中的元素按照位置动态参数的方式传入函数。

        注:序列元素个数必须和形参个数一致。

顺序:序列解包>关键参数解包>普通参数

return语句

从函数中返回一个值,同时结束函数。可以省略,但最好别。

三.变量的作用域

变量起作用的范围叫变量的作用域。

局部变量:只在函数内部使用的变量,引用更快

全局变量:可以横跨多个函数,范围更大。

注:出现函数中局部变量和全局变量重名的情况,则自动引用局部变量。在函数体中引用全局变量时,若该变量名是在函数体中第一次出现且在赋值语 句之前,则解释为局部变量,除非使用global进行了声明。

两个关键字:

global关键字:global 将局部变量转变为全局变量
nonlocal关键字:在嵌套函数中若为定义在上一级函数体中的局部变量赋值,使用nolocal 表明该变量不是所在块的局部变量而是上级函数体重定义的全局变量 (即仍是局部变量,但在该函数中是全局变量。适用于嵌套函数)

四.递归函数

递归函数即自调用函数,在函数体内部直接或间接地自己调用自己,即函数的嵌套调用是函数本身。

组成:终止条件+递归步骤。

重点:

  • 必须设置终止条件
  • 必须保证整体问题是收敛的
  • 必须保证内存和运算消耗控制在一定范围,过大计算机无法承受

匿名函数

匿名函数是没有名称的函数,即不使用过def语句定义的函数,而使用lamda关键字。

语法:lamda arg1, arg2,…argn:expression

        arg:若干参数;   expression:单个表达式(不能使用if语句)

因为匿名函数简洁方便,也常用于赋值变量。(常用于sort函数的key值设计中)

五.常用函数

函数调用:

随机函数

常用内置函数

注:reduce函数需要引用functools库 

END.

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值