• 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

    源码文件附带如下:

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

  • 相关阅读:
    图数据库查询语言
    深入探索Spring Data JPA, 从Repository 到 Specifications 和 Querydsl
    axios 浏览器内存泄露问题解决
    给Swagger换一套皮肤 Knife4j集成记录
    根据经纬度和半径计算经纬度范围
    最火 Web 前端组态软件 (可视化)
    Python-----删除给定目录下的所有文件
    Python----发送邮件yagmail
    python------将"["1","2"]"类型是字符串,转换为["1","2"]类型为列表,即eval()用法
    python----自动生成requirements.txt与导入requirements.txt中的库
  • 原文地址:https://www.cnblogs.com/Fredric-2013/p/7002442.html
Copyright © 2020-2023  润新知