采取学习方法: 学习learn python the hard way 不断拓展,我写这个博客的时候, 已经在自动化测试这篇的路上了。
这一节的重点: 学会第三方库的查看。
看的是,learn python the hard way , 没错, 真是 the hard way ,一节补充了这么多知识。其实python就是不断学习第三方库,其中学会更多语法,学会更多一些知识,你学网络库,必须懂socket,你学网页,得懂html,css,javascript, 呵呵, 没有轻松的路。
知识点: 1, 怎么借助官方档
2,__name__ 和 __main__ 是什么意思?
写这个的原因, 自己经常在很多地方,弄错。 比如我安装了pyspider包, 我怎么去了解这个包的使用。
1: 包是怎么用的。
方法(1) -- 官方资料查找:
https://docs.python.org/ ,这个可以查看python官方对于python的说明。
比如官方库,就可以在这里找到, 如:socket库。
(2) ---第三方库官方查找
比如我之前安装的:http://docs.pyspider.org/en/latest/ ( 别人编写的, 当然去别人的官网看看)
好吧, 我们回到电脑中, 我们一起来看看 官方库的socket和 第三方库 pyspider。
import socket
help(socket)
import pyspider
help(pyspider)
这时候终端会进入less (一个linux命令, 按q退出)
socket:
NAME
socket
FILE
/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socke
t.py
MODULE DOCS
http://docs.python.org/library/socket
DESCRIPTION
This module provides socket operations and some related functions.
On Unix, it supports IP (Internet Protocol) and Unix domain sockets.
On other systems, it only supports IP. Functions specific for a
socket are available as methods of the socket object.
Functions:
socket() -- create a new socket object
socketpair() -- create a pair of new socket objects [*]
fromfd() -- create a socket object from an open file descriptor [*
以上是一部分, 看看人家写的多好, 文件保存在哪里? 文档说明在哪里, 这个模块干嘛的, 模块里面的函数是什么?
在看看国产的pyspider:
Help on package pyspider:
NAME
pyspider
FILE
/Library/Python/2.7/site-packages/pyspider/__init__.py
DESCRIPTION
# -*- encoding: utf-8 -*-
# vim: set et sw=4 ts=4 sts=4 ff=unix fenc=utf8:
# Author: Binux
# http://binux.me
# Created on 2014-11-17 19:17:12
PACKAGE CONTENTS
database (package)
fetcher (package)
libs (package)
processor (package)
result (package)
run
scheduler (package)
:
比较简单, 想做一个流行包,得学会像官方一样, 目前是看不懂pyspider 是干撒用的, 似乎这是他的专用包, 好了, 我们也不是光批评, 这个情况怎么办? 官方的不行, 就他的网站看看了,2: __name__ 和 __ main__
怎么用的?
这篇博客 有详细介绍, 我看完,大会感叹, 做事情有这么细致的, 还能说撒呢。
我的总结:
def squqre(x):
return x*x
文件保存在math.py
好吧作为一个细心的人,你应该有个测试吧,
def square(x):
return x* x
"矩形面积测试,计算一下,长10的面积“
print square(10)
好吧,你做完了这一个了, 有一天,你想发布了,那别人人家调用你这个, 比如我
import math
print math.square(12)
运行的时候, 会出现:
100
144
怎么回事, 运行了math.py的square(10),怎么办?
不急, 整理一下:
1、这两个文件我都保存在同一个目录下, import, 同级目录调用,math.py ,这个时候我们把math.py 就做一个模块,模块math.
2: 怎么办? 看代码
math.py修改代码,
def square(x):
return x*x
if __name__ == '__main__':
print square(10)
运行math.py , 没错,
好吧, 看看这个时候jisuan.py,
只有144了, 神奇吧
我们来总结一下:
直接调用的时候, 会运行测试, 以为他们相等, __name__ 是 模块本身, __main__ (执行本身的模块),直接运行,执行本身的模块== 模块本身, 调用的时候,模块不是本身(jisuan) 不等于调用模块的名字。