Python函数

1. 函数和过程的区别就是函数有返回值,过程没有返回值。

2. 函数如果没有返回值,则默认返回None.

3. 函数返回多个值,则系统以元组的形式进行封装后返回一个元组

4. 函数遇见return就结束函数。

 

函数参数

1. 位置参数

     特点:1.1 形参和实参位置必须对应; 1.2 形参和实参的数量必须相等。

2.关键字参数

     特点:2.1 形参和实参位置可以不用对应; 2.2 形参和实参的数量必须相等。

3. 位置参数&关键字参数混搭

     特点:3.1 位置参数必须在关键字参数左边

4. 默认参数

    特点:4.1 默认参数可以不用传值,如传值则覆盖默认值

def testing(name,age,job):
    return name,age,job

testing('jack',23,'enginer') # 位置参数
testing(name='jack',age=23,job='enginer') # 关键字参数
testing('jack',age=23,job='enginer') # 位置参数和关键字参数混搭

def demo(id=1): # 默认参数
    print(id)
demo()
demo(23)

 5. 参数组

   *args 列表; **kwargs字典

def testing(*args):
    print(args)

testing(1,2,3)   # (1, 2, 3)
testing([1,2,3]) #([1, 2, 3],)
testing(*[1,2,3])# (1, 2, 3)
# 参数组为*args的, 如果参数传入的是一个列表并且想要这个列表作为一个列表传入,则需要在这个列表参数前面加 *号

def demo(**kwargs):
    print(kwargs)

demo(x=1,y=2)
demo(**{'name':'jack'})

 

匿名函数

fun = lambda x:x[0]
res=fun(['jack','rose'])
print(res)
"""
   1.fun为匿名函数内存地址
   2.x为匿名函数的形参
   3.匿名函数默认有返回值
"""

 

 匿名函数不应有复杂的逻辑。

 

高阶函数

 满足高阶函数的条件,函数的参数是一个函数名或返回值是一个函数名。 函数即变量。

 

闭包函数

 

 

 

函数装饰器

函数装饰器等于 高阶函数+函数嵌套+函数闭包

1. 基本实现

import  time

def method():
    time.sleep(3)

def timmer(func):
    def wrapper():
        start_time=time.time()
        func()
        stop_time=time.time()
        print(stop_time-start_time)
    return wrapper

# 函数装饰器的基本实现
method=timmer(method)
method()

2. 使用@语法实现

import  time

def timmer(func):
    def wrapper():
        start_time=time.time()
        func()
        stop_time=time.time()
        print(stop_time-start_time)
    return wrapper


"""
  1. 先执行@timmer, 并将method函数作为参数传入导 timmer函数里面作为参数
  2. 执行timmer函数并返回wrapper函数
  3. 执行 wrapper函数
"""
@timmer
def method():
    time.sleep(3)
    
method()

 3. 带有返回值的函数装饰器

import  time

def timmer(func):
    def wrapper():
        start_time=time.time()
        res=func()
        stop_time=time.time()
        print(stop_time-start_time)
        return res
    return wrapper

@timmer
def method():
    time.sleep(3)
    return 'OVER'

res=method()
print(res)

 4. 带有参数的函数装饰器

import time

def timmer(func):
    def wrapper(*args):
        start_time=time.time()
        result = func(*args)
        stop_time=time.time()
        print(stop_time-start_time)
        return  result

    return  wrapper

@timmer
def method(name,age):
    print(name,age)
    time.sleep(3)
    return 123

res=method('JACK',23)
print(res)

 

 

 

 

 

 

   

posted @ 2020-09-08 22:38  leungqingyun  阅读(86)  评论(0)    收藏  举报