中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

Python學(xue)習筆(bi)記

一、經典HelloWord開啟Python大門:

# 文件名: Demo01.py

# 經典HelloWord開啟Python大門:
# if __name__ == '__main__':
#     print("Hello World!")
print("Hello World!")

二、指(zhi)定(ding)編碼:

# 文件名: Demo01.py

# 指定編碼: utf-8(默認)
# -*- coding:utf-8 -*-

三、注釋(shi):

# 文件名: Demo01.py

# 注釋
# 1、單行注(zhu)釋(shi)
""" 2、三個(ge)雙引號多行注(zhu)釋 """
''' 3、三個單引(yin)號(hao)多汗(han)注釋 '''

四(si)、變量賦值(zhi):

# 文(wen)件名: Demo01.py

# 變量賦(fu)值
a, b, c = 1, 2, "字符(fu)串(chuan)"
print(a, b, c)
a = b = c = 3
print(a, b, c)
# 內部賦值并返回
print(d := 10)

五、數(shu)據類型(xing):

數據類型描述示例
int 整數類型,用于表示整數 5-421000
float 浮點數類型,用于表示帶小數的數值 3.14-0.0012.0
bool 布爾類型,用于表示邏輯值,只有 True 和 False TrueFalse
str 字符串類型,用于表示文本 "hello"'world'
list 列表類型,用于存儲有序的可修改元素集合 [1, 2, 3]["a", 4]
tuple 元組類型,用于存儲有序的不可修改元素集合 (1, 2, 3)("x", "y")
set 集合類型,用于存儲無序且唯一的元素集合 {1, 2, 3}{"apple"}
dict 字典類型,用于存儲鍵值對 {"name": "Alice"}
# 文(wen)件名: Demo01.py

# 數(shu)(shu)據(ju)類型(xing)
# 整型(xing)、浮點型(xing)、字(zi)(zi)(zi)符(fu)(fu)串、布爾(er)型(xing)、列表、字(zi)(zi)(zi)典、元組、集(ji)合
# 不可(ke)變(bian)數(shu)(shu)據(ju):Number(數(shu)(shu)字(zi)(zi)(zi))、String(字(zi)(zi)(zi)符(fu)(fu)串)、Tuple(元組)
# 可(ke)變(bian)數(shu)(shu)據(ju):List(列表)、Dictionary(字(zi)(zi)(zi)典)、Set(集(ji)合)
print(type(1))              # 整數類型
print(type(1.1))            # 浮(fu)點(dian)類型(xing)
print(type("字符串(chuan)"))        # 字符串類(lei)型(xing)
print(type(True or False))  # 布爾類(lei)型(xing)
print(type([]))             # 列(lie)表(biao)類(lei)型(xing)
print(type({}))             # 字典類(lei)型(xing)
print(type((1, 2, 3)))      # 元組類(lei)型
print(type({1, 2, 3}))      # 集合(he)類(lei)(lei)型
# type()不會認(ren)為(wei)子類(lei)(lei)是一種父類(lei)(lei)類(lei)(lei)型
# isinstance()會認(ren)為(wei)子類(lei)(lei)是一種父類(lei)(lei)類(lei)(lei)型
print(isinstance(1, int))   # 判斷數據類型

六、字(zi)符串:

# 文(wen)件名: Demo01.py

# 字符串
# 1、字符串拼接
print("Hello World" + str(10))
# 2、引號轉義
print("\'" + str(10))
# 3、字符(fu)串換行成段:三個單(dan)引(yin)號或者三個雙(shuang)引(yin)號
print("""這是一個(ge)段落,
可以由多行組成""")
# 4、數據操作(zuo)
st = "Hello"
print(st)
print(len(st))  # 字(zi)符串(chuan)長度
print(st[-2])   # 字符串索引:從左往右以 0 開始,從右往左以 -1 開始
print(st[0:-1]) # 字符串切片str[start:end],其中 start(包含)是切片開始的索(suo)引(yin),end(不包含)是切片結束的索(suo)引(yin)
print(st[2:])   # 輸出從第三(san)個開始后的(de)所有字符
print(st[1:5:3])# 字(zi)符(fu)串(chuan)的(de)切片(pian)選(xuan)擇(ze)步(bu)長(chang)str[start:end:step],正步(bu)長(chang)表示從(cong)(cong)左到(dao)右選(xuan)擇(ze)指定字(zi)符(fu),負步(bu)長(chang)表示從(cong)(cong)右到(dao)左選(xuan)擇(ze)指定字(zi)符(fu)
print(st * 2)   # 輸出字(zi)符串兩次
print(type(st)) # 數據(ju)類型(xing)
# 5、字符串format格式化
print("{2} {0} {1}".format("a", "b", "c"))  # 按索引位置輸出
print("{value3} {value1} {value2}".format(value1="a", value2="b", value3="c"))  # 按關鍵字指定輸出
print("{2:.2f} {0} {1}".format("a", "b", 2.11111))  # @.2f保留兩位小數

七、用戶(hu)輸入(ru):

# 文件名: Demo01.py

# 用戶輸入
info1 = int(input("請輸入(ru)信息1:")) # 默認int
info2 = input("請(qing)輸入信息2:")      # 默(mo)認str
print(str(info1) + info2)

八、邏輯(ji)運(yun)算(suan)符:

# 文件名: Demo01.py

# 邏輯運算符
# and:與     or:或       not:非(fei)
boAnd = 1 > 0 and 1 < 0
boNot = not 1 > 0
print(str(boAnd) + str(boNot))

九、成員運(yun)算符:

# 文(wen)件名: Demo01.py

# 成員運算符
# in:判斷(duan)是否在指定(ding)的序列中(zhong)存在
# not in:判(pan)斷是(shi)否(fou)不(bu)在指定的序列(lie)中(zhong)存在
print(1 in [1, 2, 3])
print(1 not in [1, 2, 3])

十、身份運算符:

# 文件名(ming): Demo01.py

# 身(shen)份運算符(fu)
# is/is not 用于判斷兩個(ge)變量引用對象(xiang)是否為同一個(ge)
# == 用(yong)于判斷引用(yong)變量的值(zhi)是否相(xiang)等(deng)
newA = [1, 2, 3]
newB = newA
print(newA is newB)         # True
print(newA is [1, 2, 3])    # False
print(newA == [1, 2, 3])    # True

十一、條(tiao)件語句:

# 文(wen)件(jian)名(ming): Demo01.py

# 條件(jian)語句
ifInfo = 1
# 1、單條件
if ifInfo > 1:
    print("大于1")
else:
    print("小于或等(deng)于1")
# 2、嵌套條(tiao)件
if ifInfo > 2:
    print("大(da)于2")
elif 1 < ifInfo <= 2:
    print("大(da)于(yu)1或小于(yu)等于(yu)2")
else:
    print("小(xiao)于(yu)或等于(yu)1")
# 3、match...case語句(ju)
# 自動終止,無(wu)需 break:由于每個 case 塊是獨立的,因此不需要使用 break 來終(zhong)止當(dang)前(qian)塊
status = 400
match status:
    case 400:
        print("Bad request")
    case 401 | 403 | 404:
        print("Not found")
    case 418:
        print("I'm a teapot")
    case _:     # 未找到(dao)默(mo)認輸出(chu)
        print("Something's wrong with the internet")

十二、列(lie)表List:

# 文件(jian)名: Demo01.py

# 列表
# 語(yu)法:List[value]
# 有序的集合,可重復,可修(xiu)改(gai)
listInfo = [5, 2, 2, 1, 4, 3]
print(listInfo)     # 查(cha)看整個列(lie)表
print(listInfo[1])  # 查看列表索(suo)引位為0值
print(listInfo[1:3])# 查(cha)看列表索引位為1到3的元(yuan)素(左閉右開)
listInfo.append(6)  # 添加(jia)
print("添加:", listInfo)     # 查看整個列表
listInfo.remove(3)  # 移(yi)除列表中(zhong)某個值(zhi)的第(di)一個匹(pi)配項
print("移除第一個匹配的指定值:", listInfo)
del listInfo[1]     # 刪除(chu)索引位為1的元素
print("刪(shan)除指定(ding)索引(yin)位元素:", listInfo)
listInfo[1] = 5     # 修(xiu)改(gai)
print("修改:", listInfo)
# len長度, max最大值,min最小值,sorted從小到大排序(xu)
print(len(listInfo))
print(sorted(listInfo))
# 列表比較
import operator
listA = [2, 3]
listB = [2, 3]
print("operator.eq(a,b): ", operator.eq(listA, listB))

十三(san)、元組(zu)tuple:

# 文件名: Demo01.py

# 元組(zu)
# 語(yu)法:tuple(value)
# 有序的集(ji)合(he),可重(zhong)復,不可修改
# 元組(zu)的不可變指的是元組(zu)所指向的內(nei)存中的內(nei)容不可變
tupleA = (2, 3, 6, 5, 1)
print(tupleA)
print(tupleA[1:3])          # 元組切片(左閉右(you)開(kai))
print(tupleA + (1, 2, 3))   # 元組相加
print(3 in tupleA)          # 判(pan)斷(duan)元素是否存在
print(list(tupleA))         # 轉(zhuan)換為列表

十四、字典dict:

# 文件名: Demo01.py

# 字典
# 語法:dict{key:value}
# key鍵唯一
mapInfo = {"name": "ceshi", "age": 18}
print(mapInfo)
print(mapInfo.keys())       # 返回(hui)key列(lie)表視圖
print(mapInfo.values())     # 返回(hui)value列(lie)表視圖
print(mapInfo.get("type", "不存在則設置默認值"))
print(len(mapInfo))         # 長(chang)度
print("name屬性值:", mapInfo.get("name"))
mapInfo["name"] = "ceshi2"  # 更(geng)新指(zhi)定key的(de)值
print("name更新(xin)后的屬性(xing)值:", mapInfo.get("name"))
mapInfo["sex"] = "1"        # Key不存(cun)在則(ze)添加,Key存(cun)在則(ze)修改
print(mapInfo)
print("sex" in mapInfo)     # 判(pan)斷Key是否存在
del mapInfo["sex"]          # 刪除
print(mapInfo)

十五、集(ji)合(he)set:

# 文(wen)件(jian)名: Demo01.py

# 集合
# 語(yu)法:set{value}
# 無序的集合(he),不可重(zhong)復(fu),可修(xiu)改
set1 = {1, 2, 2, 3, 4}
print(set1)         # 不(bu)重(zhong)復對象(xiang)集合,去重(zhong)功能(neng)
print(set("abbds")) # 字(zi)符(fu)串轉(zhuan)set集合
set1.add(5)         # 添加元素(su)
print(set1)
set1.remove(5)      # 移除指定(ding)元(yuan)素,如果元(yuan)素不存在,則會發生錯誤
set1.discard(5)     # 移除指定元素,如果元素不(bu)存在,不(bu)會發生錯誤
print(set1)

十六、循環(huan)語言:

# 文件名: Demo01.py

# 循環語(yu)言
# break語(yu)句(ju):跳(tiao)出 forwhile 的循環體,任何對應的循環 else 塊(kuai)將不執行
# continue語(yu)句:跳出(chu)當前循(xun)環,繼(ji)續下一次循(xun)環
# 1、for結構: for 變量名 in 可迭代對象: 循環體 [else: 結(jie)束循環執行(xing)語句(ju),可省略]
kvInfo = {"name1": "ceshi1", "name2": "ceshi2"}
# for key, value in kvInfo.items():
#     print(key + ":" + value)
for kv in kvInfo.items():
    print(kv[0] + ":" + kv[1])
else:
    print("循(xun)環結束")
# 2、while結構:while 條件:循環體 [else: 結束循環執行語句(ju),可(ke)省略]
fList = [1, 2, 3, 4, 5]
ind = 0
while ind < len(fList):
    # 關鍵(jian)字(zi)end可以用于(yu)將結(jie)果輸出到同(tong)一行,或者(zhe)在(zai)輸出的末尾添(tian)加不同(tong)的字(zi)符
    print(fList[ind], end=",")
    ind += 1
else:
    print("循(xun)環結束,ind值", ind)

十七、函數:

# 文件名: Demo02.py

# 函數
# 語(yu)法(fa):def 函數名(參數列表): 函數體(ti)
def my_fun(a, b):
    return a + b
print("函(han)數my_fun()返回:" + str(my_fun(1, 2)))

十(shi)八(ba)、類(lei)與方法(fa):

1、聲明類、構造函數、實例函數、類方法、靜態方法:

# 文(wen)件名: class_and_method.py

# 類、構造(zao)函數、實例函數、類方法(fa)、靜態方法(fa)
class MyClass:
    # 構造函(han)數
    def __init__(self, name):
        self.name = name

    # 實例(li)函數:通過實例(li)化(hua)后調用
    def instance_method(self):
        self.name = self.name + "實(shi)例方法"
        print(f"{self.name}")

    # 類(lei)方法:可以通(tong)過類(lei)名直接調用,也可以通(tong)過實例調用,修(xiu)改類(lei)變(bian)量(liang)
    # 類(lei)變(bian)量(liang)
    class_data = "init_data"
    @classmethod
    def class_method(cls, name):
        print(f"類變量初始值:{cls.class_data}")
        cls.class_data = name
        print(f"類名:{cls.__name__}")
        print(f"類變量修(xiu)改值(zhi):{cls.class_data}")

    # 靜態方法:可(ke)以通過(guo)類名(ming)調用,也可(ke)以通過(guo)實例調用,類似于外(wai)部函數
    @staticmethod
    def static_method(x):
        print(f"static method, {x}")

2、操作:

# 文件名: Demo02.py

# 類與方法
# 構(gou)造(zao)函數、實(shi)例函數、類方法、靜態方法
# 導入模塊(kuai): from 文件(jian)路徑 import 文件(jian)名(ming)
# internal: 自定義的文(wen)(wen)件存放路徑,若同一路徑下可以直接 import 文(wen)(wen)件名(ming)
from internal import class_and_method 
# 通(tong)過(guo)類(lei)(lei)名(ming)直接(jie)調用(yong)類(lei)(lei)方法(fa)
class_and_method.MyClass.class_method("iven")
# 通(tong)過(guo)類名直接調用靜態方(fang)法
class_and_method.MyClass.static_method("靜態方法")
# 創建類的實(shi)例
instance = class_and_method.MyClass("Jon")
# 訪問構造函(han)數實例(li)屬性
print(f"訪問(wen)構造函數實例屬(shu)性: {instance.name}")
# 調用實例方(fang)法
instance.instance_method()
# 通過實例調用類(lei)方(fang)法
instance.class_method("new_iven")
# 通過實例調用靜(jing)態(tai)方法(fa)
instance.static_method("new_靜(jing)態方法")

十九、繼(ji)承:

1、聲明父類,定義父類構造函數與父類方法:

# 文件(jian)名: class_father_method.py

# 父類
class Father:

    # 構造函(han)數(shu)
    def __init__(self, name):
        self.name = name

    # 父類(lei)方法(fa)
    def father_method(self):
        print(f"父類(lei)屬(shu)性:{self.name}")

2、子類繼承父類,支持多繼承:

# 文件名: class_son_method.py

from internal import class_father_method

# 子(zi)類: class Son(Father)
# 多繼承: class Son(Father, Mother, ....)
class MySon(class_father_method.Father):

    # 構造函(han)數(shu), super()調(diao)用父類構造函(han)數(shu)
    def __init__(self, name, age):
        # 調(diao)用父類的構造方法
        super().__init__(name)
        self.age = age

    # 子類方法
    def son_method(self):
        print(f"子類屬性name: {self.name}")
        print(f"子類(lei)屬性(xing)age: {self.age}")

3、操作:

# 文(wen)件名: Demo02.py

# 繼(ji)承
# 支持多繼(ji)承
# 子類(派生類 DerivedClassName)會繼(ji)承父類(基類 BaseClassName)的屬性和方法
from internal import class_son_method
# 實例化(hua)子類:
son = class_son_method.MySon("iven", 18)
# 獲(huo)取父類(lei)方(fang)法(fa):
son.father_method()
# 獲(huo)取子(zi)類(lei)方(fang)法(fa):
son.son_method()

二十、異常處理:

# 文件名: Demo02.py

# 異常(chang)處理
try:
    print(1/0)
except Exception as e:
    print(e)
finally:
    print("finally語塊肯定會執行")

二十一(yi)、匿名(ming)函數(shu):

# 文(wen)件(jian)名: Demo02.py

# 匿名函數
# 函數名 = lambda 形參:返(fan)回(hui)值
numSum = lambda num1, num2: num1 + num2
print(numSum(10, 20))
# 等(deng)價于(yu)
def num_sum(a, b):
    return a + b
print(num_sum(10, 20))

二十(shi)二、高階函數:

函數作為參數傳(chuan)遞給另一個函數

# 文件(jian)名: Demo02.py

# 高階函數(shu)(shu)
# 函數(shu)(shu)作為參數(shu)(shu)傳遞給另一(yi)個函數(shu)(shu)
# 函數(shu)(shu)作為返回值返回
def A(func, a, b):
    return func(a, b)
def B(a, b):
    return a + b
def C(a, b):
    return a * b
def D(a, b):
    return a - b
# 調用A
print(A(B, 1, 2))
print(A(C, 1, 2))
print(A(D, 1, 2))

二(er)十三、文件(jian)操(cao)作:

# 文(wen)(wen)件名: Demo02.py

# 文(wen)(wen)件操作
# 結構(gou): 文(wen)(wen)件名,文(wen)(wen)件類(lei)型,編碼格式(shi)
# 文(wen)(wen)件類(lei)型: r:讀取(qu)文(wen)(wen)件,w:寫文(wen)(wen)件,a:追加文(wen)(wen)件,r+:讀寫文(wen)件(jian)(jian),文(wen)件(jian)(jian)指針位于文(wen)件(jian)(jian)的(de)開(kai)頭(tou),當(dang)你首先寫入內(nei)容后,文(wen)件(jian)(jian)指針仍然在開(kai)頭(tou)
# 編碼(ma)格式(shi): utf-8:中文編碼(ma)格(ge)式(shi),gbk:中文編碼(ma)格(ge)式(shi),ascii:英文編碼(ma)格(ge)式(shi)
# 方式(shi)一(yi): 需要手動(dong)調用close()
# file = open("./file/data.txt", "r", encoding="utf-8")
# file.close()
# 方(fang)式(shi)二: with 方(fang)式(shi)讀取,不需要(yao)手(shou)動調用close()
with open("./file/data.txt", "r", encoding="utf-8") as file1:
    # print(file.read()) # 讀取文件,一次寫(xie)入內存中(zhong),read(10): 讀(du)取10個字節
    lines = file1.readlines()
    for line in lines:
        print(line) # 讀取文件,一次讀取一行
with open("./file/data2.txt", "r+", encoding="utf-8") as file2:
    # 文(wen)件指針位于(yu)文(wen)件的(de)開頭
    file2.write("一二三四(si)五 \n")
    file2.write("六七八九(jiu)十 \n")

二十四、基于MySQL實現(xian)分頁查詢(xun)案例:

1、前置準備:

# 激活虛擬環境
.\venv\Scripts\activate
# 查(cha)看當前虛擬環境中安(an)裝的包
pip freeze
# 安(an)裝 Flask
pip install Flask
# 安(an)裝 MySQL Connector/Python
pip install mysql-connector-python

2、執行腳本:

# 文(wen)件名: Demo03.py

# 前置準備
# .\venv\Scripts\activate       # 激活虛擬環(huan)境
# pip freeze        # 查看當前虛擬環(huan)境中安裝的包
# pip install Flask     # 安裝 Flask
# pip install mysql-connector-python    # 安裝 MySQL Connector/Python
# 訪問:http://127.0.0.1:8080/api/demo?page=1&per_page=10

from flask import Flask, request, jsonify
import mysql.connector
from mysql.connector import Error

app = Flask(__name__)

# 配置 MySQL 數據庫連接
db_config = {
    'host': 'localhost',
    'user': 'root',
    'password': '12345',
    'database': 'demo_database',
    'port': 3306
}

# 創建(jian)數(shu)據庫連接
def create_connection():
    try:
        connection = mysql.connector.connect(**db_config)
        if connection.is_connected():
            print("MySQL Database connection successful")
        return connection
    except Error as e:
        print(f"The error '{e}' occurred")
        return None

# 分(fen)頁查詢接口
@app.route('/api/demo', methods=['GET'])
def get_items():
    # 創建數(shu)據庫(ku)連(lian)接
    connection = create_connection()
    if connection is None:
        # 返回錯誤響應
        return jsonify({"error": "Database connection failed"}), 500

    try:
        page = request.args.get('page', 1, type=int)
        per_page = request.args.get('per_page', 10, type=int)
        offset = (page - 1) * per_page

        cursor = connection.cursor(dictionary=True)
        query = "SELECT * FROM tb_user LIMIT %s OFFSET %s"
        cursor.execute(query, (per_page, offset)) # 執(zhi)行查詢
        items = cursor.fetchall() # 獲取查詢結果

        total_query = "SELECT COUNT(*) as total FROM tb_user"
        cursor.execute(total_query)
        total_count = cursor.fetchone()['total']

        total_pages = (total_count + per_page - 1) // per_page

        return jsonify({
            'items': items,
            'total': total_count,
            'pages': total_pages,
            'current_page': page
        })
    except Error as e:
        print(f"The error '{e}' occurred")
        return jsonify({"error": str(e)}), 500
    finally:
        if connection.is_connected():
            cursor.close()
            connection.close()

if __name__ == '__main__':
    # 運(yun)行 Flask 應用, 端(duan)口8080
    app.run(debug=True, port=8080)

 

posted on 2025-02-12 00:04  愛文(Iven)  閱讀(25)  評論(0)    收藏  舉報

導航