1991年,荷兰人 Guido Van Rossum, Python是一个喜剧团体的名称。跨平台、一切皆对象、胶水语言、解析执行的脚本语言。
安装包: .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()