Python函数基础

函数的创建

函数的介绍

在python中可以使用代码dir(_ _ builtins_ _ )获取python中的全部函数,同时python提供了一种可以让用户自己定制函数的方法来满足项目的不同需求,并且可以直接使用函数名来替代整个代码块,大大减少了重复编写相同代码块的繁琐工作

需要注意的是,区分定义函数和调用函数。定义函数是指创建一个新函数,调用函数是指使用这个函数。

函数的定义

创建一个新函数即定义函数,形式如下:

def 函数名(参数):

        代码块

        return 返回值

五点注意事项

1、def是python中的保留字,表示创建一个函数。def语句后面的冒号不能省

2、函数名的命名规则与变量的命名规则相同

3、参数表示该函数可以接收到的数据

4、代码块就是用于实现函数功能的具体代码内容

5、return用于函数执行后的数据返回给调用函数。如果不需要将数据返回给调用函数,则不必使          用return语句(return语句本质上也属于代码块)

代码并没有执行,这是因为定义函数仅仅是指创建一个具有某种功能的函数,并不是使用该函数来处理操作。所以函数被定义后不会被执行,只有在调用时才会被执行。

函数的调用

创建好函数后就可以开始使用该函数,使用该函数的过程就是函数的调用

(注意:创建函数的代码需要写在调用函数的代码上方,即先创建函数的代码,再写调用函数的代码)

函数的复用

定义函数的最大优点在于如果需要经常使用某些功能,将这些功能创建成函数,在使用时只需要调用该函数即可,不需要重复编写繁杂的代码块

示例:(实现计算多个数值的阶乘之和)

return返回值

return语句用于将函数中的数据返回给调用函数,下面有4种return语句的使用方式

1、定义函数中带return语句。return是python中的保留字,功能是返回数据到调用函数

2、定义函数中不带return语句。当定义函数的代码块全部执行完毕后,调用函数的代码将默认接收到一个空值,即None

3、定义函数中带return语句且返回多个值。

(注意:一般是以元组的形式返回所有的值)

4、定义函数中return语句位于非末尾行且返回多个值

(注意:return语句返回调用函数时表示函数已经执行结束,将不会继续执行return后面的语句)例如该代买中倒数第二行的print()语句并没有输出内容

函数的参数

在实际操作中,大部分函数都需要根据不同的参数计算出不同的结果,从而让函数能更加灵活地处理数据

形参和实参

定义函数中的参数称为形参,调用函数时填入的参数被称为实参,形式如下:

def 函数名(形参1,形参2,...):
    代码块
    return 返回值
函数名(实参1,实参2,...)

五点注意事项:

1.形参使用变量名来接收实参传递过来的信息,因此形参1,形参2都为变量名

2.创建函数时,需要确定函数需要处理的数据有哪些,从而确保形参的个数

3.当函数需要接收多个形参时,形参之间用逗号隔开

4.调用函数中实参为实际数据,实参个数与形参个数相同

5.调用函数时会按照顺序依次将所有实参的数据复制给形参

默认参数

通常情况下,定义函数中的某些参数会填入相同的数据,这时可以给参数设置默认参数,即提前给参数设置一个数据

def 函数名(形参1,形参2=数据2):
    代码块
    return 语句

三点注意:

1.形参2=数据2,表示将数据2赋值给形参2,所有形参2被称为默认参数

2.默认参数的功能时当调用函数没有填入实参2的数据时,形参2默认填入数据2的值

3.当调用函数传递了实参2的数据值时,实参2的数据值会覆盖数据2的值

当形参中有默认参数和必填参数时,需要先填写必填参数,再填写默认参数

如上图所示,r就是必填参数,所以不能将形参r的位置和pi的位置互换。此外,当有n个必填参数时,再调用函数的时候至少需要填入n个数据

(实参再传递数据时也可以使用指定形参名称的方式传递数据)

可变参数

当不确定函数中需要接收的参数个数时,可以使用可变参数。再形参前加一个*就可以转换为可变参数,形式如下:

def 函数名(形参1,*形参2)

三点注意:

1.可变参数的形参用*开头

2.可变参数必须位于必填参数的右边以保证必填参数先接收到数据,再将剩余的数据传递给可变参数

3.可变参数以元组的形式接收数据

关键字参数

关键字参数以字典的形式存储接收到的数据,形式如下:

def 函数名(形参1,**形参2):

四点注意:

1.关键字参数使用**开头

2.关键字参数必须位于必填参数的右边,从而保证必填参数先接收到数据,再将剩余数据传递给关键字参数

3.关键字参数以字典形式接收数据

4.传递给关键字参数的数据包含键和值,其中键和值之间使用等号连接

函数的变量作用范围

根据变量的作用范围可以将变量分为全局变量和局部变量。全局变量指变量再整个代码文件内都可以被使用,局部变量指变量只能在局部范围内被使用。函数中形参变量和函数内部代码块中的变量都是局部变量。

函数内部的代码可以使用外部定义的全局变量。所以这里的e使用的是e=100

函数中使用全局变量存在的问题

当在函数中使用全局变量且对全局变量进行赋值时,将重新在函数内部创建一个新的局部变量,而不是直接使用全局变量

global声明全局变量

如果需要在函数外部和函数内部都使用同一个变量(不会因为在函数内部而被重新赋值),可以在函数中使用global关键字对变量进行声明

变量为可变数据

在python中根据是否会改变内存空间可将数据分为可变数据和不可变数据,其中可变数据是指数据变化后不会改变内存空间

对于一个可变数据,当使用方法(例如appen()、remove()等方法)来修改数据时不会改变七内存空间,当对数据进行新的赋值时会改变其内存空间

函数中的可变数据

当可变数据为全局变量时,在函数中对可变数据进行修改会改变全局变量

过程:先变成a=[1],之后是b=[1,1],最后a指向全局列表ls,而ls在二次调用后已经变成[1,1],所以a和b最终都是[1,1]

导入其他模块中的函数

导入文件模块

import是python中的保留字,功能是导入当前文件夹内的文件模块,形式如:import   文件名

调用文件模块中的函数的使用形式如:文件名 . 函数名(参数)

注意:导入模板是指直接将整个模板文件复制到需要导入的代码文件中

用import导入的模块代码都会被执行一次。若模块中只有函数的定义,函数将不会被执行。若模块中还有其他代码(非函数的定义),程序将按顺序执行

导入文件中的指定函数

from 文件名 import 函数名

调用函数的使用形式:函数名(参数)

注意:直接导入函数,不是导入整个文件,因此在调用函数时无需添加文件名

当需要导入文件中的多个函数时,可以使用逗号分隔开

导入文件中的全部函数

当需要导入文件中的全部函数时,可以使用保留字from并结合*,形式如下:

from 文件名 import *han

调用函数的使用形式:函数名(参数)

给导入的函数设置别名

from 文件名 import 函数名 as 新的函数名

import 文件名 as 新模块名

调用函数的使用形式如下:

新的函数名(参数)

新模块名 . 函数名

_ _name_ _属性

python中的_ _name_ _属性用于获取当前文件的名称。如果_ _name_ _位于主文件(将要执行的文件)中,则执行_ _name_ _时返回的值为''_ _main_ _''。如果_ _name_ _位于次文件(导入的文件)中,则执行_ _name_ _时返回的值为导入的文件名

对调用函数进行测试,为了不干扰主文件代码的执行通常会加入(if _ _name_ _=='_ _main_ _' :)

匿名函数lambda

lambda是python的保留字之一,用于定义一些简单函数,也称为匿名函数。

第一种情况:将lambda作为函数。使用形式如下:

函数名=lambda 参数:函数内部代码

如fun1=lambda x,y:y+x等效为下面的代码:

def fun1(x,y)

        return y+x

第二种情况:将lambda作为函数的参数。用sorted()函数(其中函数支持lambda语句)为例进行介绍。先介绍sorted()函数,形式如下:

sorted(iterable,key=None,reverse=False),其中key=None,reverse=False是默认函数

参数iterable:表示可迭代的数据对象,例如字符串,列表或元组

参数key:表示比较函数,其值可以为lambda语句

参数reverse:指明排序顺序

注意:sort()方法只能对列表数据进行排序

           sorted()函数可以对所有可迭代的数据(如字符串、列表、元组)进行排序

abs(参数)用于求参数的绝对值

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值