要做一个儿童搜索引擎的项目(www.kidsearch.cn),所以开始接触各种新的语言,初步学了PHP爬虫,觉得要做大点的项目用PHP确实不太方便,中文兼容性就是一个比较棘手的问题。python的爬虫确实很厉害,确实有必要学习。

学习网站:廖雪峰的python3教程http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000

同样,有点难记,可以用这个:www.selflink.cn/links/python

以下是学习笔记。因为语言基本都差不多,所以记的内容大多数是一些细小的知识点,可能有其他语言基础的看了会有一些用吧。

2016.8.7晚 输入输出和表达式

  print('hello','world')  print多个参数中间会用空格隔开,末尾会输出一个回车

  a = input()  读入一行字符串赋值给a变量

  python行末没有分号,if后面没有括号(但是条件后面有冒号),用缩进划分语句块(不是大括号)——与C语言不同的地方

  字符串用单引号和双引号括起来都可以,另外还有三引号(多行字符串)

  #开头的行代表注释

  转义字符与C语言差不多,但是可以在字符串前面加一个r表示不转义。如print(r'\n')会输出\n

  布尔型的值首字母大写 True False

  逻辑运算符除了异或别的都变成英文单词了  and or not ^ 分别是与、或、非、异或

  除法区分了除和整除,/代表正常除,//代表整除

  Python对中文的兼容性非常好,输入输出都可以直接用中文字符(这一点比PHP好太多了啊!)

    这一点得益于编码问题:详情可以参考:http://www.selflink.cn/links/pythonencode

2016.8.7晚 list和tuple

  list 有序表

    比如一个classmates = ['lqs','zy','lmj'] 的有序表

      两种索引方式,从前到后 0~len-1,从后往前-1~-len

      classmates.append(x) 在末尾添加x元素

      classmates.len()返回数组长度

      classmates.insert(i,x)在索引为i的位置前面插入x元素

      classmates.pop(i)删除索引为i的元素,无参默认删除末尾元素

      classmates.sort()排序

      classmates[i] = 'lll' 修改索引i的元素

    list里的元素类型可以不同

    list里也可以有list元素

    []代表一个空的list

  tuple 元组

    其他都与list类似,只是tuple一旦初始化就不能修改(指不能修改本身,有可能会间接修改,比如tuple里套了一个list)。用()括起来而不是[]

    当tuple只有一个元素时,在元素后面加一个逗号消除歧义。如(1,)

  dict 字典(映射)

    键值之间用冒号,多个映射之间用逗号,总的用大括号,索引用中括号。

    x in d 可以返回一个布尔型,判断是否存在键

    get方法可以避免键不存在而报错,不存在返回一个None,或者自己指定一个值返回

    pop方法,删除一个键,并返回它的值

    list不能做key

  set 集合

    s1 = set([3,1,2])

    s2 = set([2,3,4])

    s1 & s2 交集  s1 | s2 并集

    集合不可有重复元素

    add方法  remove方法  添加、删除元素

    

2016.8.8晚 学习函数

  Python3官方函数手册:https://docs.python.org/3/library/functions.html#abs

  def nop() :

    pass

  以上定义了一个空函数,pass语句也可以用在if while for 里面

  函数可以不写return,默认return None

  函数可以返回多个值,实际上是一个tuple

  函数的参数可以有默认值,但尽量用不可变对象。如[]替换成None

  可变参数可以在参数名前面加*,传入的时候可以直接传,也可以打包成list或tuple之后再传(打包好的变量名之前也要加*)

  关键字参数,参数名前面加**,传入的时候会打包成dict

  要限制关键字的名字用一个*参数分隔(本质上是在可变参数名后面),如:def person(name , age , * , city , job)

  参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。

  

2016.8.9晚 高级特性

  list tuple string 切片:[1:3]截取索引1到2之间的内容,导数切片,默认切片,跳跃切片

    for key in dict :

      print(key,dict[key])

    for i,value in enumerate([1,2,3,4]) :

      print(i,value)

    for (x,y) in [(1,1),(2,3),(4,4)] :

      print(x,y)

  生成式列表

    [x*x for x in range(1,10)]

  生成器

    g = (x*x for x in range(1,10))

    for n in g :

      print(n)

    def odd() :
        yield 1
        yield 2
        yield 3
    
    o = odd()
    while True:
        try:
            print(next(o))
        except StopIteration as e:
            print(e.value)
            break

Python3学习的更多相关文章

  1. Python3学习(3)-高级篇

    Python3学习(1)-基础篇 Python3学习(2)-中级篇 Python3学习(3)-高级篇 文件读写 源文件test.txt line1 line2 line3 读取文件内容 f = ope ...

  2. Python3学习(2)-中级篇

    Python3学习(1)-基础篇 Python3学习(2)-中级篇 Python3学习(3)-高级篇 切片:取数组.元组中的部分元素 L=['Jack','Mick','Leon','Jane','A ...

  3. Python3学习(1)-基础篇

    Python3学习(1)-基础篇 Python3学习(2)-中级篇 Python3学习(3)-高级篇 安装(MAC) 直接运行: brew install python3 输入:python3 --v ...

  4. Python3学习笔记(urllib模块的使用)转http://www.cnblogs.com/Lands-ljk/p/5447127.html

    Python3学习笔记(urllib模块的使用)   1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None,  ...

  5. Python3学习笔记 - 准备环境

    前言 最近乘着项目不忙想赶一波时髦学习一下Python3.由于正好学习了Docker,并深深迷上了Docker,所以必须趁热打铁的用它来创建我们的Python3的开发测试环境.Python3的中文教程 ...

  6. Python3学习之路~0 目录

    目录 Python3学习之路~2.1 列表.元组操作 Python3学习之路~2.2 简单的购物车程序 Python3学习之路~2.3 字符串操作 Python3学习之路~2.4 字典操作 Pytho ...

  7. python3学习笔记(7)_listComprehensions-列表生成式

    #python3 学习笔记17/07/11 # !/usr/bin/env python3 # -*- conding:utf-8 -*- #通过列表生成式可以生成格式各样的list,这种list 一 ...

  8. python3学习笔记(6)_iteration

    #python3 学习笔记17/07/10 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #类似 其他语言的for循环,但是比for抽象程度更高 # f ...

  9. python3学习笔记(5)_slice

    #python3 学习笔记17/07/10 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #切片slice 大大简化 对于指定索引的操作 fruits ...

  10. Python3 学习第一弹:基本数据类型

    本人学习主要从<python基础教程第二版>,<dive into python3>等书籍,及一些网上大牛的博客中学习特别是Python官方文档<Python Tutor ...

随机推荐

  1. ListView 点击某一项换背景图片

    1. layout_search_list_item.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/r ...

  2. angular js 实例参数学习

    <!DOCTYPE html> <html> <head> <meta name="description" content=" ...

  3. 【C#学习笔记】LinkedList容器使用

    using System; using System.Collections.Generic; namespace ConsoleApplication { class Program { stati ...

  4. Java Socket(1): 入门

    前言:在最近一个即将结束的项目中使用到了Socket编程,用于调用另一系统进行处理并返回数据.故把Socket的基础知识总结梳理一遍. 一.TCP/IP协议 既然是网络编程,涉及几个系统之间的交互,那 ...

  5. poj 1392 Ouroboros Snake

    题目描述:咬尾蛇是古埃及神话中一种虚构的蛇.它经常把尾巴放在自己的嘴巴里,不停地吞噬自己.环数类似于咬尾蛇,它是2^n位的二进制数,具有如下性质:它能“生成”0-2^n-1之间的所有数.生成方法是:给 ...

  6. 你所不知道的 URL

    0.说明 第一幕 产品:大叔有用户反映账户不能绑定公众号.大叔:啊咧咧?怎么可能,我看看?大叔:恩?这也没问题啊,魏虾米.大叔:还是没问题啊,挖叉类.大叔:T T,话说产品姐姐是不是Java提供接口的 ...

  7. ArcMap自定义脚本工具制作

    原文 ArcMap自定义脚本工具制作 在制图的前期,一般需要做一些数据的整理,如图层合并.裁剪等工作.虽然在ArcMap中也有提供对应的工具,但使用起来需要点技巧.如批量裁剪,虽然可以实现,但出来的结 ...

  8. Hadoop对文本文件的快速全局排序

    一.背景 Hadoop中实现了用于全局排序的InputSampler类和TotalOrderPartitioner类,调用示例是org.apache.hadoop.examples.Sort. 但是当 ...

  9. DataTable转List<Model>通用类【实体转换辅助类】

    /// <summary> /// DataTable转List<Model>通用类[实体转换辅助类] /// </summary> public class Mo ...

  10. 树形DP CCPC网络赛 HDU5834 Magic boy Bi Luo with his excited tree

    // 树形DP CCPC网络赛 HDU5834 Magic boy Bi Luo with his excited tree // 题意:n个点的树,每个节点有权值为正,只能用一次,每条边有负权,可以 ...