文章目录
python基本语法
编码
- 默认情况下,python3源文件以UTF-8编码,所有字符串都是unicode字符串,同时可以指定源文件的不同编码
# -*- coding:UTF-8 -*-
# coding=utf-8
变量(标识符)命名
- 第一个字符必须是字母表中的字母或下划线-(不能以数字开头)
- 标识符中的其他部分由字母、数字和下划线组成
- 标识符对大小写敏感
行和缩进
学习python与其他语言最大的区别就是,python的代码块不用大括号{}控制类,函数以及其他逻辑判断,而是用最具特色的缩进来写模块,也可以用分号
if Ture:
print "True"
else:
print "False"
多行语句
python语句中一般以新行作为语句的结束符。但是可以用\将一行的语句分为多行显示
total=item_one + \
item_two + \
item_three#将单行语句写为多行
输入输出
输入 raw_input(接收的内容转化为字符串) or input(原始数据类型)
输出 print (2.x版本不用加括号,3.x版本print作为函数身份存在必须加括号)
字符串格式化
如果学过c语言,都知道scanf("%d%d%d",&a,&b,&c);
这种用法,那在python里也有类似%d这种格式化存在
现在有如下代码:
#!/usr/bin/python
#上面一句话就是指python解析器的路径
print "My name is %s and weight is %d kg!" % ('Zara',21)//
符号 | 描述 |
---|---|
%c | 格式化字符串及其ascii码 |
%s | 格式化字符串 |
%d | 格式化整数 |
%u | 格式化无符号整型 |
%o | 格式化无符号八进制 |
%x | 格式化无符号十六进制 |
%f | 格式化浮点数,可指定小数后精度 |
%e/%E | 科学计数法格式化浮点数 |
%g | %f + %e |
%p | 十六进制格式化变量地址 |
数据结构与运算符
python主力数据结构是列表和字典。列表按顺序存储数据,字典就像小型数据库,使用键高效地存储和检索数据
列表
- 一个列表要用中括号[ ]把数据框起来
list = ['小米',12,4000.0]
从列表中获取单个元素:list[0],list[1],list[3]。类比索引数组 - 从列表中获取多个元素:list[:]从头取到尾,list[2:]从第3个元素取到末尾,list[2:4]取3,4位,list[:2]取1,2位,注意向左取为开区间,向右取为闭区间。这种操作叫做切片
增加、删除元素
- append()函数增加元素。如:list.append();
student.append('美羊羊')
,注意每次只能增加一个元素 - del语句删除元素。如:
del student[1]
可以一次删除多个元素,和切片相似,左开右闭
字典
- 字典是一种可变容器模型,可存储任意类型对象
- 字典的键值(key=>value)用:分割,每个队之间用逗号分割
dict={key1:value1,key2:value2}
- 字典的键必须唯一,键不可变
类比关联数组
增加、删除元素
- 赋值语句增加元素。如
字典名[键] = 值
- del语句删除元素。
del 字典名[键]
元组
- 元组是一种不可变序列,即创建后不能再做修改
tuple = (元素1,元素2,···) #定义元组
tuple = () #定义空元组
- 元组也是切片的形式访问
集合
集合是无序可变序列,使用一对大括号{}作为界定符,元素之间使用逗号分隔,同一个集合内每个元素都是唯一的。
- set函数创建集合。
s1 = set("abcde")
- add或update添加集合元素。
s1.add(x)
,s1.update(x)
- 删除元素:
s.remove(x) -将元素x从集合s中移除,元素不存在会发生错误
s.discard(x) -移除元素,不会报错
s.pop() -学过数据结构,这个函数是出栈,在这里是随机删除集合中的元素
运算
“+”,"-","*","/"等就不多说了
"%“取模,”**“求幂,”//"取整
<>检查是否相等,就等于!=
python允许同时为多个变量赋值
条件控制与循环
条件控制
if else,只是python的if条件不加括号,因为使用缩进的原因,if也不用用花括号{}来包括要执行的语句
- python的多向判断使用elif
if xxx:
print(xxx)
elif xxx:
print(xxx)
else:
print(xxx)
循环
for循环:
for i in [1,2,3,4,5]:#用列表的形式做区间
print(i)
- range()函数计数,默认从0开始,range(start,stop[,step])可以不含条数,range也可包含列表等数据类型,左闭右开
- continue,break,while与其他语句作用一致
python进阶
函数
函数定义
def <函数名> (<参数列表>):
xxx
return x
声明类,声明对象和C++类似
文件操作
和php没什么区别
- open()打开文件,返回一个file文件
语法:fileobj = open(filename[,mode[,buffering]])
fileobj.flush()强制把buffer中的缓存写入文件 - 使用file对象的读/写方法对文件进行读/写操作。
方法 说明 read() 读取指定字节或者读取完成 readline() 读取一行 readlines() 读取多行,返回每行组成列表 write(str) 写入字符串,返回写入字节数 writelines(sequence) 写入多行 - 使用file对象的close方法关闭文件。关闭文件是取消程序和文件中连接的过程,把缓冲区的所有内容将写入磁盘
①with语句自动关闭文件。
with open(1.txt) as hello:
s=hello.read()
print(s)#with语句可以打开文件并赋值给对象。文件在语句结束后自动关闭
正则表达式
python通过re模块提供对正则表达式的支持
使用re的步骤:
- 1.先将正则表达式的字符串形式编译为pattern实例
- 2.用pattern实例处理文本获得匹配结果(一个match实例)
- 3.使用match实例获得信息
match方法
从字符串的起始位置匹配一个模式,如果不是从起始位置匹配成功,match返回none
- 使用方法:
re.match(pattern,string[,flags=0])
参数 | 描述 |
---|---|
pattern | 匹配的正则表达式 |
string | 要匹配的字符串 |
flags | 标志位,用于控制正则表达式的匹配方式 |
import re
m = re.match(r'hello','hello world!')
print (m.group())
search方法
re.search扫描整个字符串并返回第一个成功的匹配
- 语法格式:
re.search(pattern[,flags])
compile函数
compile函数用于编译正则表达式,供match(),search(),findall()等函数使用
- 语法格式:
re.compile(pattern[,flags])
pattern = re.compile('hello')#实例化正则
pattern.match('helloworld')
批量匹配compile更实用
findall函数
匹配所有符合正则表达式的部分,返回一个数组(列表)
re.findall(pattern,string)
由于是返回列表,所以findall在下面要讲的爬虫里面非常实用
正则表达式的模式与php的preg_match的规则相当
python模块
每个以.py结尾的python文件都是一个模块。在模块中定义的全局变量、函数、类都可以导入使用
- 模块导入:①
import module
②from module import *
- 调用:
module.func()
- 安装模块:
pip install module
模块名不能和内置模块重名,模块内有同名函数会进行覆盖