python-- 函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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-- 函数的主要内容,如果未能解决你的问题,请参考以下文章

python使用上下文对代码片段进行计时,非装饰器

python 元组有用的函数,方法和片段。

Python代码阅读(第26篇):将列表映射成字典

VSCode自定义代码片段——声明函数

Python学习 :函数

VSCode自定义代码片段8——声明函数