以下为《python进阶学习笔记》的无排版文字预览,完整格式请下载
下载前请仔细阅读文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。
1. *args的用法
*args和**kwargs主要?于函数定义。你可以将不定数量的参数传递给?个函数。这?的不定的意思是:预先并不知道,函数使?者会传递多少个参数给你,所以在这个场景下使?这两个关键字。*args是?来发送?个?键值对的可变数量的参数列表给?个函数.
**kwargs 允许你将不定长度的键值对,作为参数传递给?个函数。如果你想要在?个函数?处理带名字的参数, 你应该使?**kwargs。
我们将看到怎样使?*args和**kwargs 来某某??个函数。
那么如果你想在函数?同时使?所有这三种参数,顺序是这样的:some_func(fargs,*args,**kwargs)
最常见的?例是在写函数装饰器的时候(会在另?章?讨论)。此外它也可以?来做猴?补丁(monkey patching)。 猴?补丁的意思是在程序运?时(runtime)修改某些代码。打个??,你有?个类,??有个叫get_info的函数会调??个API并返回相应的数据。如果我们想测试它,可以把API调?替换成?些测试数据。例如:
import someclassdef get_info(self, *args): return "Test data"someclass.get_info = get_info
调试(Debugging):
从命令行运行:
Python -m pdb my_script.py
这会触发debugger在脚本第??指令处停?执?。这在脚本很短时会很有帮助。你可以通过(Pdb)模式接着查看变量信息,并且逐?调试。
从脚本内部运?:
同时, 你也可以在脚本内部设置断点, 这样就可以在某些特定点查看变量信息和各种执?时信息了。 这?将使?pdb.set_trace()?法来实现。
import pdbdef make_bread(): pdb.set_trace() return "I don't have time"print(make_bread())
运?时马上进?debugger模式。debugger模式下的?些命令如下:
命令列表:
c: 继续执?
w: 显?当前正在执?的代码?的上下?信息
a: 打印当前函数的参数列表
s: 执?当前代码?, 并停在第?个能停的地?(相当于单某某?)
n: 继续执?到当前函数的下??, 或者当前?直接返回(单步跳过)
单步跳过(next)和单某某?(step)的区别在于,单某某?会进?当前?调?的函数内部并停在??,?单步跳过会(?乎)全速执?完当前?调?的函数,并停在当前函数的下??。
生成器(Generators):
可迭代对象(Iterable):Python中任意的对象,只要它定义了可以返回?个迭代器的__iter__?法,或者定义了可以?持下标索引的__getitem__?法(这些双下划线?法会在其他章节中全?解释),那么它就是?个可迭代对象。简单说,可迭代对象就是能提供迭代器的任意对象。
迭代器(Iterator):任意对象,只要定义了next(Python2)或者__next__?法,它就是?个迭代器。就这么简单。现在我们来理解迭代(iteration)
迭代(Iteration):?简单的话讲,它就是从某个地?(?如?个列表)取出?个元素的过程。当我们使??个循环来遍历某个东西时,这个过程本?就叫迭代。
?成器也是?种迭代器,但是你只能对其迭代?次。这是因为它们并没有把所有的值存在内存中,?是在运?时?成某某。你通过遍历来使?它们, 内容过长,仅展示头部和尾部部分文字预览,全文请查看图片预览。 环境(virtualenv)。
在创建virtualenv时,你必须做出决定:这个virtualenv是使?系统全局的模块呢?还是只使?这个virtualenv内的模块。默认情况下,virtualenv不会使?系统全局模块。
如果你想让你的virtualenv使?系统全局模块,请使?--system-site-packages参数创建你的virtualenv,例如:
virtualenv --system-site-packages mycoolproject
使?以下命令可以退出这个virtualenv:
$ deactivate
运?之后将恢复使?你系统全局的Python模块
[文章尾部最后300字内容到此结束,中间部分内容请查看底下的图片预览]请点击下方选择您需要的文档下载。
以上为《python进阶学习笔记》的无排版文字预览,完整格式请下载
下载前请仔细阅读上面文字预览以及下方图片预览。图片预览是什么样的,下载的文档就是什么样的。