为什么80%的码农都做不了架构师?>>>
1991年,荷兰人 Guido Van Rossum, Python是一个喜剧团体的名称。跨平台、一切皆对象、胶水语言、解析执行的脚本语言。
当执行 $python test.py 时,Python解析器(如默认用C语言写的Cpython,还有jpython、IronPython等)会将test.py隐式编译为字节码于当前目录下(test.pyc),然后放到Python虚拟机(PVM)里执行字节码,接着对应平台(如Intel)会在其CPU上执行实际的机器指令。
安装包: .msi(windows), .rpm(linux)等
环境变量: export PATH=$PATH:/home/to/bin/python
软链接: sudo ln -s /usr/local/bin/python3 /usr/bin/python
常用命令:
// 查看帮助
help(str)// 查看类型
type('test')// 查看是否是继承实例
isinstance('test', str)// 查看所有可用方法
dir(str)
# 注释符
模块: 包含函数、类、变量的独立Python文件
import 模块名
模块名.函数名()
from 模块名 imoprt 函数名
函数名()
一切皆对象,变量也是对象
查看对象类型: 变量名.__class__
调用对象方法: 变量名.方法()
数据类型: Boolean,Interger,Float,String,List,Tuple,Dict,Set
# List 列表 相当于PHP的数组,里面的元素类型可以是任意的
myList = [11,22,33]# Tuple 元组 (是一种简化版List,赋值后无法改变,速度快)
myTuple = (11,22,33)# 字典 (无序的键值对,类似json)
myDict = { 'tom':18, 'jerry':15 }
myDict.get('tom', 'default')
myDict['tom'] = 19
myDict.keys()
myDict.values()
myDict.copy()
myDict.popitem()
del myDict['tom']# 集合 (和数学的集合是一个概念,集合中元素必须唯一)
mySet = set([11,22,33])# 空的东西
None # 空对象
'' # 空字符串
[] # 空列表
() # 空元组
{} # 空字典
# python没有switch语句,而是用if...elif...else来代替
# python同样也没有三目运算符
# 循环
for 变量 in 列表:...比如:
for i in ["a","b","c"]:print ifor name,age in (('Tom',18),('Mary',12)):print name, agewhile 条件:...迭代器.next()
iter(obj) 生成迭代器
continue
break# 定义函数
def functionName():函数体# 调用函数
functionName()# 变长参数
def 函数名(*args):函数体函数名(v1, v2, v3)def 函数名(**args):函数体函数名(k1=v1, k2=v2)# 函数的返回值
如果定义了,就返回定义的返回值;
如果没定义,只写了一个return而已,就返回None
如果连return都没写,同样返回None# 类
class 类名称():...class 类名称(父类名称):...实例名 = 类名称()比如:
class Monk:def __init__(self, name, age):self.name = nameself.age = agemyMonk = Monk('悟空', 20)
myMonk.name
type(myMonk)
myMonk.__class__
解决中文报错问题:
#!/usr/bin/python
#-*-coding:utf-8-*-
# 文件IO
# print 把数据输出到标准输出
# raw_input 把数据从标准输入读取进来
input = raw_input('提示: ')
print(input)f = file('test.txt', 'a')# 读取全部并返回字符串
f.read()# 一次只读一行
f.readline()# 读取全部并返回列表
f.readlines()
f.write('test text')
f.flush()
f.close()
## socket
应用层:HTTP
传输层:TCP (TCP socket 检验、可靠; UDP socket 不校验、不可靠、高效)
网络层:IP路由
链路层:MAC帧
物理层:网线# 导入socket模块
import socket# 创建TCP类型的socket
c = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 建立一个指向IP和端口的TCP连接(即本机服务端的ip地址和端口)
# 而客户端连接上来的是一个随机端口
c.connect(('211.147.4.31', 80))# 在机器上使用netstat查看连接
> netstat -n | grep 211.147.4.31# 关闭连接
c.close()