python 基础语法梳理

最近涉及到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
View Code

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())))
View Code

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])
View Code

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])
View Code

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()
View Code

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()
View Code

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) 
View Code

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()
View Code

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()
View Code

源码文件附带如下:

https://files.cnblogs.com/files/Fredric-2013/python.rar

posted @ 2017-06-13 17:26  Fredric_2013  阅读(212)  评论(0编辑  收藏  举报