函數專題1

函數的定義

函數的基本寫法如下所示:

def function_name(parameter1, parameter2, ...):"""Docstring: 描述函數的功能、參數和返回值 (可選但強烈推薦)"""# 函數體: 實現功能的代碼# ...return value # 可選,用于返回結果
  • def: 關鍵字,表示開始定義一個函數。
  • function_name: 函數的名稱,應遵循Python的命名約定(通常是小寫字母和下劃線,例如 calculate_area,用英文單詞含義和下劃線來作為函數名)。
  • parameter1, parameter2, ...: 函數的參數(也叫形參),是函數在被調用時接收的輸入值。參數是可選的。
  • (): 參數列表必須放在圓括號中,即使沒有參數,括號也不能省略。
  • : 冒號表示函數定義的頭部結束,接下來是縮進的函數體。
  • Docstring (文檔字符串): 位于函數定義第一行的多行字符串(通常用三引號 """Docstring goes here""")。用于解釋函數的作用、參數、返回值等。可以通過 help(function_name) 或 function_name.doc?查看。這個寫法可選,為了后續維護和查看,建議加上這一段更加規范
  • 函數體 (Function Body): 縮進的代碼塊,包含實現函數功能的語句。
  • return value: return 語句用于從函數中返回一個值。如果函數沒有 return 語句,或者 return 后面沒有值,它會自動返回 None。一個函數可以有多個 return 語句(例如在不同的條件分支中)。

不帶參數的函數

# 定義一個簡單的問候函數
def greet():"""打印一句問候語。"""message = "大家好!歡迎學習Python函數定義!"print(message)greet()
大家好!歡迎學習Python函數定義!

可以看到上述函數沒有參數,也沒有返回值,調用這個函數的時候運行函數體中的內容

# 查看文檔字符串,方便查看函數的使用,這個方法可以不掌握
print(greet.__doc__)
# 實際上,當你在py文件中,鼠標懸停在函數上按住ctrl即可點擊函數跳轉到其內部查看函數的定義
打印一句問候語。

帶上注釋是函數定義的良好習慣,尤其在復雜的項目中,更方便維護和調試。可以讓ai給你補上注釋

帶參數的函數

函數的參數我們有如下稱呼:

  • Parameters (形參): 在函數定義中列出的變量名 (如 name, feature1, feature2)。
  • Arguments (實參): 在函數調用時傳遞給函數的實際值 (如 "張三", 10, 25),也就是實際的數值(實參)傳給了 形參(定義時候的變量)

注意點: 定義的時候把函數的參數稱之為形參,調用的時候把函數的參數稱之為實參。

# 定義一個帶一個參數的問候函數
def greet_person(name):"""根據給定的名字打印問候語。Args:name (str): 要問候的人的名字。"""message = f"你好, {name}! 很高興認識你。"print(message)greet_person("張三")  # 輸出: 你好, 張三! 很高興認識你。
你好, 張三! 很高興認識你。
# 定義一個帶多個參數的函數 (例如,在機器學習中計算兩個特征的和)
def add_features(feature1, feature2):"""計算兩個數值特征的和。Args:feature1 (float or int): 第一個特征值。feature2 (float or int): 第二個特征值。"""total = feature1 + feature2print(f"{feature1} + {feature2} = {total}")add_features(10, 25)       # 輸出: 10 + 25 = 35
10 + 25 = 35
# add_features(5) 
# 這會報錯,因為少了一個參數 TypeError

帶返回值的函數

函數不僅可以執行操作(如打印),還可以計算并返回一個結果

# 定義一個計算和并返回結果的函數
def calculate_sum(a, b):"""計算兩個數的和并返回結果。Args:a (float or int): 第一個數。b (float or int): 第二個數。Returns:float or int: 兩個數的和。"""result = a + breturn resultprint("hhh")calculate_sum(2, 3)
5

此時,注意到,print("hhh")這個代碼并沒有被執行,因為函數在遇到return語句時,就會立即返回,而不會繼續執行函數后面的代碼。

其次,如果沒有return語句,或者return后面不帶任何參數,那么函數也會返回None(不要把執行的操作理解為返回值)。

# 函數可以返回多種類型的數據,包括列表、字典等
# 例如,在數據預處理中,一個函數可能返回處理后的特征列表
def preprocess_data(raw_data_points):"""模擬數據預處理,例如將所有數據點乘以2。Args:raw_data_points (list): 原始數據點列表。Returns:list: 處理后的數據點列表。"""processed = []for point in raw_data_points:processed.append(point * 2) # 假設預處理是乘以2return processeddata = [1, 2, 3, 4, 5]
processed_data = preprocess_data(data)print(f"原始數據: {data}")
print(f"預處理后數據: {processed_data}") # 輸出: [2, 4, 6, 8, 10]
原始數據: [1, 2, 3, 4, 5]
預處理后數據: [2, 4, 6, 8, 10]

變量作用域

理解變量在何處可見和可訪問非常重要。

  • 局部變量 (Local Variables): 在函數內部定義的變量,只在該函數內部有效。當函數執行完畢后,局部變量通常會被銷毀。

  • 全局變量 (Global Variables): 在所有函數外部定義的變量,可以在程序的任何地方被訪問(但在函數內部修改全局變量需要特殊聲明,如 global 關鍵字,初學階段可以先避免)。

print("\n--- 變量作用域示例 ---")
global_var = "我是一個全局變量"def scope_test():local_var = "我是一個局部變量"print(f"在函數內部,可以看到局部變量: '{local_var}'")print(f"在函數內部,也可以看到全局變量: '{global_var}'")# global_var = "嘗試在函數內修改全局變量" # 如果沒有 global 聲明,這會創建一個新的局部變量 global_var# print(f"在函數內部,修改后的 '全局' 變量: '{global_var}'")scope_test()print(f"\n在函數外部,可以看到全局變量: '{global_var}'")
--- 變量作用域示例 ---
在函數內部,可以看到局部變量: '我是一個局部變量'
在函數內部,也可以看到全局變量: '我是一個全局變量'在函數外部,可以看到全局變量: '我是一個全局變量'
# print(f"在函數外部,不能看到局部變量: {local_var}") # 這會產生 NameError,因為 local_var 只在函數內存在

函數的參數類型

在我們ctrl跳轉到一些函數內部的時候,會發現寫法相對我們日常定義的簡單函數更加復雜,主要是參數形式比較豐富

參數有以下類型:

  • 位置參數 (Positional Arguments): 調用時按順序匹配。
  • 默認參數值 (Default Parameter Values): 定義函數時給參數指定默認值,調用時如果未提供該參數,則使用默認值。
  • 可變數量參數 (*args 和 **kwargs):
    • *args: 將多余的位置參數收集為一個元組。
    • **kwargs: 將多余的關鍵字參數收集為一個字典。

可能你還聽過關鍵字參數 (Keyword Arguments)這個說法,但是他并非是一種參數,而是一種傳遞參數的手段: 調用時通過 參數名=值 的形式指定,可以不按順序。他可以傳位置參數的值,也可以傳默認參數的值,也可以傳可變參數的值,也可以傳關鍵字參數的值。為了可讀性,更推薦對所有參數均采取關鍵字參數傳遞。

位置參數

def describe_pet(animal_type, pet_name):"""顯示寵物的信息。"""print(f"\n我有一只 {animal_type}.")print(f"我的 {animal_type} 的名字叫 {pet_name.title()}.")describe_pet("貓", "咪咪") # 使用關鍵字參數,順序不重要
我有一只 貓.
我的 貓 的名字叫 咪咪.

為了可讀性,更推薦對所有參數采取關鍵詞參數的寫法

假設一個復雜的繪圖函數
plot_data(data, x_col, y_col, "blue", "-", True, False, "My Plot", "X-axis", "Y-axis") # 不清晰使用關鍵字參數
plot_data(data=my_data, x_column='time', y_column='value',color='blue', linestyle='-', show_grid=True, use_log_scale=False,title="My Awesome Plot", xlabel="Time (s)", ylabel="Value") # 非常清晰

當一個函數有很多參數時,如果只用位置參數,調用者可能需要反復查看函數定義才能確定每個參數的含義。使用關鍵字參數,每個值的含義都通過其前面的參數名清晰地標示出來。

describe_pet(animal_type="貓", pet_name="咪咪") # 使用關鍵字參數,順序不重要
describe_pet(pet_name="旺財", animal_type="狗") # 順序改變,但結果正確
我有一只 貓.
我的 貓 的名字叫 咪咪.我有一只 狗.
我的 狗 的名字叫 旺財.

默認參數

注意點:帶默認值的參數必須放在沒有默認值的參數之后

def describe_pet_default(pet_name, animal_type="狗"): # animal_type 有默認值"""顯示寵物的信息,動物類型默認為狗。"""print(f"我有一只 {animal_type}.")print(f"我的 {animal_type} 的名字叫 {pet_name.title()}.")describe_pet_default(pet_name="小黑") # animal_type 使用默認值 "狗"
describe_pet_default(pet_name="雪球", animal_type="倉鼠") # 提供 animal_type,覆蓋默認值
# 注意:帶默認值的參數必須放在沒有默認值的參數之后
我有一只 狗.
我的 狗 的名字叫 小黑.
我有一只 倉鼠.
我的 倉鼠 的名字叫 雪球.

*args (收集位置參數)

*args: 將多余的位置參數收集為一個元組。

當函數被調用時,Python 會先嘗試用調用時提供的位置參數去填充函數定義中所有明確定義的、非關鍵字的形參 (也就是那些普通的,沒有 * 或 ** 前綴的參數,包括有默認值的和沒有默認值的)。 如果在填充完所有這些明確定義的形參后,調用時還有剩余的位置參數,那么這些“多余的”位置參數就會被收集起來,形成一個元組 (tuple),并賦值給 *args 指定的那個變量(通常就是 args)。 如果調用時提供的位置參數數量正好等于或少于明確定義的形參數量(且滿足了所有必需參數),那么 *args 就會是一個空元組 ()。

def make_pizza(size, *toppings):"""概述要制作的比薩。*toppings 會將所有額外的位臵參數收集到一個元組中。"""print(f"\n制作一個 {size} 寸的比薩,配料如下:")if toppings: # 只要toppings不為空元組,就會執行for topping in toppings:print(f"- {topping}")else:print("- 原味 (無額外配料)")make_pizza(12, "蘑菇")
make_pizza(16, "香腸", "青椒", "洋蔥")
make_pizza(9) # toppings 會是空元組
制作一個 12 寸的比薩,配料如下:
- 蘑菇制作一個 16 寸的比薩,配料如下:
- 香腸
- 青椒
- 洋蔥制作一個 9 寸的比薩,配料如下:
- 原味 (無額外配料)

**kwargs (收集關鍵字參數)

**kwargs: 將多余的關鍵字參數收集為一個字典。

當函數被調用時,Python 會先處理完所有的位置參數(包括填充明確定義的形參和收集到 *args 中)。 然后,Python 會看調用時提供的關鍵字參數 (形如 name=value)。它會嘗試用這些關鍵字參數去填充函數定義中所有與關鍵字同名的、明確定義的形參(這些形參可能之前沒有被位置參數填充)。

如果在填充完所有能通過名字匹配上的明確定義的形參后,調用時還有剩余的關鍵字參數(即這些關鍵字參數的名字在函數定義中沒有對應的明確形參名),那么這些“多余的”關鍵字參數就會被收集起來,形成一個字典 (dictionary),并賦值給 **kwargs 指定的那個變量(通常就是 kwargs)。

如果調用時提供的所有關鍵字參數都能在函數定義中找到對應的明確形參名,那么 **kwargs 就會是一個空字典 {}。

def build_profile(first_name, last_name, **user_info):"""創建一個字典,其中包含我們知道的有關用戶的一切。**user_info 會將所有額外的關鍵字參數收集到一個字典中。"""profile = {}profile['first_name'] = first_nameprofile['last_name'] = last_namefor key, value in user_info.items():profile[key] = valuereturn profileuser_profile = build_profile('愛因斯坦', '阿爾伯特',location='普林斯頓',field='物理學',hobby='小提琴')
print(f"\n用戶信息: {user_profile}")
# 輸出: {'first_name': '愛因斯坦', 'last_name': '阿爾伯特', 'location': '普林斯頓', 'field': '物理學', 'hobby': '小提琴'}
用戶信息: {'first_name': '愛因斯坦', 'last_name': '阿爾伯特', 'location': '普林斯頓', 'field': '物理學', 'hobby': '小提琴'}

*args 和 **kwargs 的核心目的是讓函數能夠接收不定數量的參數,并以元組和字典的形式在函數內部進行處理。

也就是說 當位置參數用完了 就自動變成*args,當關鍵詞參數用完了 就自動變成**kwarges

# 同時出現 *args 和 **kwargs,注意參數的傳入順序
def process_data(id_num, name, *tags, status="pending", **details): # 注意,這里的status 是僅關鍵字參數,必須通過關鍵詞傳值print(f"ID: {id_num}")print(f"Name: {name}")print(f"Tags (*args): {tags}")print(f"Status: {status}")          # status 是一個有默認值的普通關鍵字參數print(f"Details (**kwargs): {details}")print("-" * 20)# 調用1:
process_data(101, "Alice", "vip", "new_user", location="USA", age=30)
# ID: 101
# Name: Alice
# Tags (*args): ('vip', 'new_user')  <-- "vip", "new_user" 是多余的位置參數,被 *tags 收集
# Status: pending                    <-- status 使用默認值,因為調用中沒有 status=...
# Details (**kwargs): {'location': 'USA', 'age': 30} <-- location 和 age 是多余的關鍵字參數,被 **details 收集
# --------------------# 調用2:
process_data(102, "Bob", status="active", department="Sales")
# ID: 102
# Name: Bob
# Tags (*args): ()                   <-- 沒有多余的位置參數
# Status: active                     <-- status 被關鍵字參數 'active' 覆蓋
# Details (**kwargs): {'department': 'Sales'} <-- department 是多余的關鍵字參數
# --------------------# 調用3:
process_data(103, "Charlie", "admin") # 'admin' 會被 *tags 捕獲
# ID: 103
# Name: Charlie
# Tags (*args): ('admin',)
# Status: pending
# Details (**kwargs): {}
# --------------------# 調用4: (演示關鍵字參數也可以用于定義中的位置參數)
process_data(name="David", id_num=104, profession="Engineer")
# ID: 104
# Name: David
# Tags (*args): ()
# Status: pending
# Details (**kwargs): {'profession': 'Engineer'}
# --------------------
ID: 101
Name: Alice
Tags (*args): ('vip', 'new_user')
Status: pending
Details (**kwargs): {'location': 'USA', 'age': 30}
--------------------
ID: 102
Name: Bob
Tags (*args): ()
Status: active
Details (**kwargs): {'department': 'Sales'}
--------------------
ID: 103
Name: Charlie
Tags (*args): ('admin',)
Status: pending
Details (**kwargs): {}
--------------------
ID: 104
Name: David
Tags (*args): ()
Status: pending
Details (**kwargs): {'profession': 'Engineer'}
--------------------

作業:

題目1:計算圓的面積

  • 任務: 編寫一個名為 calculate_circle_area 的函數,該函數接收圓的半徑 radius 作為參數,并返回圓的面積。圓的面積 = π * radius2 (可以使用 math.pi 作為 π 的值)
  • 要求:函數接收一個位置參數 radius。計算半徑為5、0、-1時候的面積
  • 注意點:可以采取try-except 使函數變得更加穩健,如果傳入的半徑為負數,函數應該返回 0 (或者可以考慮引發一個ValueError,但為了簡單起見,先返回0)。

題目2:計算矩形的面積

  • 任務: 編寫一個名為 calculate_rectangle_area 的函數,該函數接收矩形的長度 length 和寬度 width 作為參數,并返回矩形的面積。
  • 公式: 矩形面積 = length * width
  • 要求:函數接收兩個位置參數 length 和 width。
    • 函數返回計算得到的面積。
    • 如果長度或寬度為負數,函數應該返回 0。

題目3:計算任意數量數字的平均值

  • 任務: 編寫一個名為 calculate_average 的函數,該函數可以接收任意數量的數字作為參數(引入可變位置參數 (*args)),并返回它們的平均值。
  • 要求:使用 *args 來接收所有傳入的數字。
    • 如果沒有任何數字傳入,函數應該返回 0。
    • 函數返回計算得到的平均值。

題目4:打印用戶信息

  • 任務: 編寫一個名為 print_user_info 的函數,該函數接收一個必需的參數 user_id,以及任意數量的額外用戶信息(作為關鍵字參數)。
  • 要求:
    • user_id 是一個必需的位置參數。
    • 使用 **kwargs 來接收額外的用戶信息。
    • 函數打印出用戶ID,然后逐行打印所有提供的額外信息(鍵和值)。
    • 函數不需要返回值

題目5:格式化幾何圖形描述

  • 任務: 編寫一個名為 describe_shape 的函數,該函數接收圖形的名稱 shape_name (必需),一個可選的 color (默認 “black”),以及任意數量的描述該圖形尺寸的關鍵字參數 (例如 radius=5 對于圓,length=10, width=4 對于矩形)。
  • 要求:shape_name 是必需的位置參數。
    • color 是一個可選參數,默認值為 “black”
    • 使用 **kwargs 收集描述尺寸的參數。
    • 函數返回一個描述字符串,格式如下:
    • “A [color] [shape_name] with dimensions: [dim1_name]=[dim1_value], [dim2_name]=[dim2_value], …”如果 **kwargs 為空,則尺寸部分為 “with no specific dimensions.”

?1

import math
def calculate_circle_area(radius):s=math.pi*radius*radiusreturn s
print(f"半徑為5的面積為:{calculate_circle_area(5)}")
print(f"半徑為0的面積為:{calculate_circle_area(0)}")
print(f"半徑為-1的面積為:{calculate_circle_area(-1)}")
半徑為5的面積為:78.53981633974483
半徑為0的面積為:0.0
半徑為-1的面積為:3.141592653589793

2?

def calculate_rectangle_area(length,width):s=length*widthif length<0 or width<0:return 0else:return s
print(f"長為5,寬為3的面積為:{calculate_rectangle_area(5,3)}")
print(f"長為-1,寬為3的面積為:{calculate_rectangle_area(-1,3)}")
長為5,寬為3的面積為:15
長為-1,寬為3的面積為:0

3?

def calculate_average(*args):if not args:return 0total = sum(args)return total / len(args)# 示例用法
print(calculate_average(1, 2, 3))  # 輸出:2.0
print(calculate_average(10, 20, 30, 40))  # 輸出:25.0
print(calculate_average())  # 輸出:0
2.0
25.0
0

4?

def print_user_info(user_id, **kwargs):print(f"用戶ID: {user_id}")for key, value in kwargs.items():print(f"{key}: {value}")print_user_info(1, name="Alice", age=30, email="alice@example.com")
用戶ID: 1
name: Alice
age: 30
email: alice@example.com

5?

def describe_shape(shape_name, color="black", **kwargs):dimensions = []for key, value in kwargs.items():dimensions.append(f"{key}={value}")if dimensions:dimensions_str = ", ".join(dimensions)return f"A {color} {shape_name} with dimensions: {dimensions_str}"else:return f"A {color} {shape_name} with no specific dimensions."print(describe_shape("circle", color="red", radius=5))
print(describe_shape("rectangle", color="blue", width=4, height=6))
A red circle with dimensions: radius=5
A blue rectangle with dimensions: width=4, height=6

@浙大疏錦行

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/81103.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/81103.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/81103.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

紅黑樹:數據世界的平衡守護者

在 C 算法的神秘森林里&#xff0c;紅黑樹是一棵充滿智慧的 “魔法樹”。它既不像普通二叉搜索樹那樣容易失衡&#xff0c;也不像 AVL 樹對平衡要求那么苛刻。作為 C 算法小白&#xff0c;今天就和大家一起深入探索紅黑樹的奧秘&#xff0c;看看它是如何成為數據世界的平衡守護…

【hot100-動態規劃-139.單詞拆分】

力扣139.單詞拆分 本題要求判斷給定的字符串 s 是否可以被空格拆分為一個或多個在字典 wordDict 中出現的單詞,且不要求字典中出現的單詞全部都使用,并且字典中的單詞可以重復使用,這是一個典型的動態規劃問題。 動態規劃思路 定義狀態: 定義一個布爾類型的數組 dp,其中…

ZFile與Cpolar技術結合實現遠程數據實時訪問與集中管理的可行性分析

文章目錄 前言1.關于ZFile2.本地部署ZFile3.ZFile本地訪問測試4.ZFile的配置5.cpolar內網穿透工具安裝6.創建遠程連接公網地址7.固定ZFile公網地址 前言 在信息爆炸的年代&#xff0c;每個現代人都在數字浪潮中扮演著獨特的角色。不論是商務精英、影像創作者還是學術達人&…

Vue2在子組件上使用v-model實現數據的雙向綁定、.sync修飾符

1、v-model 先看示例&#xff1a; //父組件<template><ChildComponent v-model"parentData" /> </template><script> import ChildComponent from ./ChildComponent.vue;export default {components: {ChildComponent},data() {return {pa…

自學嵌入式 day 18 - 數據結構 1

數據結構 相互之間存在一種或多種特定關系的數據元素的集合 1.特定關系&#xff1a; &#xff08;1&#xff09;邏輯結構&#xff1a; ①集合&#xff1a;所有在同一個集合中&#xff0c;關系平等。 ②線性關系&#xff1a;數據和數據之間是一對一的關系。&#xff08;數組…

《Java 大視界——Java 大數據在智能電網分布式能源協同調度中的應用與挑戰》

隨著風電、光伏等分布式能源大規模接入電網&#xff0c;傳統調度系統面臨數據規模激增、響應延遲顯著、多源異構數據融合困難等核心問題。本文聚焦Java生態下的大數據技術體系&#xff0c;深入探討其在智能電網實時監測、負荷預測、資源優化配置等場景中的落地實踐。通過分析Sp…

解密企業級大模型智能體Agentic AI 關鍵技術:MCP、A2A、Reasoning LLMs-MCP大模型上下文解析

解密企業級大模型智能體Agentic AI 關鍵技術&#xff1a;MCP、A2A、Reasoning LLMs-MCP大模型上下文解析 我們首先來看一下 整個MCP的一個基本的一個流程&#xff0c;他解決的一個問題。我們回到這里&#xff0c;他解決的一個問題是什么呢&#xff1f;他解決這個問題就是你的大…

25.5.15

沒有比水題更令人開心的事情了 典型的并查集題目&#xff0c;并查集分為并和查&#xff0c;并就是把有關系的父親根結點設為同一個&#xff0c;查就是在成功構造后對其進行查詢 查通過遞歸實現 if (x f[x])return x; return f[x] find(f[x]); 由于并查集的特點&#xff0…

低損耗高效能100G O Band DWDM 10km光模塊 | 支持密集波分復用

目錄 前言 一、產品概述 100G QSFP28 O Band DWDM 10km光模塊核心特點包括&#xff1a; 二、為何選擇O Band DWDM方案&#xff1f; 1.低色散損耗&#xff0c;傳輸更穩定 2.兼容性強 三、典型應用場景 1.數據中心互聯&#xff08;DCI&#xff09; 2.企業園區/智慧城市組網 3.電信…

CentOS 7 內核升級指南:解決兼容性問題并提升性能

點擊上方“程序猿技術大咖”&#xff0c;關注并選擇“設為星標” 回復“加群”獲取入群討論資格&#xff01; CentOS 7 默認搭載的 3.10.x 版本內核雖然穩定&#xff0c;但隨著硬件和軟件技術的快速發展&#xff0c;可能面臨以下問題&#xff1a; 硬件兼容性不足&#xff1a;新…

計算機視覺----基礎概念、卷積

一、概述 1.計算機視覺的定義 計算機視覺(Computer Vision)是一個跨學科的研究領域,主要涉及如何使計算機能夠通過處理和理解數字圖像或視頻來自動進行有意義的分析和決策。其目標是使計算機能夠從視覺數據中獲取高層次的理解,類似于人類的視覺處理能力。 具體來說,計算機…

2025認證杯數學建模第二階段C題:化工廠生產流程的預測和控制,思路+模型+代碼

2025認證杯數學建模第二階段思路模型代碼&#xff0c;詳細內容見文末名片 一、探秘化工世界&#xff1a;問題背景大揭秘 在 2025 年 “認證杯”數學中國數學建模網絡挑戰賽第二階段 C 題中&#xff0c;我們一頭扎進了神秘又復雜的化工廠生產流程預測與控制領域。想象一下&…

關于AI人工智能的知識圖譜簡介

人工智能是計算機科學的一個重要領域&#xff0c;旨在理解和構建智能行為。人工智能可以被劃分為多個子領域或分支&#xff0c;包括機器學習、深度學習、自然語言處理&#xff08;Natural Language Processing&#xff0c;NLP&#xff09;、計算機視覺&#xff08;Computer Vis…

巧妙利用redis防爆破

爆破&#xff0c;也就是通過海量的嘗試&#xff0c;最終確定密碼&#xff0c;人們設置密碼具有習慣性&#xff0c;好記、簡單、有象征等&#xff0c;也就有密碼字典一說&#xff0c;但是該字典也是巨量的&#xff0c;但是相對于各種字母符號等組合就顯得輕量非常多 在Java Spr…

Uniapp開發鴻蒙購物項目教程之樣式選擇器

大家好&#xff0c;今天依然為大家帶來鴻蒙跨平臺開發教程的分享&#xff0c;我們本系列的教程最終要做一個購物應用&#xff0c;通過這個項目為大家分享uniapp開發鴻蒙應用從配置開發環境到應用打包上架的完成過程。 昨天的文章實現了應用首頁的輪播圖&#xff0c;其中涉及到…

2、ubantu系統配置OpenSSH | 使用vscode或pycharm遠程連接

1、OpenSSH介紹 OpenSSH&#xff08;Open Secure Shell&#xff09;是一套基于SSH協議的開源工具&#xff0c;用于在計算機網絡中提供安全的加密通信。它被廣泛用于遠程系統管理、文件傳輸和網絡服務的安全隧道搭建&#xff0c;是保護網絡通信免受竊聽和攻擊的重要工具。 1.1…

Leetcode刷題 | Day63_圖論08_拓撲排序

一、學習任務 拓撲排序代碼隨想錄 二、具體題目 1.拓撲排序117. 軟件構建 【題目描述】 某個大型軟件項目的構建系統擁有 N 個文件&#xff0c;文件編號從 0 到 N - 1&#xff0c;在這些文件中&#xff0c;某些文件依賴于其他文件的內容&#xff0c;這意味著如果文件 A 依…

uniapp中vue3和pinia安裝依賴npm install失敗

目錄 一、問題描述 二、問題原因 三、問題解析及解決方案 一、問題描述 用uni-app開發小程序的時候&#xff0c;使用了vue3pinia,安裝依賴的時候發現vue和pinia的版本問題&#xff0c;安裝失敗&#xff0c; npm ERR! code ERESOLVE npm ERR! ERESOLVE could not resolve np…

2025認證杯第二階段數學建模B題:謠言在社交網絡上的傳播思路+模型+代碼

2025認證杯數學建模第二階段思路模型代碼&#xff0c;詳細內容見文末名片 一、引言 在當今數字化時代&#xff0c;社交網絡已然成為人們生活中不可或缺的一部分。信息在社交網絡上的傳播速度猶如閃電&#xff0c;瞬間就能觸及大量用戶。然而&#xff0c;這也為謠言的滋生和擴…

【C#】Thread.Join()、異步等待和直接join

JogThread.Join() 是 .NET 中 System.Threading.Thread 類的一個方法&#xff0c;用來讓當前調用線程暫停執行&#xff0c;直到目標線程&#xff08;這里是 JogThread&#xff09;終止為止。以下是它的核心語義和你在 UI 代碼里需要注意的幾個相關知識點。 1. Thread.Join() 的…