这是我的第一本python学习课本的笔记, 其实head frist python 是第二本, 我的职业是一个创业的销售,学习python目的是为了dj的微信开发和网页后端的开发。还想做一个自动发帖机以及蜘蛛搜索数据记录。
静下来读书, 每年两小时的编程, 时间是节约出来的。
Learn python the hard way 目前读到了自动化测试。
笔记主题内容: 自动化测试。(书的第46-49课)
知识点: 1, 什么是python软件包?
一个第三方python共享包。
2,项目骨架是什么?
3,pip是什么?
4,mac 下如何建立项目骨架环境?
5,什么是自动化测试?
拓展知识点:
1: 如何查看python模块保存在本地电脑哪里?
ide中 , import sys ; sys.path
2,分号是干嘛用的?
多个命令在一行, 用分行隔开。
3,分享(发布)工具有哪些?
第三方: setuptools
官方:distutils
4, 函数中的*与** 干嘛的?
5,字典怎么用,怎么打印出字典不同健和值
movies = { "author": "lixiang",
"addres":'shanghai'
}
for x in movies:
print x
print movies[x]
6, 如何添加字典的值
move = {}
move[1] = 'wow'
print(move)
{1:'wow;} , 有一点特别注意, move 必须被定义过。
7, 如何增加列表的值
回想第一课笔记。 列表的增加,减少,删除都必须使用bif中的方法,而不是调用。move[1] = 'wow' ,这种是错误的。
move = []
move.append('jack')
move.pop() #删除最后的元素
move.extend(), 拓展一个集合
move.remove('jack')
move.insert(1,'jack') 在某个位置,插入元素
补充,insert的位置, 如果之前的位置是空值,只会按照实际顺序来添
笔记内容:
一、可爱的pypi.
还记得上一篇日记中,提到的printlist函数, 把这个嵌套的列表打印出来, 如果你一个人知道,可就不是python的特点了, python最大的功能就是分享,把你的代码分享出去。
python 专门为这个, 制作了分享工具, 如果我们叫的比较正式,叫发布工具。
而存放全世界所有共享python代码,就叫做pypi python软件包索引。
二,共享你的软件包
软件包的核心, 是你编写的程序代码, 但是如果你给了别人,就必须加上一些注释,这样人家才看的懂。
''' 这是一个printlist,模块,他包括printlist函数,作用时打印列表,可能包括(不包括)嵌套列表'''
def printlist(list_name):
''' 这个函数用一个参数,list_name, 可以任意列表,包括嵌套列表'''
for each_item in list_name:
if isinstance(each_item,list):
printlist(each_item)
else:
print(each_item)
把他保存成一个printlist.py 保存下来。
建立一个文件夹,printlist.
1, 将printlist放在文件夹里。
2,使用发布工具, 制作setup.py文件
一种setup代码, 简称setup-1
__author__ = 'lixiang'
try:
from setuptools import setup
except ImportError:
from distutils.core import setup
setup(
name = 'printlist',
version = '1.0.0',
py_moudle = ['printlist'],
author = 'lixiang',
author_mail = '3qfriend@gmail.com',
url = "http://www.1b98.com"
)
另一种setup代码,简称setup-2
__author__ = 'lixiang'
try:
from setuptools import setup
except ImportError:
from distutils.core import setup
config = {
name :'printlist',
version : '1.0.0',
py_moudle :['printlist'],
author :'lixiang',
author_mail : '3qfriend@gmail.com',
url : "http://www.1b98.com"
}
setup(**config)
这个地方查看一下, 两本书不同, 一本书是这么写的。, config = { 健:值} setup(**config) , 两种方式,到底哪个对呢? **config是撒意思。
首先当然是查看 import distutils ; distutils.setup
setup(**attrs)
一串英文, 看懂, 还好找到官方文档,https://docs.python.org/2/distutils/apiref.html
大致是看懂了, setup(**attrs)
说的是撒意思呢, 参数可以多选,没有限制,就是文档里面出现的参数,随便你填, 还有一个重要的一点, 就是顺序随便弄。
这样话, 函数setup中的参数, 调用函数的时候, setup(a,c,d,e,b) 就可以了,不需要安装一定参数的, 我们在例子中不就是setup-1了吗。
那你可能会问, 这种def 函数, 怎么表达, python考虑到了, 用一个星表示参数多少都可以接受, 两个星表示顺序可以乱, 用代码看看呗!
def yourhome (a,*b):
print a
print b
print len(b)
yourhome(12,'home','who?')
显示 12
('home','who?')
这里面我们用setup-2的思路:
def yourhome (a,*b):
print a
print b
print len(b)
config = ('home','who?')
yourhome(12,*config)
看到了吗, 参数的不同方式, 接着下面写一个**
def yourhome (a,**b):
print a
print b
print len(b)
yourhome (12, {'author':'lixiang','age':'12'})
TypeError: yourhome() takes exactly 1 argument (2 given)
出错了? 怎么回事?
def yourhome (a,**b):
print a
print b
print len(b)
yourhome (12, author='lixiang', age=12)
12
{'age': 12, 'author': 'lixiang'}
2
函数中的参数, 你怎么用字典呢??? 那可是参数哦, 如果你想只用一个参数表示,
config = { 'author':'lixiang',
'age':12
}
yourhome(12,**config)
这个地方, 突然想到字典,len(字典),是2, 还有字典有没有顺序呢?
因为测试是个数, 通过学习字典,你会发现, 根本不需要顺序啊。 弄懂来setup两种表达方式了吧。
这里还有一个想法,这样可以吗?
def yourhome (a,*b):
print a
print b
print len(b)
yourhome (12, author='lixiang', age=12)
推断,是错误的,
因为元组没有办法保存这个, 其实看到了上面都格式,就应该想到**
我们继续哦。