一.环境搭建
二.基础语法
1.Python标识符
- 由字母,数字,下滑线组成
- 不能以数字开头
- 区分大小写
- 以下划线开头的标识符不能直接访问类属性,需要通过类提供的接口进行访问,不能用
from xxx import *
导入 - 以双下划线开头的标识符代表类的私有成员
- 以双下划线开头和结尾的标识符代表特殊方法专用标识
2.行和缩进
Python的代码块不使用{}
来控制类,函数以及逻辑判断,而用缩进来写模块,缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量
if True:
print ("true")
else:
print("false")
3.多行语句
一般以新行作为语句的结束符
但可以用斜杠将一行的语句分为多行显示
total = item_one + \
item_two + \
item_three
语句中含[]{}()
就不需要时需要多行连接符
days = ['monday','tuesday',
'thursday']
4.注释
# 单行注释
'''
多行注释
'''
""""
多行注释
""""
5.同一行显示多条语句
import sys; x = 'runoob'; sys.stdout.write(x+'\n')
6.print输出
print默认输出是换行的,如果需要实现不换行需要在变量末尾加上逗号
x = "a"; y = "b"
#换行输出
print x
print y
#不换行输出
print x,
print y,
三.变量类型
1.变量赋值
不需要类型声明
#赋值整型变量
counter = 100
#浮点型
miles = 1000.0
# 字符串
name = "John"
2.标准数据类型
- Numbers(数字)
- String(字符串)
- List(列表)
- Tuple(元组)
- Dictionary(字典)
3.数字
不可改变的数据类型
var1 = 1
var2 = 10
可以删除一些对象的引用
del var1[,var2....]
可以删除一些当个对象或多个对象的引用
del var
del var1,var2
四种数字类型
- int(有符号整型)
- long(长整型,也可以代表八进制和十六进制)
- float(浮点型)
- complex(复数)
4.字符串
字符串由数字,字母,下划线组成的一串字符
字符串列表有2种取值顺序:
- 从左到右索引默认0开始的
- 从右到左索引默认-1开始的
截取字符串[头下标:尾下标]
,但不包含尾下表的字符
s = 'abcdef'
s[1:5] #bcde
s[1:] #bcdef
s*2 #abcdef
s+'TEST' #abcdefTEST
5.列表
列表中值的切割[头下标:尾下标]
取值顺序与字符串相同
t = ['a','b','c','d','e','f']
d = ['a']
t[1:5] #['b', 'c', 'd', 'e']
t[1:] #['b', 'c', 'd', 'e']
t*2 #['a', 'b', 'c', 'd', 'e', 'a', 'b', 'c', 'd', 'e']
t+d #['a', 'b', 'c', 'd', 'e', 'a']
6.元组
类似于List列表
用()
标识,元组不能二次赋值,相当于只读列表
a = (1, 2, 3, 'a', 5)
b = (7, '8')
a[1:2] #(2,)
a[1:] #(2, 3, 'a', 5)
a * 2 #(1, 2, 3, 'a', 5, 1, 2, 3, 'a', 5)
a+b # (1, 2, 3, 'a', 5, 7, '8')
7.字典
列表是有序的对象集合
字典是无序的对象集合
字典由索引key
和它对应的值value
组成
dict = {'name': 'runoob','code':6734, 'dept': 'sales'}
dict['name'] # 输出键为'one' 的值
dict['runoob'] # 输出键为 2 的值
dict # 输出完整的字典
dict.keys() # 输出所有键
dict.values() # 输出所有值
四.运算符
1.算术运算符
+ - * / %
** # 幂 返回x的y次幂
2**4 # 16
// # 取整除 返回商的整数部分(向下取整)
9//2 # 4
2.比较运算符
== != > < >= <=
<> #不等于 类似!= python3已废弃
3.赋值运算符
= += -= *= /= %= **= //=
4.位运算符
& | ^ ~ << >>
5.逻辑运算符
and or not
6.成员运算符
in #在指定序列中找到值返回true,否则返回false
not in #在指定序列中找不到值返回true,否则返回false
a = 1;
b = [1,2,4,5]
print(a in b) #true
print(a not in b) #false
7.身份运算符
is 用于判断两个变量引用对象是否为同一个(同一块内存空间)
== 用于判断引用变量的值是否相等
is #判断两个标识符是不是引用自一个对象
is not #判断两个标识符是不是引用自不同对象
a = [1,2,4]
b = a
print(b is a) #true
b = a[:]
print(b is a) #false
五.条件语句
if 判断条件:
执行语句.....
else:
执行语句.....
if 判断条件1:
执行语句1.....
elif 判断条件2:
执行语句2.....
elif 判断条件3:
执行语句3.....
else:
执行语句4.....
六.循环语句
- while循环
- for循环
- 嵌套循环
1.循环控制语句
- break语句
- continue语句
- pass语句
2.while循环语句
while 判断条件(condition):
执行语句(statements)……
3.for循环语句
可以遍历任何序列的项目,如一个列表或者一个字符串
a = ['abcd', 'efg', 'o']
for index in a:
print(index)
if index == 'abcd':
break
else:
print("break执行后else模块不执行")
# abcd
七.Number
1.类型转换
int(x,y) #将x转换为一个整数 y为进制默认10
long(x,y) #将x转换为一个长整数 y为进制默认10
float(x ) #将x转换到一个浮点数
complex(real [,imag ]) #创建一个复数
str(x ) #将对象 x 转换为字符串
repr(x ) #将对象 x 转换为表达式字符串
eval(str ) #用来计算在字符串中的有效Python表达式,并返回一个对象
tuple(s ) #将序列 s 转换为一个元组
list(s ) #将序列 s 转换为一个列表
chr(x ) #将一个整数转换为一个字符
unichr(x ) #将一个整数转换为Unicode字符
ord(x ) #将一个字符转换为它的整数值
hex(x ) #将一个整数转换为一个十六进制字符串
oct(x ) #将一个整数转换为一个八进制字符串
2.math模块,cmath模块
math
模块包含属性运算函数
cmath
模块包含复数运算的函数
import math #导入
dir(math) #查询
3.数学函数
函数 | 返回值 ( 描述 ) |
---|---|
abs(x) | 返回数字的绝对值,如abs(-10) 返回 10 |
ceil(x) | 返回数字的上入整数,如math.ceil(4.1) 返回 5 |
cmp(x, y) | 如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1 |
exp(x) | 返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045 |
fabs(x) | 以浮点数形式返回数字的绝对值,如math.fabs(-10) 返回10.0 |
floor(x) | 返回数字的下舍整数,如math.floor(4.9)返回 4 |
log(x) | 如math.log(math.e)返回1.0,math.log(100,10)返回2.0 |
log10(x) | 返回以10为基数的x的对数,如math.log10(100)返回 2.0 |
max(x1, x2,…) | 返回给定参数的最大值,参数可以为序列。 |
min(x1, x2,…) | 返回给定参数的最小值,参数可以为序列。 |
modf(x) | 返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。 |
pow(x, y) | x**y 运算后的值。 |
round(x [,n]) | 返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数。 |
sqrt(x) | 返回数字x的平方根 |
4.随机数函数
函数 | 描述 |
---|---|
choice(seq) | 从序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数。 |
randrange ([start,] stop [,step]) | 从指定范围内,按指定基数递增的集合中获取一个随机数,基数默认值为 1 |
random() | 随机生成下一个实数,它在[0,1)范围内。 |
seed([x]) | 改变随机数生成器的种子seed。如果你不了解其原理,你不必特别去设定seed,Python会帮你选择seed。 |
shuffle(lst) | 将序列的所有元素随机排序 |
uniform(x, y) | 随机生成下一个实数,它在[x,y]范围内。 |
5.三角函数
函数 | 描述 |
---|---|
acos(x) | 返回x的反余弦弧度值。 |
asin(x) | 返回x的反正弦弧度值。 |
atan(x) | 返回x的反正切弧度值。 |
atan2(y, x) | 返回给定的 X 及 Y 坐标值的反正切值。 |
cos(x) | 返回x的弧度的余弦值。 |
hypot(x, y) | 返回欧几里德范数 sqrt(xx + yy)。 |
sin(x) | 返回的x弧度的正弦值。 |
tan(x) | 返回x弧度的正切值。 |
degrees(x) | 将弧度转换为角度,如degrees(math.pi/2) , 返回90.0 |
radians(x) | 将角度转换为弧度 |
6.数学常量
常量 | 描述 |
---|---|
pi | 数学常量 pi(圆周率,一般以π来表示) |
e | 数学常量 e,e即自然常数(自然常数)。 |
八.字符串
1.转义字符
转义字符 | 描述 |
---|---|
(在行尾时) | 续行符 |
\ | 反斜杠符号 |
’ | 单引号 |
" | 双引号 |
\a | 响铃 |
\b | 退格(Backspace) |
\e | 转义 |
\000 | 空 |
\n | 换行 |
\v | 纵向制表符 |
\t | 横向制表符 |
\r | 回车 |
\f | 换页 |
\oyy | 八进制数,y 代表 0~7 的字符,例如:\012 代表换行。 |
\xyy | 十六进制数,以 \x 开头,yy代表的字符,例如:\x0a代表换行 |
\other | 其它的字符以普通格式输出 |
字符串运算符
操作符 | 描述 | 实例 |
---|---|---|
+ | 字符串连接 | >>>a + b ‘HelloPython’ |
* | 重复输出字符串 | >>>a * 2 ‘HelloHello’ |
[] | 通过索引获取字符串中字符 | >>>a[1] ‘e’ |
[ : ] | 截取字符串中的一部分 | >>>a[1:4] ‘ell’ |
in | 成员运算符 - 如果字符串中包含给定的字符返回 True | >>>“H” in a True |
not in | 成员运算符 - 如果字符串中不包含给定的字符返回 True | >>>“M” not in a True |
r/R | 原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母"r"(可以大小写)以外,与普通字符串有着几乎完全相同的语法。 | >>>print r’\n’ \n >>> print R’\n’ \n |
% | 格式字符串 | 请看下一章节 |
九.列表
1.列表函数&方法
序号 | 函数 |
---|---|
1 | cmp(list1, list2) 比较两个列表的元素 |
2 | len(list) 列表元素个数 |
3 | max(list) 返回列表元素最大值 |
4 | min(list) 返回列表元素最小值 |
5 | list(seq) 将元组转换为列表 |
Python包含以下方法:
序号 | 方法 |
---|---|
1 | list.append(obj) 在列表末尾添加新的对象 |
2 | list.count(obj) 统计某个元素在列表中出现的次数 |
3 | list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) |
4 | list.index(obj) 从列表中找出某个值第一个匹配项的索引位置 |
5 | list.insert(index, obj) 将对象插入列表 |
6 | [list.pop(index=-1]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 |
7 | list.remove(obj) 移除列表中某个值的第一个匹配项 |
8 | list.reverse() 反向列表中元素 |
9 | list.sort(cmp=None, key=None, reverse=False) 对原列表进行排序 |
十.元组
1.元组内置函数
元组不可修改
Python元组包含了以下内置函数
序号 | 方法及描述 |
---|---|
1 | cmp(tuple1, tuple2) 比较两个元组元素。 |
2 | len(tuple) 计算元组元素个数。 |
3 | max(tuple) 返回元组中元素最大值。 |
4 | min(tuple) 返回元组中元素最小值。 |
5 | tuple(seq) 将列表转换为元组。 |
十一.字典
1.字典内置函数&方法
Python字典包含了以下内置函数:
序号 | 函数及描述 |
---|---|
1 | cmp(dict1, dict2) 比较两个字典元素。 |
2 | len(dict) 计算字典元素个数,即键的总数。 |
3 | str(dict) 输出字典可打印的字符串表示。 |
4 | type(variable) 返回输入的变量类型,如果变量是字典就返回字典类型。 |
Python字典包含了以下内置方法:
序号 | 函数及描述 |
---|---|
1 | dict.clear() 删除字典内所有元素 |
2 | dict.copy() 返回一个字典的浅复制 |
3 | [dict.fromkeys(seq, val]) 创建一个新字典,以序列 seq 中元素做字典的键,val 为字典所有键对应的初始值 |
4 | dict.get(key, default=None) 返回指定键的值,如果值不在字典中返回default值 |
5 | dict.has_key(key) 如果键在字典dict里返回true,否则返回false。Python3 不支持。 |
6 | dict.items() 以列表返回可遍历的(键, 值) 元组数组 |
7 | dict.keys() 以列表返回一个字典所有的键 |
8 | dict.setdefault(key, default=None) 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default |
9 | dict.update(dict2) 把字典dict2的键/值对更新到dict里 |
10 | dict.values() 以列表返回字典中的所有值 |
11 | [pop(key,default]) 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。 |
12 | popitem() 返回并删除字典中的最后一对键和值。 |
十二.函数
1.定义一个函数
- 以
def
关键字开头,后接函数标识符名称和圆括号()
- 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数
- 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明
- 函数内容以冒号起始,并且缩进
- return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None
2.参数
- 必备参数
- 关键字擦书
- 默认参数
- 不定长参数
# age默认35
def printinfo( name, age = 35 ):
"打印任何传入的字符串"
print "Name: ", name
print "Age ", age
return
# vartuple储存所有未命名的变量参数
def printinfo( arg1, *vartuple ):
"打印任何传入的参数"
print "输出: "
print arg1
for var in vartuple:
print var
return
3.匿名函数
使用lambda
来创建匿名函数
- lambda只是一个表达式
- 封装逻辑有限
- 拥有自己的命名空间,只访问自有参数列表
- 目的是调用小函数时不占用栈内存从而增加运行效率
sum = lambda arg1,arg2 : arg1 + arg2
4.return语句
不带参数值的return语句返回None
def sum (arg1,arg2):
total = arg1 + arg2
return total
5.变量作用域
定义在函数内部的变量拥有一个局部作用域
定义在函数外的拥有全局作用域
十三.模块
# support.py模块
def print_func(par):
print "Hello",par
return
1.import语句
# 导入模块 只会导入一次
import support
# 使用
support.print_func("hh")
2.form…import语句
# 只导入模块中一个方法
from support import print_func
3.from…import*语句
# 导入模块中所有公开成员到当前命名空间
from math import *
4.dir()函数
# 导入 返回的列表容纳了在一个模块里定义的所有模块,变量和函数
import math
content = dir(math)
5.globals()和locals()函数
如果在函数内部调用 locals(),返回的是所有能在该函数里访问的命名
如果在函数内部调用 globals(),返回的是所有在该函数里能访问的全局名字
两个函数的返回类型都是字典。所以名字们能用 keys() 函数摘取
6.reload()函数
当一个模块被导入到一个脚本,模块顶层部分的代码只会被执行一次
后记
个人笔记产出,如有不足之处还望斧正,详情见官方文档