函數的創建和調用

自學python如何成為大佬(目錄):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm=1001.2014.3001.5501

提到函數,大家會想到數學函數吧,函數是數學最重要的一個模塊,貫穿整個數學學習過程。在Python中,函數的應用非常廣泛。在前面我們已經多次接觸過函數。例如,用于輸出的print()函數、用于輸入的input()函數及用于生成一系列整數的range()函數,這些都是Python內置的標準函數,可以直接使用。除了可以直接使用的標準函數外,Python還支持自定義函數。即通過將一段有規律的、重復的代碼定義為函數,來達到一次編寫、多次調用的目的。使用函數可以提高代碼的重復利用率。

1??創建一個函數

創建函數也稱為定義函數,可以理解為創建一個具有某種用途的工具。使用def關鍵字實現,具體的語法格式如下:

def functionname([parameterlist]):

??? ['''comments''']

??? [functionbody]

參數說明:

l??functionname:函數名稱,在調用函數時使用。

l??parameterlist:可選參數,用于指定向函數中傳遞的參數。如果有多個參數,各參數間使用逗號“,”分隔。如果不指定,則表示該函數沒有參數,在調用時也不指定參數。

注意:即使函數沒有參數,也必須保留一對空的“()”,否則將顯示如圖1所示的錯誤提示對話框。

圖1??語法錯誤對話框

l??'''comments''':可選參數,表示為函數指定注釋,注釋的內容通常是說明該函數的功能、要傳遞的參數的作用等,可以為用戶提供友好提示和幫助的內容。

說明:在定義函數時,如果指定了'''comments'''參數,那么在調用函數時,輸入函數名稱及左側的小括號時,就會顯示該函數的幫助信息,如圖2所示。這些幫助信息就是通過定義的注釋提供的。

圖2??調用函數時顯示友好提示

注意:如果在輸入函數名和左側括號后,沒有顯示友好提示,那么就檢查函數本身是否有誤,檢查方法可以是在未調用該方法時,先按下快捷鍵<F5>執行一遍代碼。

l??functionbody:可選參數,用于指定函數體,即該函數被調用后,要執行的功能代碼。如果函數有返回值,可以使用return語句返回。

注意:函數體“functionbody”和注釋“'''comments'''”相對于def關鍵字必須保持一定的縮進。

說明:如果想定義一個什么也不做的空函數,可以使用pass語句作為占位符。

例如,定義一個過濾危險字符的函數filterchar(),代碼如下:

def?filterchar(string):

????'''功能:過濾危險字符(如黑客),并將過濾后的結果輸出

?????? about:要過濾的字符串

???????沒有返回值

?????? '''

????import?re???????????????????????????????????????#?導入Python的re模塊

????pattern =?r'(黑客)|(抓包)|(監聽)|(Trojan)'??????#?模式字符串

????sub = re.sub(pattern,?'@_@', string)???????????#?進行模式替換

????print(sub)

運行上面的代碼,將不顯示任何內容,也不會拋出異常,因為filterchar()函數還沒有被調用。

2??調用函數

調用函數也就是執行函數。如果把創建的函數理解為創建一個具有某種用途的工具,那么調用函數就相當于使用該工具。調用函數的基本語法格式如下:

functionname([parametersvalue])

參數說明:

l??functionname:函數名稱,要調用的函數名稱必須是已經創建好的。

l??parametersvalue:可選參數,用于指定各個參數的值。如果需要傳遞多個參數值,則各參數值間使用逗號“,”分隔。如果該函數沒有參數,則直接寫一對小括號即可。

例如,調用在6.1.1小節創建的filterchar()函數,可以使用下面的代碼:

about =?'我是一名程序員,喜歡看黑客方面的圖書,想研究一下Trojan。'

filterchar(about)

調用filterchar()函數后,將顯示如圖3所示的結果。

圖3??調用filterchar()函數的結果

場景模擬:第4章的實例01實現了每日一帖功能,但是這段代碼只能執行一次,如果想要再次輸出,還需要再重新寫一遍。如果把這段代碼定義為一個函數,那么就可以多次顯示每日一帖了。

圖標 (35)

??實例01??輸出每日一帖(共享版)

在IDLE中創建一個名稱為function_tips.py的文件,然后在該文件中創建一個名稱為function_tips的函數,在該函數中,從勵志文字列表中獲取一條勵志文字并輸出,最后再調用函數function_tips(),代碼如下:

def?function_tips():

????'''功能:每天輸出一條勵志文字

??? '''

????import?datetime?????????????????????????????????????#?導入日期時間類

??? #?定義一個列表

????mot = ["今天星期一:\n堅持下去不是因為我很堅強,而是因為我別無選擇",

???????????"今天星期二:\n含淚播種的人一定能笑著收獲",

???????????"今天星期三:\n做對的事情比把事情做對重要",

???????????"今天星期四:\n命運給予我們的不是失望之酒,而是機會之杯",

???????????"今天星期五:\n不要等到明天,明天太遙遠,今天就行動",

???????????"今天星期六:\n求知若饑,虛心若愚",

???????????"今天星期日:\n成功將屬于那些從不說“不可能”的人"]

??? day = datetime.datetime.now().weekday()???????????#?獲取當前星期

????print(mot[day])????????????????????????????????????#?輸出每日一帖

# *****************************調用函數***********************************#

function_tips()???????????????????????????????????????#?調用函數

運行結果如圖4所示。

圖4??調用函數輸出每日一帖

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

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

相關文章

深入解析 YOLOv8 中的 `conv.py`(代碼圖文全解析-下)

&#x1f60e; 作者介紹&#xff1a;我是程序員行者孫&#xff0c;一個熱愛分享技術的制能工人。計算機本碩&#xff0c;人工制能研究生。公眾號&#xff1a;AI Sun&#xff0c;視頻號&#xff1a;AI-行者Sun &#x1f388; 本文專欄&#xff1a;本文收錄于《yolov8》系列專欄&…

【linux軟件基礎知識】與調度相關的進程描述符

進程描述符 每個進程描述符都包括幾個與調度相關的字段,如下代碼所示: //include/asm-arm/thread_info.h /** low level task data that entry.S needs immediate access to.* __switch_to() assumes cpu_context follows immediately after cpu_domain.*/ struct thread_in…

vite為什么速度快

原因 vite快的原因是因為 vite在開發環境中是使用的 esbuild&#xff0c;esbuild 是 go 寫的&#xff0c;go 編譯型語言、多線程&#xff0c;nodejs 解釋型語言、單線程&#xff0c;并且 vite 使用了原生 esm 導入的&#xff0c;所以快一點&#xff0c;當然&#xff0c;這也…

6.1Java方法

1、方法定義&#xff1a; 方法是一種語法結構&#xff0c;它可以把一段代碼封裝成一個功能&#xff0c;以便重復調用 方法的完整格式&#xff1a; 修飾符 返回類型 方法名(形參列表){ 方法體代碼(需要執行的功能代碼) return 返回值; } package com.define;public class …

【緩存】框架層常見問題和對策

緩存是為了加快讀寫速度&#xff0c;再了解redis這類框架層的緩存應用之前&#xff0c;我們不妨先思考下操作系統層面的緩存解決方案&#xff0c;這樣有助于我們更深的理解緩存&#xff0c;哪些是系統層面的&#xff0c;哪些是服務層面。 以下是一些常見的緩存問題及其解決方案…

面向對象編程 (OOP):深入理解繼承、多態和抽象

1. 簡介 面向對象編程 (OOP) 是一種強大的編程范式&#xff0c;它通過將程序組織成對象的集合來簡化軟件設計和開發。與傳統的程序設計方法相比&#xff0c;OOP 提供了一種更自然、更易于理解和維護的方式來構建復雜的軟件系統。OOP 的核心概念包括&#xff1a;對象、類、繼承、…

Java進階學習筆記31——日期時間

Date&#xff1a; 代表的是日期和時間。 分配Date對象并初始化它以表示自標準基準時間&#xff08;稱為紀元&#xff09;以來的指定毫秒數&#xff0c;即1970年1月1日00:00:00。 有參構造器。 package cn.ensource.d3_time;import java.util.Date;public class Test1Date {pu…

linux C/C++靜態庫制作

概念&#xff1a;程序在編譯時會把庫文件的二進制代碼鏈接到目標程序中&#xff0c;這種方式稱為靜態鏈接。 如果多個程序中用到了同一靜態庫中的函數或類&#xff0c;就會存在多份拷貝。 特點&#xff1a; 靜態庫的鏈接是在編譯時期完成的&#xff0c;執行的時候代碼加載速度…

Java—異常處理

異常的結構圖 異常知識點 異常分類&#xff1a; 按照在程序編譯階段是否被檢查&#xff0c;異常分為編譯時異常&#xff08;Checked Exception&#xff09;和運行時異常&#xff08;Unchecked Exception&#xff09;。編譯時異常是指必須進行顯式處理的異常&#xff0c;例如IOE…

【Linux】寫一個日志類

文章目錄 1. 源代碼2. 函數功能概覽3. 代碼詳細解釋3.1 頭文件和宏定義3.2 Log類定義3.3 打印日志的方法3.4 操作符重載和析構函數3.5 可變參數函數的原理 4. 測試用例 1. 源代碼 下面代碼定義了一個 Log 類&#xff0c;用于記錄日志信息。這個類支持將日志信息輸出到屏幕、單…

Java擴展機制:SPI與Spring.factories詳解

一、SPI SPI全稱Service Provider Interface,是Java提供的一套用來被第三方實現或者擴展的API,它可以用來啟用框架擴展和替換組件。 整體機制圖如下: Java SPI 實際上是“基于接口的編程+策略模式+配置文件”組合實現的動態加載機制。 系統設計的各個抽象,往往有很多不…

戴爾科技:一盆冷水澆醒了AIPC

這年頭&#xff0c;只要沾上英偉達的公司&#xff0c;不論美股還是大A,都跟著雞犬升天幾輪過&#xff0c;但昨晚英偉達蒸發1064億美元&#xff0c; 跟著遭罪的也不少&#xff0c;有沒有一夜驚魂夢醒的感覺&#xff1f; 今天我們來說說——戴爾科技。 昨晚戴爾科技大跌5.18%&a…

5G無線標準演進綜述及新技術引入

摘 要 隨著經濟和社會的發展&#xff0c;5G業務越來越豐富多彩&#xff0c;1080P高清視頻、裸眼3D、網聯汽車、云手機等新業務、新終端對網絡的要求也越來越高&#xff1b;另一方面&#xff0c;5G標準持續演進&#xff0c;在MIMO、載波聚合、移動性管理、uRLLC、切片、定位等方…

你了解MySQL分區表嗎?知道哪些情況不適用分區表嗎?

一、分區表的使用 簡單來說,分區表就是把物理表結構相同的幾張表,通過一定算法,組成一張邏輯大表。這種算法叫“分區函數”,當前 MySQL 數據庫支持的分區函數類型有 RANGE、LIST、HASH、KEY、COLUMNS。 無論選擇哪種分區函數,都要指定相關列成為分區算法的輸入條件,這些列…

ESP32開發筆記

ESP32 學習筆記 MQTT5 共享訂閱 什么是共享訂閱&#xff1f; 在普通的訂閱中&#xff0c;每發布一條消息&#xff0c;所有匹配的訂閱端都會收到該消息的副本。然而&#xff0c;當某個訂閱端的消費速度無法跟上消息的生產速度時&#xff0c;我們無法將其中一部分消息分流到…

`nano` 文本編輯器快捷鍵使用

在 nano 文本編輯器中&#xff0c;可以幫助用戶高效編輯文本&#xff0c;下面是每個快捷鍵的詳細解釋&#xff1a; 常用快捷鍵 ^G: Help - 顯示幫助信息。這里的 ^ 代表 Ctrl 鍵&#xff0c;因此 ^G 就是 Ctrl G。^O: Write Out - 保存文件。^O 即 Ctrl O&#xff0c;用于將…

模仿庫實現priority_queue

1 priority_queue 1.1 概念 優先級隊列&#xff0c;一種大/小堆(默認為大堆) 1.2 大堆和小堆 一種完全二叉樹&#xff0c;大堆根節點一定比子字節大 小堆根節點一定比子字節小 向下調整 從根節點開始比較與子節點的大小不斷向下 向上調整 找到最后一個非葉子節點&#xf…

mac多媒體影音庫:Emby for Mac 中文版

Emby軟件是一款功能強大的媒體服務器軟件&#xff0c;旨在為用戶提供豐富的多媒體體驗。以下是關于Emby軟件的詳細介紹&#xff1a; 下載地址&#xff1a;https://www.macz.com/mac/7964.html?idOTI2NjQ5Jl8mMjcuMTg2LjE1LjE4Mg%3D%3D 主要功能 媒體管理&#xff1a;Emby允許用…

代碼隨想錄-Day25

216.組合總和III 找出所有相加之和為 n 的 k 個數的組合&#xff0c;且滿足下列條件&#xff1a; 只使用數字1到9 每個數字 最多使用一次 返回 所有可能的有效組合的列表 。該列表不能包含相同的組合兩次&#xff0c;組合可以以任何順序返回。 示例 1: 輸入: k 3, n 7 輸…

Python OCR 圖片轉文字進階:讀光OCR之行檢測模型+行識別模型

Python OCR 圖片轉文字進階&#xff1a;讀光OCR之行檢測模型行識別模型 介紹阿里云文字識別OCR&#xff08;讀光OCR&#xff09;前置條件模型1&#xff1a;行檢測模型模型1&#xff1a;行識別模型 代碼&#xff1a;main.py 介紹 什么是OCR&#xff1f; OCR是“Optical Charac…