高級變數類型(列表,元組,字典,字元串,公共方法,變數高級)for迴圈

来源:https://www.cnblogs.com/JcrLive/archive/2020/01/27/12235360.html
-Advertisement-
Play Games

Python 中數據類型可以分為 數字型 和 非數字型 數字型 整型 ( ) 浮點型( ) 布爾型( ) 真 `非 0 數` —— 非零即真 假 `0` 複數型 ( ) 主要用於科學計算,例如:平面場問題、波動問題、電感電容等問題 非數字型 字元串 列表 元組 字典 在 中,所有 非數字型變數 都支 ...


  • Python 中數據類型可以分為 數字型非數字型
  • 數字型
    • 整型 (int)
    • 浮點型(float
    • 布爾型(bool
      • True 非 0 數 —— 非零即真
      • False 0
    • 複數型 (complex)
      • 主要用於科學計算,例如:平面場問題、波動問題、電感電容等問題
  • 非數字型
    • 字元串
    • 列表
    • 元組
    • 字典
  • Python 中,所有 非數字型變數 都支持以下特點:
    1. 都是一個 序列 sequence,也可以理解為 容器
    2. 取值 []
    3. 遍歷 for in
    4. 計算長度最大/最小值比較刪除
    5. 鏈接 +重覆 *
    6. 切片

01. 列表

1.1 列表的定義

  • List(列表) 是 Python 中使用 最頻繁 的數據類型,在其他語言中通常叫做 數組
  • 專門用於存儲 一串 信息
  • 列表用 [] 定義,數據 之間使用 , 分隔
  • 列表的 索引0 開始
    • 索引 就是數據在 列表 中的位置編號,索引 又可以被稱為 下標

註意:從列表中取值時,如果 超出索引範圍,程式會報錯

name_list = ["zhangsan", "lisi", "wangwu"]

1.2 列表常用操作

  • ipython3 中定義一個 列表,例如:name_list = []
  • 輸入 name_list. 按下 TAB 鍵,ipython 會提示 列表 能夠使用的 方法 如下:
In [1]: name_list.
name_list.append   name_list.count    name_list.insert   name_list.reverse
name_list.clear    name_list.extend   name_list.pop      name_list.sort
name_list.copy     name_list.index    name_list.remove 
序號 分類 關鍵字 / 函數 / 方法 說明
1 增加 列表.insert(索引, 數據) 在指定位置插入數據
列表.append(數據) 在末尾追加數據
列表.extend(列表2) 將列表2 的數據追加到列表
2 修改 列表[索引] = 數據 修改指定索引的數據
3 刪除 del 列表[索引] 刪除指定索引的數據
列表.remove[數據] 刪除第一個出現的指定數據
列表.pop 刪除末尾數據
列表.pop(索引) 刪除指定索引數據
列表.clear 清空列表
4 統計 len(列表) 列表長度
列表.count(數據) 數據在列表中出現的次數
5 排序 列表.sort() 升序排序
列表.sort(reverse=True) 降序排序
列表.reverse() 逆序、反轉

del 關鍵字(科普)

  • 使用 del 關鍵字(delete) 同樣可以刪除列表中元素
  • del 關鍵字本質上是用來 將一個變數從記憶體中刪除的
  • 如果使用 del 關鍵字將變數從記憶體中刪除,後續的代碼就不能再使用這個變數了
del name_list[1]

在日常開發中,要從列表刪除數據,建議 使用列表提供的方法

關鍵字、函數和方法(科普)

  • 關鍵字 是 Python 內置的、具有特殊意義的標識符
In [1]: import keyword
In [2]: print(keyword.kwlist)
In [3]: print(len(keyword.kwlist))

關鍵字後面不需要使用括弧

  • 函數 封裝了獨立功能,可以直接調用
函數名(參數)

函數需要死記硬背

  • 方法 和函數類似,同樣是封裝了獨立的功能
  • 方法 需要通過 對象 來調用,表示針對這個 對象 要做的操作
對象.方法名(參數)

在變數後面輸入 .,然後選擇針對這個變數要執行的操作,記憶起來比函數要簡單很多

1.3 迴圈遍歷

  • 遍歷 就是 從頭到尾 依次列表 中獲取數據
    • 迴圈體內部 針對 每一個元素,執行相同的操作
  • Python 中為了提高列表的遍歷效率,專門提供的 迭代 iteration 遍歷
  • 使用 for 就能夠實現迭代遍歷
# for 迴圈內部使用的變數 in 列表
for name in name_list:

    迴圈內部針對列表元素進行操作
    print(name)

1.4 應用場景

  • 儘管 Python列表 中可以 存儲不同類型的數據
  • 但是在開發中,更多的應用場景是
    1. 列表 存儲相同類型的數據
    2. 通過 迭代遍歷,在迴圈體內部,針對列表中的每一項元素,執行相同的操作

02. 元組

2.1 元組的定義

  • Tuple(元組)與列表類似,不同之處在於元組的 元素不能修改
    • 元組 表示多個元素組成的序列
    • 元組Python 開發中,有特定的應用場景
  • 用於存儲 一串 信息數據 之間使用 , 分隔
  • 元組用 () 定義
  • 元組的 索引0 開始
    • 索引 就是數據在 元組 中的位置編號
info_tuple = ("zhangsan", 18, 1.75)

創建空元組

info_tuple = ()

元組中 只包含一個元素 時,需要 在元素後面添加逗號

info_tuple = (50, )

2.2 元組常用操作

  • ipython3 中定義一個 元組,例如:info = ()
  • 輸入 info. 按下 TAB 鍵,ipython 會提示 元組 能夠使用的函數如下:
info.count  info.index

有關 元組常用操作 可以參照上圖練習

2.3 迴圈遍歷

  • 取值 就是從 元組 中獲取存儲在指定位置的數據
  • 遍歷 就是 從頭到尾 依次元組 中獲取數據
# for 迴圈內部使用的變數 in 元組
for item in info:

    迴圈內部針對元組元素進行操作
    print(item)
  • Python 中,可以使用 for 迴圈遍歷所有非數字型類型的變數:列表元組字典 以及 字元串
  • 提示:在實際開發中,除非 能夠確認元組中的數據類型,否則針對元組的迴圈遍歷需求並不是很多

2.4 應用場景

  • 儘管可以使用 for in 遍歷 元組
  • 但是在開發中,更多的應用場景是:
    • 函數的 參數 和 返回值,一個函數可以接收 任意多個參數,或者 一次返回多個數據
      • 有關 函數的參數 和 返回值,在後續 函數高級 給大家介紹
    • 格式字元串,格式化字元串後面的 () 本質上就是一個元組
    • 讓列表不可以被修改,以保護數據安全
info = ("zhangsan", 18)

print("%s 的年齡是 %d" % info)

元組和列表之間的轉換

  • 使用 list 函數可以把元組轉換成列表
list(元組) 
  • 使用 tuple 函數可以把列表轉換成元組
tuple(列表)

03. 字典

3.1 字典的定義

  • dictionary(字典) 是 除列表以外 Python 之中 最靈活 的數據類型
  • 字典同樣可以用來 存儲多個數據
    • 通常用於存儲 描述一個 物體 的相關信息
  • 和列表的區別
    • 列表有序 的對象集合
    • 字典無序 的對象集合
  • 字典用 {} 定義
  • 字典使用 鍵值對 存儲數據,鍵值對之間使用 , 分隔
    • key 是索引
    • value 是數據
    • 之間使用 : 分隔
    • 鍵必須是唯一的
    • 可以取任何數據類型,但 只能使用 字元串數字元組
xiaoming = {"name": "小明",
            "age": 18,
            "gender": True,
            "height": 1.75}

3.2 字典常用操作

  • ipython3 中定義一個 字典,例如:xiaoming = {}
  • 輸入 xiaoming. 按下 TAB 鍵,ipython 會提示 字典 能夠使用的函數如下:
In [1]: xiaoming.
xiaoming.clear       xiaoming.items       xiaoming.setdefault
xiaoming.copy        xiaoming.keys        xiaoming.update
xiaoming.fromkeys    xiaoming.pop         xiaoming.values
xiaoming.get         xiaoming.popitem    

有關 字典常用操作 可以參照上圖練習

3.3 迴圈遍歷

  • 遍歷 就是 依次字典 中獲取所有鍵值對
# for 迴圈內部使用的 `key 的變數` in 字典
for k in xiaoming:

    print("%s: %s" % (k, xiaoming[k]))

提示:在實際開發中,由於字典中每一個鍵值對保存數據的類型是不同的,所以針對字典的迴圈遍歷需求並不是很多

3.4 應用場景

  • 儘管可以使用 for in 遍歷 字典
  • 但是在開發中,更多的應用場景是:
    • 使用 多個鍵值對,存儲 描述一個 物體 的相關信息 —— 描述更複雜的數據信息
    • 多個字典 放在 一個列表 中,再進行遍歷,在迴圈體內部針對每一個字典進行 相同的處理
card_list = [{"name": "張三",
              "qq": "12345",
              "phone": "110"},
             {"name": "李四",
              "qq": "54321",
              "phone": "10086"}
             ]

04. 字元串

4.1 字元串的定義

  • 字元串 就是 一串字元,是編程語言中表示文本的數據類型
  • 在 Python 中可以使用 一對雙引號 " 或者 一對單引號 ' 定義一個字元串
    • 雖然可以使用 \" 或者 \' 做字元串的轉義,但是在實際開發中:
      • 如果字元串內部需要使用 ",可以使用 ' 定義字元串
      • 如果字元串內部需要使用 ',可以使用 " 定義字元串
  • 可以使用 索引 獲取一個字元串中 指定位置的字元,索引計數從 0 開始
  • 也可以使用 for 迴圈遍歷 字元串中每一個字元

大多數編程語言都是用 " 來定義字元串

string = "Hello Python"

for c in string:
    print(c)

4.2 字元串的常用操作

  • ipython3 中定義一個 字元串,例如:hello_str = ""
  • 輸入 hello_str. 按下 TAB 鍵,ipython 會提示 字元串 能夠使用的 方法 如下:
In [1]: hello_str.
hello_str.capitalize    hello_str.isidentifier  hello_str.rindex
hello_str.casefold      hello_str.islower       hello_str.rjust
hello_str.center        hello_str.isnumeric     hello_str.rpartition
hello_str.count         hello_str.isprintable   hello_str.rsplit
hello_str.encode        hello_str.isspace       hello_str.rstrip
hello_str.endswith      hello_str.istitle       hello_str.split
hello_str.expandtabs    hello_str.isupper       hello_str.splitlines
hello_str.find          hello_str.join          hello_str.startswith
hello_str.format        hello_str.ljust         hello_str.strip
hello_str.format_map    hello_str.lower         hello_str.swapcase
hello_str.index         hello_str.lstrip        hello_str.title
hello_str.isalnum       hello_str.maketrans     hello_str.translate
hello_str.isalpha       hello_str.partition     hello_str.upper
hello_str.isdecimal     hello_str.replace       hello_str.zfill
hello_str.isdigit       hello_str.rfind

提示:正是因為 python 內置提供的方法足夠多,才使得在開發時,能夠針對字元串進行更加靈活的操作!應對更多的開發需求!

1) 判斷類型 - 9

方法 說明
string.isspace() 如果 string 中只包含空格,則返回 True
string.isalnum() 如果 string 至少有一個字元並且所有字元都是字母或數字則返回 True
string.isalpha() 如果 string 至少有一個字元並且所有字元都是字母則返回 True
string.isdecimal() 如果 string 只包含數字則返回 True,全形數字
string.isdigit() 如果 string 只包含數字則返回 True,全形數字\u00b2
string.isnumeric() 如果 string 只包含數字則返回 True,全形數字漢字數字
string.istitle() 如果 string 是標題化的(每個單詞的首字母大寫)則返回 True
string.islower() 如果 string 中包含至少一個區分大小寫的字元,並且所有這些(區分大小寫的)字元都是小寫,則返回 True
string.isupper() 如果 string 中包含至少一個區分大小寫的字元,並且所有這些(區分大小寫的)字元都是大寫,則返回 True

2) 查找和替換 - 7

方法 說明
string.startswith(str) 檢查字元串是否是以 str 開頭,是則返回 True
string.endswith(str) 檢查字元串是否是以 str 結束,是則返回 True
string.find(str, start=0, end=len(string)) 檢測 str 是否包含在 string 中,如果 start 和 end 指定範圍,則檢查是否包含在指定範圍內,如果是返回開始的索引值,否則返回 -1
string.rfind(str, start=0, end=len(string)) 類似於 find(),不過是從右邊開始查找
string.index(str, start=0, end=len(string)) 跟 find() 方法類似,不過如果 str 不在 string 會報錯
string.rindex(str, start=0, end=len(string)) 類似於 index(),不過是從右邊開始
string.replace(old_str, new_str, num=string.count(old)) 把 string 中的 old_str 替換成 new_str,如果 num 指定,則替換不超過 num 次

3) 大小寫轉換 - 5

方法 說明
string.capitalize() 把字元串的第一個字元大寫
string.title() 把字元串的每個單詞首字母大寫
string.lower() 轉換 string 中所有大寫字元為小寫
string.upper() 轉換 string 中的小寫字母為大寫
string.swapcase() 翻轉 string 中的大小寫

4) 文本對齊 - 3

方法 說明
string.ljust(width) 返回一個原字元串左對齊,並使用空格填充至長度 width 的新字元串
string.rjust(width) 返回一個原字元串右對齊,並使用空格填充至長度 width 的新字元串
string.center(width) 返回一個原字元串居中,並使用空格填充至長度 width 的新字元串

5) 去除空白字元 - 3

方法 說明
string.lstrip() 截掉 string 左邊(開始)的空白字元
string.rstrip() 截掉 string 右邊(末尾)的空白字元
string.strip() 截掉 string 左右兩邊的空白字元

6) 拆分和連接 - 5

方法 說明
string.partition(str) 把字元串 string 分成一個 3 元素的元組 (str前面, str, str後面)
string.rpartition(str) 類似於 partition() 方法,不過是從右邊開始查找
string.split(str="", num) 以 str 為分隔符拆分 string,如果 num 有指定值,則僅分隔 num + 1 個子字元串,str 預設包含 '\r', '\t', '\n' 和空格
string.splitlines() 按照行('\r', '\n', '\r\n')分隔,返回一個包含各行作為元素的列表
string.join(seq) 以 string 作為分隔符,將 seq 中所有的元素(的字元串表示)合併為一個新的字元串

4.3 字元串的切片

  • 切片 方法適用於 字元串列表元組
    • 切片 使用 索引值 來限定範圍,從一個大的 字元串切出 小的 字元串
    • 列表元組 都是 有序 的集合,都能夠 通過索引值 獲取到對應的數據
    • 字典 是一個 無序 的集合,是使用 鍵值對 保存數據

字元串[開始索引:結束索引:步長]

註意

  1. 指定的區間屬於 左閉右開[開始索引, 結束索引) => 開始索引 >= 範圍 < 結束索引
    • 起始 位開始,到 結束位的前一位 結束(不包含結束位本身)
  2. 從頭開始,開始索引 數字可以省略,冒號不能省略
  3. 到末尾結束,結束索引 數字可以省略,冒號不能省略
  4. 步長預設為 1,如果連續切片,數字和冒號都可以省略

索引的順序和倒序

  • 在 Python 中不僅支持 順序索引,同時還支持 倒序索引
  • 所謂倒序索引就是 從右向左 計算索引
    • 最右邊的索引值是 -1,依次遞減

演練需求

    1. 截取從 2 ~ 5 位置 的字元串
    1. 截取從 2 ~ 末尾 的字元串
    1. 截取從 開始 ~ 5 位置 的字元串
    1. 截取完整的字元串
    1. 從開始位置,每隔一個字元截取字元串
    1. 從索引 1 開始,每隔一個取一個
    1. 截取從 2 ~ 末尾 - 1 的字元串
    1. 截取字元串末尾兩個字元
    1. 字元串的逆序(面試題)

答案

num_str = "0123456789"

# 1. 截取從 2 ~ 5 位置 的字元串
print(num_str[2:6])

# 2. 截取從 2 ~ `末尾` 的字元串
print(num_str[2:])

# 3. 截取從 `開始` ~ 5 位置 的字元串
print(num_str[:6])

# 4. 截取完整的字元串
print(num_str[:])

# 5. 從開始位置,每隔一個字元截取字元串
print(num_str[::2])

# 6. 從索引 1 開始,每隔一個取一個
print(num_str[1::2])

# 倒序切片
# -1 表示倒數第一個字元
print(num_str[-1])

# 7. 截取從 2 ~ `末尾 - 1` 的字元串
print(num_str[2:-1])

# 8. 截取字元串末尾兩個字元
print(num_str[-2:])

# 9. 字元串的逆序(面試題)
print(num_str[::-1])

05. 公共方法

5.1 Python 內置函數

Python 包含了以下內置函數:

函數 描述 備註
len(item) 計算容器中元素個數
del(item) 刪除變數 del 有兩種方式
max(item) 返回容器中元素最大值 如果是字典,只針對 key 比較
min(item) 返回容器中元素最小值 如果是字典,只針對 key 比較
cmp(item1, item2) 比較兩個值,-1 小於/0 相等/1 大於 Python 3.x 取消了 cmp 函數

註意

  • 字元串 比較符合以下規則: "0" < "A" < "a"

5.2 切片

描述 Python 表達式 結果 支持的數據類型
切片 "0123456789"[::-2] "97531" 字元串、列表、元組
  • 切片 使用 索引值 來限定範圍,從一個大的 字元串切出 小的 字元串
  • 列表元組 都是 有序 的集合,都能夠 通過索引值 獲取到對應的數據
  • 字典 是一個 無序 的集合,是使用 鍵值對 保存數據

5.3 運算符

運算符 Python 表達式 結果 描述 支持的數據類型
+ [1, 2] + [3, 4] [1, 2, 3, 4] 合併 字元串、列表、元組
* ["Hi!"] * 4 ['Hi!', 'Hi!', 'Hi!', 'Hi!'] 重覆 字元串、列表、元組
in 3 in (1, 2, 3) True 元素是否存在 字元串、列表、元組、字典
not in 4 not in (1, 2, 3) True 元素是否不存在 字元串、列表、元組、字典
> >= == < <= (1, 2, 3) < (2, 2, 3) True 元素比較 字元串、列表、元組

註意

  • in 在對 字典 操作時,判斷的是 字典的鍵
  • innot in 被稱為 成員運算符

成員運算符

成員運算符用於 測試 序列中是否包含指定的 成員

運算符 描述 實例
in 如果在指定的序列中找到值返回 True,否則返回 False 3 in (1, 2, 3) 返回 True
not in 如果在指定的序列中沒有找到值返回 True,否則返回 False 3 not in (1, 2, 3) 返回 False

註意:在對 字典 操作時,判斷的是 字典的鍵

5.4 完整的 for 迴圈語法

  • Python 中完整的 for 迴圈 的語法如下:
for 變數 in 集合:
    
    迴圈體代碼
else:
    沒有通過 break 退出迴圈,迴圈結束後,會執行的代碼

應用場景

  • 迭代遍歷 嵌套的數據類型時,例如 一個列表包含了多個字典
  • 需求:要判斷 某一個字典中 是否存在 指定的 值
    • 如果 存在,提示並且退出迴圈
    • 如果 不存在,在 迴圈整體結束 後,希望 得到一個統一的提示
students = [
    {"name": "阿土",
     "age": 20,
     "gender": True,
     "height": 1.7,
     "weight": 75.0},
    {"name": "小美",
     "age": 19,
     "gender": False,
     "height": 1.6,
     "weight": 45.0},
]

find_name = "阿土"

for stu_dict in students:

    print(stu_dict)

    # 判斷當前遍歷的字典中姓名是否為find_name
    if stu_dict["name"] == find_name:
        print("找到了")

        # 如果已經找到,直接退出迴圈,就不需要再對後續的數據進行比較
        break

else:
    print("沒有找到")

print("迴圈結束")

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • jQuery 滑動方法 通過 jQuery,您可以在元素上創建滑動效果。 jQuery 擁有以下滑動方法: slideDown() slideUp() slideToggle() jQuery slideDown() 方法 jQuery slideDown() 方法用於向下滑動元素。 語法: $(s ...
  • javascript export default (str) = { // 建立數據結構,堆棧,保存數據 let r = [] // 給定任意子輸入都返回第一個符合條件的子串 let match = (str) = { let j = str.match(/^(0+|1+)/)[0] let o ...
  • 第一種 第二種 第三種 第四種 ...
  • 互聯網那些事之數據丟失 本系列故事的所有案例和解決方案只是筆者以前在互聯網工作期間的一些事例,僅供大家參考,實際操作應該根據業務和項目情況設計,歡迎大家留言提出寶貴的意見 背景 小王和小明分別維護分散式系統中A、b兩個服務,有一個場景是 A服務會向B服務通過MQ發送事件並且推送用戶信息,然後B服務保 ...
  • 面向對象編程 —— Object Oriented Programming 簡寫 OOP 01. 面向對象基本概念 我們之前學習的編程方式就是 面向過程 的 面相過程 和 面相對象,是兩種不同的 編程方式 對比 面向過程 的特點,可以更好地瞭解什麼是 面向對象 1.1 過程和函數(科普) 過程 是早 ...
  • 函數進階 目標 函數參數和返回值的作用 函數的返回值 進階 函數的參數 進階 遞歸函數 01. 函數參數和返回值的作用 函數根據 有沒有參數 以及 有沒有返回值 ,可以 相互組合 ,一共有 4 種 組合形式 1. 無參數,無返回值 2. 無參數,有返回值 3. 有參數,無返回值 4. 有參數,有返回 ...
  • 01. 變數的引用 變數 和 數據 都是保存在 記憶體 中的 在 中 函數 的 參數傳遞 以及 返回值 都是靠 引用 傳遞的 1.1 引用的概念 在 中 變數 和 數據 是分開存儲的 數據 保存在記憶體中的一個位置 變數 中保存著數據在記憶體中的地址 變數 中 記錄數據的地址 ,就叫做 引用 使用 函數可 ...
  • 變數 流程式控制制 函數 模塊 系統需求 1. 程式啟動,顯示名片管理系統歡迎界面,並顯示功能菜單 2. 用戶用數字選擇不同的功能 3. 根據功能選擇,執行不同的功能 4. 用戶名片需要記錄用戶的 姓名 、 電話 、 QQ 、 郵件 5. 如果查詢到指定的名片,用戶可以選擇 修改 或者 刪除 名片 步驟 ...
一周排行
    -Advertisement-
    Play Games
  • C#TMS系統代碼-基礎頁面BaseCity學習 本人純新手,剛進公司跟領導報道,我說我是java全棧,他問我會不會C#,我說大學學過,他說這個TMS系統就給你來管了。外包已經把代碼給我了,這幾天先把增刪改查的代碼背一下,說不定後面就要趕鴨子上架了 Service頁面 //using => impo ...
  • 委托與事件 委托 委托的定義 委托是C#中的一種類型,用於存儲對方法的引用。它允許將方法作為參數傳遞給其他方法,實現回調、事件處理和動態調用等功能。通俗來講,就是委托包含方法的記憶體地址,方法匹配與委托相同的簽名,因此通過使用正確的參數類型來調用方法。 委托的特性 引用方法:委托允許存儲對方法的引用, ...
  • 前言 這幾天閑來沒事看看ABP vNext的文檔和源碼,關於關於依賴註入(屬性註入)這塊兒產生了興趣。 我們都知道。Volo.ABP 依賴註入容器使用了第三方組件Autofac實現的。有三種註入方式,構造函數註入和方法註入和屬性註入。 ABP的屬性註入原則參考如下: 這時候我就開始疑惑了,因為我知道 ...
  • C#TMS系統代碼-業務頁面ShippingNotice學習 學一個業務頁面,ok,領導開完會就被裁掉了,很突然啊,他收拾東西的時候我還以為他要旅游提前請假了,還在尋思為什麼回家連自己買的幾箱飲料都要叫跑腿帶走,怕被偷嗎?還好我在他開會之前拿了兩瓶芬達 感覺感覺前面的BaseCity差不太多,這邊的 ...
  • 概述:在C#中,通過`Expression`類、`AndAlso`和`OrElse`方法可組合兩個`Expression<Func<T, bool>>`,實現多條件動態查詢。通過創建表達式樹,可輕鬆構建複雜的查詢條件。 在C#中,可以使用AndAlso和OrElse方法組合兩個Expression< ...
  • 閑來無聊在我的Biwen.QuickApi中實現一下極簡的事件匯流排,其實代碼還是蠻簡單的,對於初學者可能有些幫助 就貼出來,有什麼不足的地方也歡迎板磚交流~ 首先定義一個事件約定的空介面 public interface IEvent{} 然後定義事件訂閱者介面 public interface I ...
  • 1. 案例 成某三甲醫預約系統, 該項目在2024年初進行上線測試,在正常運行了兩天後,業務系統報錯:The connection pool has been exhausted, either raise MaxPoolSize (currently 800) or Timeout (curren ...
  • 背景 我們有些工具在 Web 版中已經有了很好的實踐,而在 WPF 中重新開發也是一種費時費力的操作,那麼直接集成則是最省事省力的方法了。 思路解釋 為什麼要使用 WPF?莫問為什麼,老 C# 開發的堅持,另外因為 Windows 上已經裝了 Webview2/edge 整體打包比 electron ...
  • EDP是一套集組織架構,許可權框架【功能許可權,操作許可權,數據訪問許可權,WebApi許可權】,自動化日誌,動態Interface,WebApi管理等基礎功能於一體的,基於.net的企業應用開發框架。通過友好的編碼方式實現數據行、列許可權的管控。 ...
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...