python3 函数

函数的基本操作

# 定义一个函数
import time

def eat (name):
    print(name)

# return 的数据返回类型
# 1. 不写return,则会自动返回一个none
# 2. 如果是一个单独的结果,则会返回结果
# 3. 如果是多个数据,则会以元组的形式返回

# 函数的全部变量与局部变量的作用域
# 如果是单独的变量,局部变量不会影响全局变量的结果。例如
names = 'yeyu'
def name1(names):
    names = 'wen'
    print(names)

# 调用names函数,对比函数内里的names与重新调用的names
name1('xinxin')
print(names)

# 如果函数里的变量是列表,字典,集合这种大数据的变更,局部变量会影响到全局变量
_name2 = ['yeyu','wen']
def name2():
    _name2[1] = 'xiaotiao'

print(_name2)    # 对比执行前与执行后的数据结果
name2()
print(_name2)    # 结果是局部变量影响了全部变量

 # 函数之装饰器详解

# 装饰器的分解
# 1.函数即变量
# 2.高阶函数
#     a . 用一个函数的结果作为参数,传入另一个函数中。
#     b . return 必须包含函数名
# 3.嵌套函数

# 为test1与test2添加一个装饰器(计算时间的功能 )
import time

# 第一步:先把功能写出来

# def user_time():   # 必须还一个参数,因为装饰器功能,必须把装装饰的函数作为一个参数传入进来
#     print('我要开始计算被计算被装饰的函数体时间了')
#     start_time = time.time()    # 开始的时间戳
#     f()             # 把传入进来的参数,实际上是运行传入进来的函数体。这个我们就可以添加功能了,如果你想在函数体前添加功能,则在前面写。如果想在后面则会后面写。
#     time.sleep(3)               # 为是看出效果添加的功能
#     stop_time = time.time()
#     use_time = '结束时间减去开始时间,等于用了多少时间:%s' %(stop_time-start_time)
#     print(use_time)


# 第二步:把添加的功能写出来后,我们重新赋值给原来的调用的函数
# 如:test1调用,我们则相当于:   test1 = user_time(test1)  # 用添加功能后的user_time重新覆盖test1.这样新功能就添加好了。
# 这样虽然实现了装饰器的功能,但还算真正的装饰器。我们可以把返回结果作为参数,形成嵌套函数。
# def function(f):
#     user_time()   调用功能函数。由于功能函数里要调用被装饰的函数体做为传参数。所以两个函数必须写在一起,形成嵌套函数。
#     return user_time()

# 现在把第一步和第二步整理出来形成装饰器函数
def function(f):    # 外部函数作为第二部,f就是被装饰的函数体作为参数传入进来    # 

    # 内部函数作为第一步:
    def user_time():   # 必须还一个参数,因为装饰器功能,必须把装装饰的函数作为一个参数传入进来(通用参数:*args,**kwargs)
        print('我要开始计算被计算被装饰的函数体时间了')
        start_time = time.time()    # 开始的时间戳
        f()             # 把传入进来的参数,实际上是运行传入进来的函数体。这个我们就可以添加功能了,如果你想在函数体前添加功能,则在前面写。如果想在后面则会后面写。
        time.sleep(3)               # 为是看出效果添加的功能
        stop_time = time.time()
        use_time = '结束时间减去开始时间,等于用了多少时间:%s' %(stop_time-start_time)
        print(use_time)

    return user_time

----------------------------------------------------------------------------------
@function
def test1():
    print('in the test1')
test1()

函数之递归

函数之迭代器

函数之生成器

【end】

posted on 2019-12-06 16:03  yeyu1314  阅读(325)  评论(0编辑  收藏  举报