POST一个多部分编码(Multipart-Encoded)的文件
return self 返回一个类的实例
Python self用法详解
Python中return self的用法
去掉首尾指定字符,默认为空格
使用@property,@score.setter对属性设置进行限制,可以简单的调用进行可控的属性操作,如 s.score = 60, s.score;
如果不用@property,是直接调用set方法,如 s.set_score(60), s.get_score()
返回一个新字节数组,数组里的元素是可变的,并且每个元素的值范围: 0 <= x < 256。
Python学习笔记015——序列(字节数组 bytearray)
返回脚本的路径,
os.path.dirname(os.path.abspath(__file__)), os.path.abspath(__file__)返回的是.py文件的绝对路径
os.path.realpath(__file__)获取当前文件的绝对路径,__file__指当前文件。
python中的os.path.dirname(__file__)的使用
"{1} {0} {1}".format("hello", "world") # 设置指定位置
'world hello world'
callable() 函数用于检查一个对象是否是可调用的。如果返回 True,object 仍然可能调用失败;但如果返回 False,调用对象 object 绝对不会成功。
对于函数、方法、lambda 函式、 类以及实现了 __call__ 方法的类实例, 它都返回 True。
不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。如果参数包含方法__dir__(),该方法将被调用。如果参数不包含__dir__(),该方法将最大限度地收集参数信息。
hasattr(object, name): 判断object对象中是否存在name属性
getattr(object, name[, default]):获取object对象的属性的值。
setattr(object, name, value):给object对象的name属性赋值value
python中的元类Metaclass
python中的cls到底指的是什么,与self有什么区别?
class A(object):
a = 'a'
@staticmethod
def foo1(name):
print 'hello', name
print A.a # 正常
print A.foo2('mamq') # 报错: unbound method foo2() must be called with A instance as first argument (got str instance instead)
def foo2(self, name):
print 'hello', name
@classmethod
def foo3(cls, name):
print 'hello', name
print A.a
print cls().foo2(name)
作者:秦风
链接:https://www.zhihu.com/question/49660420/answer/335991541
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
*args
和**kwargs
。 只有变量前面的 *
(星号)才是必须的$ python -m pdb my_script.py
利用pdb进行debug,命令行和脚本内都能运行__iter__
方法,或者定义了可以支持下标索引的__getitem__
方法(这些双下划线方法会在其他章节中全面解释),那么它就是一个可迭代对象。可迭代对象是提供迭代器的任意对象next
(Python2) 或者__next__
方法,它就是一个迭代器。my_string = "Yasoob"
my_iter = iter(my_string)
next(my_iter) # next()获取序列的下一个元素
# Output: 'Y'
str
对象是一个可迭代对象,而不是一个迭代器。这意味着它支持迭代,但我们不能直接对其进行迭代操作。内置函数,iter
。它将根据一个可迭代对象返回一个迭代器对象。
Map
会将一个函数映射到一个输入列表的所有元素上,一般配合lambdas函数使用,不但可以用于一个列表的处理,还可以用于包含函数的列表。list(map(function_to_apply, list_of_inputs))filter
过滤列表中的元素,并且返回一个由所有符合要求的元素所构成的列表,符合要求
即函数映射到该元素时返回值为True,类似于for循环,但是是内置函数,比for循环更快。 list(filter(lambda函数, list))装饰器:
一切皆对象,函数也是,函数也可以赋给其他变量,函数后加上括号就是在调用函数,没有括号时就可以被到处传递,赋给变量;
可以在函数中定义函数,也就是创建嵌套的函数。定义在函数里面的函数不能在外部访问,就像函数内的变量无法在函数外访问一样;
可以在函数中返回函数,不一定非要在函数中进行执行,所以可以返回某个函数,将它赋给某个变量,需要使用时加上括号就能调用函数了,括号就是一个执行函数的写法,所以可以类似于 hi()() 这样去调用返回的函数;
可以将函数作为参数传给另一个函数使用
@符号只是一种简写方式;function.__name__可以得到function的函数名;functools.wraps中wrap(fun)可以让被装饰的函数保持本真,不迷失自己的姓名,不然就会被重写了函数的名字和注释文档(docstring)
@wraps接受一个函数来进行装饰,并加入了复制函数名称、注释文档、参数列表等等的功能。这可以让我们在装饰器里面访问在装饰之前的函数的属性。
常用于授权, 日志
在函数中嵌入装饰器,装饰器类
__slots__
来告诉Python不要使用字典,而且只给一个固定集合的属性分配空间。class MyClass(object):
__slots__ = ['name', 'identifier']
def __init__(self, name, identifier):
self.name = name
self.identifier = identifier
self.set_up()
# ...
Virtualenv
是一个能够帮我们创建一个独立(隔离)的Python环境的工具
兼容Python2和Python3:
__future__
模块。它可以帮你在Python2中导入Python3的功能。模块重命名,as
关键字的作用。它将导入的模块映射到urllib.request
,所以我们通过urllib_request
这个别名就可以使用urllib2
中的所有类和方法了。 import urllib2 as urllib_request # for Python 2pip install pathlib
详细见Porting Python 2 Code to Python 3