python学习
python debug 工具
pdb
(https://docs.python.org/2/library/pdb.html)
vs code 直接输出python
http://stackoverflow.com/questions/29987840/how-to-execute-python-code-from-within-visual-studio-code
python 默认就有 setattr 和 getattr方法
可以方便的对属性赋值 而不用写set 和 get 方法动态添加属性 和 方法
- 属性
obj.a = 1或setattr(obj, ‘a’, 1) 方法
class A(object):
passa = A(object)
(1) a.hello = types.MethodType(a, hello)
(2) 方法二 如下12345678class Student(object):passs = Student()def hello():print "hello word!!!"s.hello = hellos.hello()
- 属性
- @property 把方法变成属性
python 中闭包的实现
123456789101112def addx(x):return lambda y: x + yadd8 = addx(8)add9 = addx(9)print add8(100)print add9(100)闭包的作用加强模块化locals() 和 globals()
局部命名空间 和 全局命名空间python中namespace只是一个字典,它的键字就是变量名,字典的值就是那些变量的值。
locals 是只读的,globals 不是
例 4.10. locals 介绍
def foo(arg):
… x = 1
… print locals()
…
foo(7)
{‘arg’: 7, ‘x’: 1}
foo(‘bar’){‘arg’: ‘bar’, ‘x’: 1}
globals 介绍
#!/bin/bash
if name == “main“:
for k, v in globals().items():
print k, "=", v
✗ python 1.py
builtins =
name = main
file = 1.py
doc = None
package = None
<<<<<<< HEAD
- functools 模块
functools 模块中有三个主要的函数 partial(), update_wrapper() 和 wraps()。
参考
|
|
=======
python dict() 函数
可以很方便的 把list 转换为字典
比如:123456789101112131415161718192021222324252627282930list = [(key,value),(key1,value1)]dict = dict(list)> dict{key:value,key1:value1}+ 交互的输入密码import getpassgetpass.getpass()<<<<<<< HEAD+ dir()获取模块中的 获得模块的属性列表flask 中用它,获取配置信息=======+ python 没有switch的解决办法http://www.pydanny.com/why-doesnt-python-have-switch-case.html+ del 命令的使用有时候,我们import 一个模块的组件,并不想再后面继续引用可以如下;``` pythonimport thread_start_new_thread = thread.start_new_thread_allocate_lock = thread.allocate_lock_get_ident = thread.get_identThreadError = thread.errordel threadStringIO 和 BytesIO
在内存中操作字符串的读写- import json
参数 indent=4,使输出更加优雅
data1 = {‘b’:789,’c’:456,’a’:123}
d1 = json.dumps(data1,sort_keys=True,indent=4)
print d1
输出:
{
“a”: 123,
“b”: 789,
“c”: 456
}
- 在python中dict中使用 iteritems123456789101112#!/usr/bin/pythond={1:'one',2:'two',3:'three'}print 'd.items():'for k,v in d.items():if d[k] is v: print '\tthey are the same object'else: print '\tthey are different'print 'd.iteritems():'for k,v in d.iteritems():if d[k] is v: print '\tthey are the same object'else: print '\tthey are different'
输出:
虽然结果是一样的 但是 iteritems 迭代器,不是一次性返回数组,性能更高资源更省