python-- 函数,,函数一、函数的定义与


函数

一、函数的定义与调用

函数的定义:函数及工具,我们把事先准备工具的过程可以当做定义一个函数,拿来用准备好的工具叫做函数的调用

结论:函数必须是先定义后调用的。

1、定义一个函数

def func():    print(‘hello word‘)func()

注; def 为关键字,func为函数名,后跟的括号与冒号必须写,def与func之间用空格分开

func():调用函数体中的值------称为函数的调用

函数名;由数字、字母,下划线组成。不能以数字开头。不能是python的关键字

-------- 写函数应有注释说明

写一个函数;关键字+函数名--------子代码-----优先写注释-------再写函数体

2、函数的分类

内置函数:无须定义,python解释器都弄好了

print(len(‘hfgsgj00‘))   #求长度print(max([1,2,3,4]))     #最大值print(min([54,778,65,7865]))  #最小值print(sum([12,4864,5]))   #求和

自定义函数:

def mylen():    pass

3、返回值

返回值:return(返回)后的那个数就叫返回值

return与函数而言有三种形式的返回

1,没有返回值------就是不写return的情况下,函数默认返回None,只写return后没有返回值函数也默认返回None

2,只返回一个值--------后跟一个返回值,可以跟任意类型的值

3,返回多个值-------return后可以跟多个任意类型的返回值,返回的值是以元组类型

注;如果在函数中有多个return,当函数执行时只执行第一个return,执行完第一个return函数结束执行

二、参数

1,形参:形式参数,在函数定义时接受的值

参数种类与定义;

1、默认参数:设置默认值

2、位置参数:按位置顺序一一对应传参

3、动态参数:*arges接受一个或多个参数,组成员组, **kwargs接受多个关键字参数,并组成字典类型

2,实参:真实存在的值,在函数调用时传入的值

1,按位置传参:按照位置一一对应传入参数

def func(x,y):    print(x)    print(y)func(10,20)

2、按关键字传参:就是以变量的形式和赋值的形式传参

def func(x,y):      print(x)        print(y)    func(y=10,x=20) 

三,空间命名和作用域
1、三种空间命名(命名空间加载由硬盘到内存)

1,局部空间命名:程序运行中,调用时才加载

2、全局空间命名:程序运行中,从上到下加载

3、内置空间命名:运行程序前加载

2、空间命名的取值(从内往外取值)

1,局部调用时: 局部空间-------全局空间---------内置空间

2,全局调用时:全局空间-------内置空间

3、作用域:命名空间和作用域是分不开的,因为作用域的划才得到的命名空间

1,全局作作用域:全局生效,包含内置名称空间和全局名称空间,在文件的任何位置都能别应用

2,局部作用域:局部空间名称,只能在局部范围之内才能生效

四,函数名本质

函数名本质就是函数的内存地址

1,可以被应用

2、可以当做函数的参数和返回值

3,可以被当做容器类型的元素

五,闭包

闭包函数:内部函数包含对外部作用域而非全局作用域名字的引用,该内部函数被称为闭包函数-------函数内部定义的函数称为内部函数

六 ,装饰器

1,装饰器的形成过程

语法糖、带参数的装饰器、hold的住所有函数、带返回值的装饰器

定义:装饰器就是一个闭包函数

功能:在不修改原函数及其调用方式的情况下对函数的功能进行扩展

2,装饰器的开放封闭原则

对扩展是开放的,对修改是封闭的

3、装饰器的主要功能和装饰器的固定结构

装饰器的主要功能:在不改变调用方式的基础上在函数前后加功能

装饰器的固定结构

def time(func):                             def inner(*args,**kwargs):             #函数执行之前要做的                           ret=func(*args,**kwargs)           #函数执行之后要做的                           return ret                      return inner                                                  

4,带参数的装饰器

def outer(flag):                                       def timer(func):                                       def inner(*args,**kwargs):                             if flag:                                               print(‘‘‘执行函数之前要做的‘‘‘)                         re = func(*args,**kwargs)                          if flag:                                               print(‘‘‘执行函数之后要做的‘‘‘)                         return re                                      return inner                                   return timer                                                                                      @outer(False)                                      def func():                                            print(111)                                                                                        func()                                             


5、多个装饰器装饰一个函数

def wrapper1(func):                             def inner():                                    print(‘wrapper1 ,before func‘)              func()                                      print(‘wrapper1 ,after func‘)           return inner                                                                        def wrapper2(func):                             def inner():                                    print(‘wrapper2 ,before func‘)              func()                                      print(‘wrapper2 ,after func‘)           return inner                                                                        @wrapper2                                   @wrapper1                                   def f():                                        print(‘in f‘)                                                                       f()                                         

python-- 函数

评论关闭