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 i for name,age in (('Tom',18),('Mary',12)): print name, age while 条件: ... 迭代器.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 = name self.age = age myMonk = 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()