A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 不二晨 金牌黑马   /  2019-3-15 16:27  /  700 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

一、什么是函数

一个输入一些值,进行一系列操作,再输出/或不输出一些值的过程

二、函数的结构

def count(a,b):
        n = a+b
        return n
1
2
3
1、签名

以def开始的第一行def count(a,b),是一个函数的签名。
该标志建立了一个新的标识符(count)作为函数的名称。并且设立了预期的参数个数,以及标识这些参数的名称(a和b)。

2、主体

函数定义的其余部分称为函数的主体

returun语句
return语句一般用在函数体内,用来表示该函数应立即停止执行,并将所得到的值返回给调用者。
若return语句执行后没有明确的返回值,或控制流在没有执行return语句的情况下到达过函数体的末端,那么None值将被返回。
三、函数的调用

1、调用函数

函数返回值传递给调用者的实现类似于赋值
(python机制总不用复制对象,因此在参数和返回值是一个复杂对象的情况下,也能保证函数调用是有效的)。

每次调用函数时,Python会创建一个专用的活动记录来存储与当前调用相关的信息。

活动记录:调用函数时,Python创建的一个专用区域,存储与当前调用相关的信息。
活动记录中包括了命名空间。

命名空间:用以管理当前调用中局部作用域内的所有标识符。
命名空间包括该函数的参数(上例中的a、b)以及在函数体内定义的其他本地标识符(上例中的n之类的标识符)。

函数调用者局部作用域内的标识符与调用者作用域内的其他相同名称的标识符没有关系。

2、函数的信息传递

形参与实参

在函数签名的上下文中,用来描述预期参数的标识符被称为形式参数,调用者调用函数时发送的对象是实际参数。形参是实参的一个别名。

定义参数的几种常用方法

关键字参数
对签名foo(a=10,b=20,c=30),foo(5)的调用表示a=5、b和c是指定的默认值(基于位置参数)。
在python中,还支持另一种关键字参数机制,即foo(c=5)的调用表示a=10、b=20、c=5。
此机制在类似max(a,b,key = abs)语法中作用很大。

默认参数值
python提供了支持多态函数的方法(支持多个可能的调用函数签名的方法)。
例1:def foo(a,b=15,c=27)
其中后两个提供了默认值,当提供的参数数量不够时使用默认值
(如果一个默认的参数具有参数值,那么它后面的参数也必须具有默认值,bar(a,b=15,c)是不合法的)

例2: Python对range函数支持3种调用语法
(1)range(start,stop,step):生成从start到stop(不含n)的,序列增量为step的整数序列
(2)range(start,stop):生成从start到stop(不含n)的,序列增量为1的整数序列
(3)range(n):生成从0到n(不含n)的,序列增量为1的整数序列
通过以下方式实现

     def range(start,stop=None,step=1):
             if stop is None:
                     stop = start
                     start = 0
             ……
1
2
3
4
5
参数是可变参数时注意

当参数是可变对象时,不要对参数造成成意想不到的影响。

如:假设count(list,target)函数,是一个用来计算列表中目标元素出现次数的函数,如果在函数体中,有list.append(e)之类的操作,此时将会为列表追加新的元素,改变了原来传入的参数状态。这种设计是非常缺乏常识且糟糕的。

三、python的一些内置函数

输入\输出:print、input、open等
字符编码:ord、chr
(其他暂不赘述……有空补)

四、区别函数与方法

1、函数

描述一个传统的、无状态的函数,该函数被调用不需要了解特定类的内容或该类的实例,如sorted(data)

2、方法

描述一个成员函数,在调用特定对象时使用面向对象的消息传递语法,如data.sort()
---------------------
【转载,仅作分享,侵删】
作者:琪仔要转行回coder
来源:CSDN
原文:https://blog.csdn.net/lllllaaa77/article/details/88405144
版权声明:本文为博主原创文章,转载请附上博文链接!

1 个回复

倒序浏览
加油,感谢分享
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马