python中的cell函数_python基础-函数

函数的基本使用

函数的参数详解

名称空间与作用域

闭包函数

装饰器

2020.9.11

小白学习,如有错误欢迎指点

参考自egon大佬Python快速入门神器​www.zhihu.com

函数

使用函数的原因:所有功能的实现代码堆叠在一起,导致代码的组织结构不清晰,可读性差

重复使用同一功能时,只能重复写,导致重复代码过多,代码冗余

功能需要修改或扩展时,需要找出所有使用过该功能的地方一一改之,无法统一管理,维护难度极大

函数的概念:事先将具有某一功能的代码块封装起来,然后将其内存地址赋值给函数名,函数名就是对这段代码的引用,每当需要用到这一功能的时候,就直接调用该函数即可。

定义函数

定义函数语法:根据上面可知函数的概念必须遵循“先定义后调用”的原则。(和变量类似)

格式:

def 函数名(参数1,参数2,……):

"""文档描述"""

函数体代码

return 值def:定义函数的关键字

函数名:函数名关联函数体内存地址,函数的命名应反映函数的功能

括号内的参数:根据实际需求(代码逻辑是否依赖外部传来的参数)设定参数,可有可无

函数体:由语句和表达式组成,空函数pass表示什么都不做,不会报错(一般用于程序初始设计)

return值:函数的返回值,如果需要对函数结果进一步分析的需要加返回值,不加默认值为None

参数是函数的调用者向函数体传值的媒介,若函数体代码逻辑依赖外部传来的参数时则需要定义为有参函数,否则定义为无参函数

函数体为pass代表什么都不做,称之为空函数。空函数一般用于程序初始设计,通常编程要先想好程序都需要完成什么功能,然后把所有功能都列举出来用pass充当函数体“占位符”,使得程序的体系结构清晰且可读性强,然后可以统筹分工,从而提高开发效率。

调用函数

函数的使用分为定义和调用两阶段定义阶段只检测函数的语法,不执行代码(函数定义没有先后顺序,只要都在调用之前定义好即可)

调用阶段即函数名加括号,此时才会执行函数体代码

函数的调用形式可分为三种

①语句形式:直接加括号

foo()

②表达式形式:

m=my_min(1,2) #将调用函数的返回值赋值给x

n=10*my_min(1,2) #将调用函数的返回值乘以10的结果赋值给n

③函数调用作为函数参数的形式:

# 如:my_min(2,3)作为函数my_min的第二个参数,实现了取1,2,3中的较小者赋值给m

m=my_min(1,my_min(2,3))

函数的返回值

若需要将函数体代码执行的结果返回给调用者,则需要用到return。return后无值或直接省略return,则默认返回None,return的返回值无类型限制,且如有多个返回值则会放到一个元组内

return是一个函数的结束的标志,一个函数可以有多个return,但只要执行到第一个return函数就会终止执行了,并把return值作为本次调用的结果返回。

#返回值也是值,所以如果调用函数时没有及时将返回值赋值给变量的话,就会被当做垃圾被清空

函数的参数

函数的参数分为形式参数和实际参数,简称形参和实参:形参:在定义函数时,括号内声明的参数,形参本质就是一个变量名,用来接收外部传来的值

实参:在调用函数时,括号内传入的值,值可以是常量、变量、表达式或三者的任意组合:

实参示例

①实参是常量

res=my_min(1,2)

②实参是变量

a=1

b=2

res=my_min(a,b)

③实参是表达式

res=my_min(10*2,10*my_min(3,4))

④实参可以是常量、变量、表达式的任意组合

a=2

my_min(1,a,10*my_min(3,4))

在调用有参函数时,实参(值)会赋值给形参(变量名)。在Python中,变量名与值只是单纯的绑定关系,而对于函数来说,这种绑定关系只在函数调用时生效,在调用结束后解除。

形参与实参的具体使用

位置参数

位置即顺序,位置参数是指按顺序定义的参数,需要从两个角度去看:在定义函数时,按照从左到右的顺序依次定义形参,称为位置形参,凡是按照这种形式定义的形参都必须被传值

在调用函数时,按照从左到右的顺序依次定义实参,称为位置实参,凡是按照这种形式定义的实参会按照从左到右的顺序与形参一一对应

def register(name,age,sex): #定义位置形参:name,age,sex,三者都必须被传值

print('Name:%sAge:%sSex:%s' %(name,age,sex))

register("sakura","20","male") 3个位置参数(实参)

关键字参数

在调用函数时,实参可以是key=value的形式,称为关键字参数,凡是按照这种形式定义的实参,可以完全不按照从左到右的顺序定义,但仍能为指定的形参赋值

需要注意在调用函数时,实参也可以是按位置或按关键字的混合使用,但必须保证关键字参数在位置参数后面,且不可以对一个形参重复赋值

def register(name,age,sex): #定义位置形参:name,age,sex,三者都必须被传值

print('Name:%sAge:%sSex:%s' %(name,age,sex))

register(sex='male',name='sakura',age=20) 3个关键字参数

register('sakura',sex='male',age=20) 位置参数和关键字参数混合使用

默认参数

在定义函数时,就已经为形参赋值,这类形参称之为默认参数,当函数有多个参数时,需要将值经常改变的参数可定义成位置参数,而值改变较少的参数可定义成默认参数。

例如编写一个注册学生信息的函数,如果大多数学生的性别都为男,那完全可以将形参sex定义成默认参数为男。如果定义时就已经为参数sex赋值,意味着调用时可以不对sex赋值,这降低了函数调用的复杂度

>>> def register(name,age,sex='male'): #默认sex的值为male

>>> register('tom',17) #大多数情况,无需为sex传值,默认值为male

Name:tom Age:17 Sex:male

>>> register('Lili',18,'female') #少数情况,可以为sex传值female

Name:Lili Age:18 Sex:female

需要注意

你可能感兴趣的:(python中的cell函数)