Python3学习
要做一个儿童搜索引擎的项目(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学习的更多相关文章
- Python3学习(3)-高级篇
Python3学习(1)-基础篇 Python3学习(2)-中级篇 Python3学习(3)-高级篇 文件读写 源文件test.txt line1 line2 line3 读取文件内容 f = ope ...
- Python3学习(2)-中级篇
Python3学习(1)-基础篇 Python3学习(2)-中级篇 Python3学习(3)-高级篇 切片:取数组.元组中的部分元素 L=['Jack','Mick','Leon','Jane','A ...
- Python3学习(1)-基础篇
Python3学习(1)-基础篇 Python3学习(2)-中级篇 Python3学习(3)-高级篇 安装(MAC) 直接运行: brew install python3 输入:python3 --v ...
- Python3学习笔记(urllib模块的使用)转http://www.cnblogs.com/Lands-ljk/p/5447127.html
Python3学习笔记(urllib模块的使用) 1.基本方法 urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, ...
- Python3学习笔记 - 准备环境
前言 最近乘着项目不忙想赶一波时髦学习一下Python3.由于正好学习了Docker,并深深迷上了Docker,所以必须趁热打铁的用它来创建我们的Python3的开发测试环境.Python3的中文教程 ...
- Python3学习之路~0 目录
目录 Python3学习之路~2.1 列表.元组操作 Python3学习之路~2.2 简单的购物车程序 Python3学习之路~2.3 字符串操作 Python3学习之路~2.4 字典操作 Pytho ...
- python3学习笔记(7)_listComprehensions-列表生成式
#python3 学习笔记17/07/11 # !/usr/bin/env python3 # -*- conding:utf-8 -*- #通过列表生成式可以生成格式各样的list,这种list 一 ...
- python3学习笔记(6)_iteration
#python3 学习笔记17/07/10 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #类似 其他语言的for循环,但是比for抽象程度更高 # f ...
- python3学习笔记(5)_slice
#python3 学习笔记17/07/10 # !/usr/bin/env python3 # -*- coding:utf-8 -*- #切片slice 大大简化 对于指定索引的操作 fruits ...
- Python3 学习第一弹:基本数据类型
本人学习主要从<python基础教程第二版>,<dive into python3>等书籍,及一些网上大牛的博客中学习特别是Python官方文档<Python Tutor ...
随机推荐
- 深入理解移动web开发之PPI,Pixel,DevicePixelRatio(转)
如果你是一个开始接触移动Web开发的前端工程师,那么你或许也遇到了和我曾经遇到的过问题:有太多新的概念需要掌握,太多相似的概念需要区分.没关系,我将用两篇文章的篇幅来解决这些问题.上篇文章关于解释和区 ...
- Java [Leetcode 111]Minimum Depth of Binary Tree
题目描述: Given a binary tree, find its minimum depth. The minimum depth is the number of nodes along th ...
- Live555中RTP包的打包与发送过程分析
这里主要分析一下,live555中关于RTP打包发送的部分.在处理完PLAY命令之后,就开始发送RTP数据包了(其实在发送PLAY命令的response包之前,就会发送一个RTP包,这里传输就已经开始 ...
- 反射小应用之DataTable和List<T>互操作
在程序中,往往会遇到一些小情况,就是数据库取出来的时候为了方便直接将数据通过存储在DataSet或DataTable中,这样做的一个后果是在日后的的对数据进行”细“操作时,就发现它可能没有List&l ...
- Table '.\mysql\proc' is marked as crashed and should be repaired 报错
Table '.\mysql\proc' is marked as crashed and should be repaired 报错 解决方法: 找到mysql的安装目录的bin/myisamchk ...
- information_schema中的三个关于锁的表
在5.5中,information_schema 库中增加了三个关于锁的表(MEMORY引擎):innodb_trx ## 当前运行的所有事务innodb_locks ## ...
- 【c++内存分布系列】虚基类表
虚基类表相对于虚函数表要稍微难理解些,故单独提出来. 虚函数表是在对象生成时插入一个虚函数指针,指向虚函数表,这个表中所列就是虚函数. 虚基类表原理与虚函数表类似,不过虚基类表的内容有所不同.表的第一 ...
- POJ 1042 Gone Fishing
题意:一个人要在n个湖中钓鱼,湖之间的路径是单向的,只能走1->2->3->...->n这一条线路,告诉你每个湖中一开始能钓到鱼的初始值,和每钓5分钟就减少的数量,以及湖之间的 ...
- 回调函数、Java接口回调 总结
谈到回调,我们得先从回调函数说起,什么叫回调函数呢? 回调函数是什么? 百度百科的解释:回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用 ...
- 通过gdb调试分析Linux内核的启动过程
作者:吴乐 山东师范大学 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.实验流程 1.打开环境 执 ...