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()
<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()
相关文章推荐
- 我的vim 配置(python)
- 用 Python 和 Pygame 写游戏 - 从入门到精通
- 使用Visual Studio 2015开发Python Django
- 如何利用python生成随机验证码?
- Python之面向对象
- 理解Python中的With...as...语法
- python基础知识
- Python中父类和子类间类属性(非实例属性)的设置获取的传递
- 利用python yielding创建协程将异步编程同步化
- python Decrator 装饰器 初探
- python之路 面向对象基础 XML
- Python 小练习 求list内中间数
- python模拟开发WebQQ(三)处理CSRF
- 机器学习实战(二)--决策树
- py2exe找不到Python的解决方法
- django1.9.6 使用 DjangoUeditor (python3.5)
- python模拟开发WebQQ(二)
- 教你成为全栈工程师
- 【Python自动化运维之路Day7】
- Python学习第〇篇-主要概念及示例