python打卡day26

函數、參數、變量

知識點回顧:

  1. 函數的定義
  2. 變量作用域:局部變量和全局變量
  3. 函數的參數類型:位置參數、默認參數、不定參數
  4. 傳遞參數的手段:關鍵詞參數
  5. 傳遞參數的順序:同時出現三種參數類型時
def function_name(parameter1, parameter2, ...):"""Docstring: 描述函數的功能、參數和返回值 (可選但強烈推薦)"""# 函數體: 實現功能的代碼# ...return value # 可選,用于返回結果

函數的基本寫法如上,注意冒號、縮進、三引號包起來的注釋,函數的參數我們有如下稱呼:

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

但是形參/實參還有更具體的參數類型:

  • 位置參數 (Positional Arguments): 調用時按順序匹配,也可以說是普通形參
  • 默認參數值 (Default Parameter Values): 定義函數時給參數指定默認值,調用時如果未提供該參數,則使用默認值? ? ??注意點:帶默認值的參數必須放在沒有默認值的參數之后
  • 可變數量參數 (*args 和 **kwargs):

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

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

Python?先用傳的參數按順序填滿普通參數,如果還有剩下的位置參數,全部塞進?*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 寸的比薩,配料如下:
- 原味 (無額外配料)

Python?先處理所有位置參數(包括普通參數和*args),把能匹配普通參數名的關鍵字參數用掉,剩下的所有 參數名=值 都塞進?**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': '小提琴'}

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

假設一個復雜的繪圖函數
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") # 非常清晰

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

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

收獲心得:

還有幾道作業就沒放上來了,說實話大部分概念都是之前接觸C或者C++見過并且熟知的,就是*args 和 **kwargs需要稍微注意一下

@浙大疏錦行

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

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

相關文章

LeetCode 熱題 100 437. 路徑總和 III

LeetCode 熱題 100 | 437. 路徑總和 III 大家好,今天我們來解決一道經典的二叉樹問題——路徑總和 III。這道題在 LeetCode 上被標記為中等難度,要求計算二叉樹中節點值之和等于給定目標值 targetSum 的路徑數目。 問題描述 給定一個二叉樹的根節點 ro…

vue3學習-局部使用vue框架案例

目錄 局部使用vue框架步驟 簡單案例1 簡單案例2【 結構化賦值語法】 簡單案例3【使用模塊化開發模式】 基本數據的簡單應用,對象的簡單應用 數組的簡單應用 局部使用vue框架步驟 1 引用 vue框架的核心文件和 涉及ES6語法的文件 注意:這里文件&am…

初識Linux · IP分片

目錄 前言: IP分片 分片vs不分片 如何分片 分片舉例 三個字段 前言: 前文IP協議上和IP協議下我們已經把IP協議的報頭的大多數字段介紹了,唯獨有三個字段現在還有介紹,即16位標識,8位協議,13位片偏移…

u3d 定義列表詳細過程

層級結構 - Canvas - Scroll View - Viewport - Content (Vertical Layout Group) - Item1 (Prefab) - Item2 (Prefab) ... 詳細設置步驟 1. 創建 Canvas 2. 添加 Scroll View 組件 3. 在 Scroll View 下創建 Content 子對象 4. 添加 …

產品方法論與 AI Agent 技術的深度融合:從決策智能到價值創造

一、引言:智能化時代的產品范式革命 在數字化轉型的深水區,產品開發正經歷著從 “功能定義” 到 “體驗設計” 再到 “智能演化” 的范式躍遷。麥肯錫 2024 年報告指出,采用 AI 驅動產品方法論的企業,新品研發周期平均縮短 40%&a…

力扣.1471數組的k個最強值,力扣.1471數組的k個最強值力扣1576.替換所有的問號力扣1419.數青蛙?編輯力扣300.最長遞增子序列

目錄 力扣.1471數組的k個最強值 力扣1576.替換所有的問號 力扣1419.數青蛙?編輯 力扣300.最長遞增子序列 力扣.1471數組的k個最強值 class Solution {public static int[] getStrongest(int[] arr,int k) {if(karr.length){return arr;}int []retnew int[k];int narr.lengt…

使用docker安裝clickhouse集群

1、簡介 clickhouse 作為大數據場景中,實現快速檢索的常用列式存儲數據庫,采用物理機部署,會在數據量大的場景中,物理機器存儲達到閾值需要擴容,會帶來比較大的問題,因此,使用docker部署clickho…

package-lock.json能否直接刪除?

package-lock.json能否直接刪除? package-lock.json 生成工具:由 npm 自動生成。 觸發條件:當運行 npm install 時,如果不存在 package-lock.json,npm 會創建它;如果已存在,npm 會根據它精確安…

如何在 Windows 命令提示符中創建多個文件夾和多個文件

如何在 Windows 命令提示符中創建多個文件夾和多個文件 雖然大多數用戶習慣使用 Windows 圖形界面來創建文件夾,但如果你需要一次性創建多個文件夾或文件,如同在類Unix系統中可以使用mkdir和touch命令一樣,windows下也有創建目錄和文件的對應…

leetcode - 滑動窗口問題集

目錄 前言 題1 長度最小的子數組: 思考: 參考代碼1: 參考代碼2: 題2 無重復字符的最長子串: 思考: 參考代碼1: 參考代碼2: 題3 最大連續1的個數 III: 思考&am…

Ubuntu20.04下如何源碼編譯Carla,使用UE4源碼開跑,踩坑集合

一、簡介 作為一個從事算法研究的人員,無人駕駛仿真一直是比較重要的一部分,但是現在比較常見的算法驗證都是在carla這個開源仿真平臺上做的,所以我有二次開發carla的需求,今天就來講講編譯CARLA。 網上的教材很多,但還是推薦大家看官網教程:Linux build - CARLA Simul…

Linux云計算訓練營筆記day09(MySQL數據庫)

Linux云計算訓練營筆記day09(MySQL數據庫) 目錄 Linux云計算訓練營筆記day09(MySQL數據庫)外鍵約束數據的導入和導出數據的導出數據的導入 DQL 數據查詢語言查指定字段查所有字段where 過濾條件and 和 orin 和 not inbetween...an…

對心理幸福感含義的探索 | 幸福就是一切嗎?

注:機翻,未校。 Happiness Is Everything, or Is It? Explorations on the Meaning of Psychological Well-Being 幸福就是一切嗎?對心理幸福感含義的探索 Journal of Personality and Social Psychology 1989, Vol. 57, No. 6,1069-1081 …

零基礎學Java——第十一章:實戰項目 - 微服務入門

第十一章:實戰項目 - 微服務入門 隨著互聯網應用的復雜性不斷增加,單體應用(Monolithic Application)在可擴展性、可維護性、技術棧靈活性等方面逐漸暴露出一些問題。微服務架構(Microservices Architecture&#xff…

git 本地提交后修改注釋

dos命令行進入目錄,idea可以點擊Terminal 進入命令行 git commit --amend -m "修改內容"

Python訓練打卡Day22

復習日: 1.標準化數據(聚類前通常需要標準化) scaler StandardScaler() X_scaled scaler.fit_transform(X) StandardScaler() :這部分代碼調用了 StandardScaler 類的構造函數。在Python中,當你在類名后面加上括號…

氣動排渣煤粉爐專用V型球閥——法蘭連接耐磨閥門生產廠家解析-耀圣

氣動排渣煤粉爐專用V型球閥——法蘭連接耐磨閥門生產廠家解析 副標題:開關靈活無泄漏 標配行程開關/電磁閥/過濾器 一、產品概述:氣動排渣煤粉爐專用V型球閥核心優勢 作為專業的氣動耐磨V型球閥生產廠家,我們針對煤粉爐排渣工況研發的法蘭連…

Linux云計算訓練營筆記day08(MySQL數據庫)

Linux云計算訓練營筆記day08(MySQL數據庫) 目錄 Linux云計算訓練營筆記day08(MySQL數據庫)數據準備修改更新update刪除delete數據類型1.整數類型2.浮點數類型(小數)3.字符類型4.日期5.枚舉: 表頭的值必須在列舉的值里選擇拷貝表復…

致遠OA人事標準模塊功能簡介【附應用包百度網盤下載地址,官方售價4W】

人事管理應用,圍繞崗位配置、招聘管理、員工檔案、入轉調離、員工自助申報、數據信息管理等人力資源管理關鍵業務,構建全員可參與的人事工作協同平臺,讓人事從繁雜瑣碎的事務中解脫出來,高質高效工作,讓管理層清楚掌握…

數字孿生工廠實戰指南:基于Unreal Engine/Omniverse的虛實同步系統開發

引言:工業元宇宙的基石技術 在智能制造2025與工業元宇宙的交匯點,數字孿生技術正重塑傳統制造業。本文將手把手指導您構建基于Unreal Engine 5.4與NVIDIA Omniverse的實時數字孿生工廠系統,集成Kafka實現毫秒級虛實同步,最終交付…