Python 强化训练:第八篇

作者: 谢小路 | 来源:发表于2016-11-10 20:46 被阅读482次

强化训练:第八篇

主题

  1. requirements
  2. virtualenv 虚拟环境
  3. 回调函数
  4. 函数元数据:装饰器保存元数据

1.

想要解决的问题是:

  1. 如何在创建完整的项目中把所项目所需要的库整理出来?

  2. 对于某个项目需要的库又如何改进行一次性库的安装?

pip freeze > requirements.txt # 以.txt文件将项目需要的库进行整理
pip install -r requirements.txt  # 安装项目需要的库

2.

想要解决的问题是:如何搭建项目需要的独立虚拟环境?

  1. virtualenv
  2. 特性:
    1. 独立于已经安装的python版本进行虚拟环境的配置和库的安装
    2. 创建指定版本的python虚拟环境
  3. 需要安装virtualenv

virtualenv filename  # 创建虚拟环境文件夹
cd filename  
Script\activate    # 激活虚拟环境

deactivate     

3.

函数也是对象.
可以作为函数的参数进行传递.

回调函数一般用于处理等待后台任务完成后的回调。

def apply_async(func, args, *, callback):    # *后是关键字参数
    result = func(*args)
    callback(result)


def print_result(result):
    print("result:  {0}".format(result))


def add(x, y):
    return x + y


apply_async(add, (2, 3), callback=print_result)


def double(x):
    return 2*x


def quaderuple(x):
    return 4*x


def getOddnumber(k, *, callback, lastback):
    return 1 + callback(k) + lastback(k)


def main():
    k = 1
    i = getOddnumber(k, callback=double, lastback=quaderuple)
    print(i)
    j = getOddnumber(k, callback=quaderuple, lastback=double)
    print(j)
    l = getOddnumber(k, callback=lambda x: x*8, lastback=double)
    print(l)

main()


4.

函数元信息指的是函数对象拥有的信息值。

  1. name
  2. module
  3. 属性值
  4. 文档属性

装饰器一般会被装饰函数的元信息重载为装饰函数的元信息。
如何将函数的元信息进行不更改操作?

def func(a=1, b="name",c=[]):
    """func name"""
    return (a, b)

print(func.__name__)
print(func.__doc__)
print(func.__module__)
print(func.__defaults__)
func.__defaults__[2].append(22)
print(func.__defaults__)
print(func.__dict__)


def func_one(a: int, b: int) -> int:
    """func_one name"""
    c = 2
    return lambda k: pow(a+b+c, k)
    pass

print(func_one.__name__)
print(func_one.__module__)
print(func_one.__doc__)
print(func_one.__defaults__)
print(func_one.__dict__)
print(func_one.__closure__)
print(func_one.__annotations__)


from functools import update_wrapper, wraps, WRAPPER_ASSIGNMENTS, WRAPPER_UPDATES

def func_name(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
        """warpper doc"""
        print("wrapper function")
        func(*args, **kwargs)
    #update_wrapper(wrapper, func)
    return wrapper

@func_name
def example():
    """example doc"""
    print("example function")

相关文章

  • Python 强化训练:第八篇

    强化训练:第八篇 主题 requirements virtualenv 虚拟环境 回调函数 函数元数据:装饰器保存...

  • 将Python用于NLP:Pattern 库简介

    这是我有关使用Python进行自然语言处理系列文章中的第八篇。在上一篇文章中,我解释了如何使用Python的Tex...

  • Python 强化训练:第一篇

    强化训练: 第一篇 目标 0. 校招算是结束了吧!简单回顾几句: 校招python岗位极少,多是初创型公司对pyt...

  • Day09 - 进程、线程、协程篇

    Day09的课程要点记录详细教程地址:Day9 - 进程、线程、协程篇Python之路【第八篇】:堡垒机实例以及数...

  • Python 强化训练:第十一篇

    主题 正常情况下,程序的运行按顺序执行,但是涉及某些操作,等待结果完成却是非常耗时的操作,比如爬虫进行IO操作等,...

  • Python 强化训练:第六篇

    强化训练:第六篇 1. 深浅拷贝:是否是同一个对象,使用id判断是否指向同一个对象, 深浅拷贝,引用区分可变对象和...

  • Python 强化训练:第五篇

    强化训练:第五篇 主题:函数 基本定义方法 任意数量参数 只接受关键字参数 显示数据类型 默认参数 匿名函数 N个...

  • Python 强化训练:第四篇

    强化训练:第四篇 问题来源 面向对象的语言的重要特性是存在类的概念 内容 新式类和旧式类 定义类的属性和“访问权限...

  • Python 强化训练:第三篇

    强化训练:第三篇 问题来源 pythoner面试经常会问到迭代器和生成器的区别 内容 可迭代对象 迭代器:正向迭代...

  • Python 强化训练:第二篇

    强化训练:第二篇 摘要:心好累. 问题来源 爬虫中会经常会遇到字符串的处理 主要内容 拆分字符串 字符串开头结尾 ...

网友评论

  • 4d07c27b729e:吐血了,你没放执行结果。关键是倒数第二个。dict不记得是啥了
    4d07c27b729e:@谢小路 也不是,主要是车上没办法做到。
    谢小路:@翟迪_xiao 下回的都带执行结果
    谢小路:@翟迪_xiao 可以copy代码试下呗。

本文标题:Python 强化训练:第八篇

本文链接:https://www.haomeiwen.com/subject/qkbxpttx.html