最近涉及到python的东西比较多,抽一点时间把基础语法规整下。
1、面向对象
#coding=utf-8 def _class_test_01(): s = squire(3,4) print("width %d lenth %d area is %d" %(s.width, s.length, s.calc_area())) class squire: width = 0 length = 0 #构造函数 def __init__(self, w, l): self.width = w self.length = l def calc_area(self): return self.width * self.length
2、列表、字典、元组
#coding=utf-8 def _container_test_01(): # 列表 l_temp = ['fredric','fed', 'other','base'] # 获取长度及切片 print("len: " + str(len(l_temp)) # 长度 3 + " value 1:3 " + ''.join(l_temp[1:3])) # fredother # 遍历列表 for item in range(0, len(l_temp)): print(l_temp[item]) # 出队列 print(l_temp.pop(1)) # 注意insert会替换原来的值 l_temp.insert(1, 'hi') print(l_temp) # fredric hi other # 排序 l_temp.sort() # 根据字母排序 print(l_temp) def _container_test_02(): #元组 t_temp_01 = (1,2,3,4,5) t_temp_02 = (6,7) # 元组的数据不允许修改,但可以拼接 t_temp_03 = t_temp_01 + t_temp_02 print("len: %d value[1]: %d max: %d min: %d" %(len(t_temp_03), t_temp_03[1], max(t_temp_03), min(t_temp_03))) def _container_test_03(): # 字典 d_temp = {"username":"fredric", "password":"fredricpwd", "note":"none"} print(d_temp["username"]) print(d_temp["password"]) print(d_temp["note"]) del d_temp["note"] # 遍历字典 for key in d_temp.keys(): print(key + " " + d_temp[key]) d_temp.clear() print("key len after clear: %d" %(len(d_temp.keys())))
3、文件操作
#coding=utf-8 import fileinput def _file_test_01(): config = {} #db.cfg 中数据如下: # host = 192.168.0.1 # db = test # username = root # password = root for line in fileinput.input('./config/db.cfg'): key = line.split("=")[0].strip() value = line.split("=")[1].strip() config.update({key:value}) # 打印保存在字典里的key/value for key in config.keys(): print(key + " " + config[key])
4、语句流程
#coding=utf-8 # 该全局变量可以被使用 status = False def _flow_test_01(): v_str_01 = "abcdefg" count = 0 global status while (count < len(v_str_01)): if v_str_01[count] == 'd': #此时修改的是全局变量status,如果没有上面局部变量的定义,则为一局部变量 status = True break elif v_str_01[count] == 'f': status = True break else: status = False; count += 1 if True == status: print("get value: " + v_str_01[count])
5、http POST JSON数据
#coding=utf-8 import http.client, urllib.parse import json # POST请求测试,请求和返回都是JSON数据 def _http_test_01(): str = json.dumps({'username':'fredric'}) headers = {"Content-type": "application/json", "Accept": "text/plain"} conn = http.client.HTTPConnection("127.0.0.1" ,3000) conn.request('POST', '/dopost', str, headers) response = conn.getresponse() data = response.read().decode('utf-8') # 打印返回的JSON数据 print(json.loads(data)["res"]) print(json.loads(data)["data"]) conn.close()
6、mysql数据库操作
#coding=utf-8 #采用pip install PyMysql安装 import pymysql import sys def _mysql_test_01(): db = pymysql.connect("localhost","root", "root", "demo") cursor = db.cursor() insert_sql = "INSERT INTO myclass(id, name, sex, degree) VALUES ('%d', '%s', '%d', '%d')" % (3, 'fred', 20, 2000) try: cursor.execute(insert_sql) db.commit() except: # 此处捕获异常,诸如主键重复时打印:pymysql.err.integrityerror print("Error: insert failed:", sys.exc_info()[0]) db.rollback() select_sql = "SELECT * FROM myclass" try: cursor.execute(select_sql) results = cursor.fetchall() for row in results: print ("id=%d,name=%s,sex=%d,degree=%d" %(row[0], row[1], row[2], row[3])) except: print ("Error: select failed", sys.exc_info()[0]) db.close()
7、字符串
#coding=utf-8 def _string_test_01(): v_temp = "test string value" # 首字母大写 print(v_temp.capitalize()[0]) # 部分字符串 print(v_temp[0:3]); # 循环遍历字符串 for item in range(0, len(v_temp)): print(v_temp[item]) def _string_test_02(): v_str_01 = "start" v_str_02 = "end" v_str_list = [v_str_01, " ", v_str_02] # 字符串拼接 res = "".join(v_str_list) print(res) # 字符串替换 print(res.replace('start', 'hello start')) def _string_test_03(): v_str_03 = "16" v_int_01 = 0; # 字符串转整数,后面的8 代表8进制的整数 v_int_01 = int(v_str_03, 8) print(v_int_01 == 14)
8、线程
#coding=utf-8 import _thread import threading import time lock = threading.Lock() def _thread_test_01(): try: _thread.start_new_thread( _do_thread, ("thread_01",1,)) _thread.start_new_thread( _do_thread, ("thread_02",2,)) _thread.start_new_thread( _do_thread, ("thread_03",3,)) except: print ("Error: 无法启动线程") while 1: pass def _do_thread(name, delay): print("start thread %s " %(name)) #获取锁 lock.acquire() time.sleep(delay) print("%s: %s" % (name, time.ctime(time.time()))) #释放锁 lock.release()
9、模块化(测试主函数)
# -*- coding:utf-8 -*- import test_module.t_string as t_s_module import test_module.t_flow as t_f_module import test_module.t_container as t_c_module import test_module.t_file as t_f_module import test_module.t_thread as t_t_module import test_module.t_http as t_h_module import test_module.t_class as t_c_module import test_module.t_mysql as t_m_module #t_s_module._string_test_01() #t_s_module._string_test_02() #t_s_module._string_test_03() #t_f_module._flow_test_01() #print(t_f_module.status) #全局变量 #t_c_module._container_test_01() #t_c_module._container_test_02() #t_c_module._container_test_03() #t_f_module._file_test_01() #t_t_module._thread_test_01() #t_h_module._http_test_01() #t_c_module._class_test_01() t_m_module._mysql_test_01()
源码文件附带如下:
http://files.cnblogs.com/files/Fredric-2013/python.rar