——Life is short, you need Python, 人生苦短,我用 Python
0x00预处理
0x01路径:#!/usr/bin/python3
0x02编码:# -*- coding: utf-8 -*-
0x03模块:
1. 模块导入:import
2. 调用模块:support.print_func("Runoob")
3. 引入时不运行:每个模块都有一个name属性,当其值是__main__
时,表明该模块自身在运行,否则是被引入。
4. 包:管理 Python 模块命名空间的形式,包结构:__init__.py
0x04注释{ 单行#, 多行“`注释内容“`}
0x05缩进:全文要一致,代替花括号。
0x06语句{ 一行多句用”;“分隔; 多行一句用反斜杠”“ }
0x07代码组{以’:”结束}
0x08标识符+保留字?
0x10数据类型
0x10综述
1. 变量不需要声明。
2. 变量没有类型,所以一个变量可以通过赋值指向不同类型的对象。
3. 允许同时为多个变量赋值。a, b, c = 1, 2, “runoob”
0x11Number
1. Python3 支持 bool、int、float。
2. 数值的除法(/)总是返回一个浮点数,要获取整数使用//操作。在混合计算时,Python会把整型转换成为浮点数。
3. 2**5 #乘方 32
0x12String
1. 字符串用单引号(‘)或双引号(“)括起来。
2. 使用反斜杠()转义特殊字符,如果你不想让转义发生,可以在字符串前面添加一个 r,表示原始字符串
3. 字符串可以被索引,切片,拼接。(索引值以 0 为开始值,-1 为从末尾的开始位置。)
#!/usr/bin/python3
str = 'Runoob'
print (str) # 输出字符串
print (str[0]) # 输出字符串第一个字符
print (str[2:4]) # 输出从第三个开始到第四个的字符
print (str[2:]) # 输出从第三个开始的后的所有字符
print (str[:4]) # 输出第一个到第四个的所有字符
print (str[2:-1]) # 输出从第三个开始到倒数第二个的字符
print (str * 2) # 输出字符串两次
print (str + "TEST") # 连接字符串
0x13Tuples
1. 元组写在小括号()里,元素之间用逗号隔开。tinytuple = (123, ‘runoob’)
2. 注意构造包含0或1个元素的元组的特殊语法规则。tup1 = (); tup2 = (20,) # 空元组和一个元素,需要在元素后添加逗号
3. 元组可以被索引,切片,拼接,详见字符串代码,不再赘述。
0x14List
1. 元素可以为不同类型:list = [ ‘abcd’, 786 , 2.23, ‘runoob’, 70.2 ]
2. String, Tuples,List都是序列。List和Tuples的区别是List可以更改元素Tuples不能。
3. 列表可以被索引,切片,拼接,详见字符串代码,不再赘述。(序列都可以)
4. 添加方法可以作为栈{将x添加到末尾append(x);指定删除索引默认最后一个pop();}队列{删左边的popleft()}链表等数据结构。
0x15set
1. 基本功能是进行成员关系测试和删除重复元素(默认完成)。print(a - b); ‘Rose’ in student; #a和b的差集; 成员测试
2. 可以使用大括号 { } 或者 set() 函数创建集合。(创建一个空集合必须用 set()):student = {‘Tom’, ‘Jim’, ‘Mary’, ‘Tom’, ‘Jack’, ‘Rose’}
0x16dict
1. 无序的对象集合(区别于列表的有序对象),字典当中的元素是通过键来存取的,而不是通过偏移存取。(创建一个空字典用{}):tinydict = {‘name’: ‘runoob’,’code’:1, ‘site’: ‘www.runoob.com’}
2. 键(key)必须使用不可变类型。在同一个字典中,键(key)必须是唯一的。
补充:
1. strings, tuples, 和numbers 是不可更改的对象,而 list, dict, set则是可以修改的对象。
2. 类型转换用:int(); float(); str(); dict();list();set();chr(); 函数。、
3. del语句可以删除对象或者列表的切割。
0x20逻辑控制
0x21 条件控制:
if condition_1:
statement_block_1
elif condition_2:
statement_block_2
else:
statement_block_3
0x22 循环语句:
while 判断条件:
语句
或者(遍历序列用for):
for <variable> in <sequence>:
<statements>
else:
<statements>
0x23 迭代器和生成器:
1. 迭代器遍历集合。迭代器只能往前不会后退。
2. 迭代器两个基本方法it=iter(list); print(next(it)) #创建迭代器对象、输出下一个对象
3. 生成器是一个返回迭代器的函数。生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回yield的值,作为迭代器集合的下一个元素。
#!/usr/bin/python3
import sys
def fibonacci(n): # 生成器函数 - 斐波那契
a, b, counter = 0, 1, 0
while True:
if (counter > n):
return
yield a
a, b = b, a + b
counter += 1
f = fibonacci(10) # f 是一个迭代器,由生成器返回生成
while True:
try:
print (next(f), end=" ")
except StopIteration:
sys.exit()
0x24 函数:
1. 函数定义:def printme( str ): #没有结束标志;return就返回;
2. 函数调用:printme(“我要调用用户自定义函数!”);
3. 参数传递:不可变类型传值(拷贝),可变类型传引用(指针)。
4. 参数类型:def printinfo(name,age=35,*vartuple): #必要参数, 默认参数, 和不定长参数。
5. 匿名函数:sum = lambda arg1, arg2: arg1 + arg2; #可写函数说明,调用方式与正常函数一样。
0x30内置函数
0x31 print(): print(‘{name}网址: {site}’.format(name=’菜鸟教程’, site=’www.runoob.com’))
0x32 range():range(x,y),生成一个[x,y)的迭代器
0x33 repr():产生一个解释器易读的表达形式repr(x).rjust(2)
0x34 input():从标准输入读入一行文本
0x40面向对象
0x41类的属性:name = ”; __weight = 0 #基本属性和私有属性
0x42构造函数:def init(self,n,a,w):
0x43类的方法:不再赘述。。。实例化:t = Test(); t.prt()
0x44继承和多态
0x45运算符重载:def add(self,other):return Vector(self.a + other.a, self.b + other.b)
0x50玩得开心
0x51正则表达式:检查一个字符串是否与某种模式匹配
0x52常用库介绍:
参考资料:
RUNOOB:http://www.runoob.com/python3/python3-tutorial.html
cyaron:https://github.com/luogu-dev/cyaron/wiki/Python-30%E5%88%86%E9%92%9F%E5%85%A5%E9%97%A8%E6%8C%87%E5%8D%97
一张图看懂:http://blog.csdn.net/guomutian911/article/details/53571552
说明:2018.2.3的时候弄的,第一遍写的时候没有用markdown,所以排版可能有点,,凉。