您的位置:首页 > 编程语言 > Python开发

Python tips

2016-06-25 00:00 260 查看
1. Python的模块名与类名是在两个不同的名字空间中,初学者很容易将其弄混淆。比如你在交互界面输入import HTMLParser,此时你其实并没有把类HTMLParser引入到当前名字空间中。type(HTMLParser)的结果是<type 'module'>,而type(HTMLParser.HTMLParser)的结果才是
<type 'classobj'>。所以如果你想引入HTMLParser这个类,一定要写from HTMLParser import HTMLParser。否则当你在使用HTMLParser这个类时,就会提示 TypeError: Error when calling the metaclass bases
module.__init__() takes at most 2 arguments (3 given)

2. 在 Python 中也可以像 gcc/gdb 那样调试程序,只要在运行 Python 程序时引入 pdb 模块

python -m pdb d.py

3. 如果其基类也具有__init__(), 必须显式地在__init__()调用它, 以保证能够适当地初始化它的基类部分;例如: "BaseClass.__init__(self, [args...])"作为构造器的特殊情况, 它没有值被返回, 如果返回某个值, 会在运行时抛出异常TypeError.

4. 子类定义了__init__方法时若未显示调用基类__init__方法,python不会帮你调用,解释运行都OK

5. 子类未定义__init__方法时,python会自动帮你调用首个基类的__init__方法,注意是首个。即:子类继承自多个基类时,只有第一个基类的__init__方法会被调用到

6. 基类未定义__init__方法时,若此时子类显示调用基类__init__方法时,python向上超找基类的基类的__init__方法并调用

7. 将父目录加入import路径 import sys sys.path.append('..')

8. 遍历字典for k,v in d: ValueError: too many values to unpack错误用如下语句代替

for k, v in last.iteritems():

for k, v in last.items():

9. python 导入循环问题
解决方法:可以将导入模块的语句放在局部(函数),即使用时导入,而不是在文件开始导入

10. Null与None是Python的特殊类型,Null对象或者是None Type,它只有一个值None.None和任何其他的数据类型比较永远返回False。None有自己的数据类型NoneType。可以将None复制给任何变量

11. 字符串比较用cmp(),不是==

sStr1 = 'strchr'
sStr2 = 'strch'
cmp(sStr1,sStr2)

12. python中有很多字符串连接方式,总结一下:
最原始的字符串连接方式:str1 + str2
python 新字符串连接语法:str1, str2
奇怪的字符串方式:str1 str2
% 连接字符串:‘name:%s; sex: ' % ('tom', 'male')
字符串列表连接:str.join(some_list)

13. python中没有++操作符,通常用+=

14. time.sleep(数字)其中“数字”是以秒为单位,如果想定时毫秒,可以使用小数,0.1秒则代表休眠100毫秒。

15. 如何给Timer所调用函数传递参数

import threading

def hello(s):
print s

t = threading.Timer(10.0, hello, [h])
t.start()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: