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

learn python the hard way 读书笔记(1)

2015-05-02 21:39 477 查看
   这是我的第一本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)
推断,是错误的,

     因为元组没有办法保存这个,  其实看到了上面都格式,就应该想到** 

    我们继续哦。

 

   

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: