python函數

来源:https://www.cnblogs.com/mml-blog/archive/2019/03/22/10581054.html
-Advertisement-
Play Games

一、函數引入 與數學中的函數不同,在Python中,函數不是看上去冰冷無聊的規則和公式,而是有實打實的、有自己作用的代碼。比如說當我們需要實現“列印”這個功能,我們會用到print();當我們需要實現“獲取數據長度”這個功能,我們會要到len()。這些都是設定好了,可以直接拿過來就用的功能,這就叫做 ...


一、函數引入

   與數學中的函數不同,在Python中,函數不是看上去冰冷無聊的規則和公式,而是有實打實的、有自己作用的代碼。比如說當我們需要實現“列印”這個功能,我們會用到print();當我們需要實現“獲取數據長度”這個功能,我們會要到len()。這些都是設定好了,可以直接拿過來就用的功能,這就叫做“組織好的代碼”。函數(Function)能實現的功能從簡單到複雜,各式各樣,但其本質是相通的:“喂”給函數一些數據,它就能內部消化,給你“吐”出你想要的東西。這就像自動販賣機,只不過販賣機是喂點錢,吐出來一些吃的喝的用的東西;而Python函數則是喂各種各樣的數據,吐出來各種各樣的功能。

二、常用python函數

你會發現圖片里的函數後面都跟了個括弧。而括弧里放的東西,也就是我們需要輸入的數據,它在函數中被稱作【參數】。【參數】指向的是函數要接收、處理怎樣的數據。

比如print()函數的括弧里可以放不同的參數,根據你放的參數不同,print()函數會幫你在屏幕上顯示不同的內容。

三、函數的格式

1、函數的概念:

函數是組織好的、可以重覆使用,用來實現單一功能的代碼

(還是用販賣機來打比方,販賣機是設定好可以直接使用(組織好的),可以重覆上架售賣不同的物品(重覆使用),功能是賣東西(單一功能)。

而函數呢?以print()函數為例,它也是設定好可以直接使用(組織好的),不論你想列印什麼參數都可以(重覆使用),而print函數能實現的單一功能就是“列印”。

2、定義和調用函數

1)定義函數的語法

舉例:

定義一個打招呼的函數


說明:(打招呼的英文是greet,你寫say_hello或別的也行,其實理論上你隨便起什麼都可以,但別人也看得懂是最好的啦。)
解讀函數
第1行:def的意思是定義(define),greet是【函數名】(自己取的),再搭配一個括弧和冒號,括弧裡面的name是參數(參數名也是自己取)。
第2行:def下一行開始縮進的代碼是函數要實現的功能,也叫【函數體】。這裡的函數體展現出的功能就是:列印出“name+ 早上好”這句話。
第3行:一個簡單的return。函數內部一旦遇到return語句,就會停止執行並返回結果。沒有return語句的函數,Python也會在末尾隱性地加上return None,即返回None值(return None可以簡寫為return。)所以你也會看到,我們接下來的很多例子是省略了return語句的。
函數註意事項
1、#函數名:最好是取體現函數功能的名字,一般用小寫字母和單下劃線、數字等組合

def greet(name):
2、#參數:根據函數功能,括弧里可以有多個參數,也可以不帶參數,命名規則與函數名相同
3、#規範:括弧是英文括弧,後面的冒號不能丟
    print(name+'早上好')
4、#函數體:函數體就是體現函數功能的語句,要縮進,一般是四個空格
 3、函數實踐    1)有入參       def pika2(name):
    print('我最喜愛的神奇寶貝是'+name)
   2)沒有入參
def pika1():
    print('我最喜愛的神奇寶貝是皮卡丘')
3)有多個入參 def pika3(name,person): print('我最喜愛的神奇寶貝是'+name) print('我最喜愛的馴獸師是'+person)

四、函數調用
1、舉例:


通過這個例子,我們明白調用函數最關鍵的是:得弄清楚這個函數有多少個參數,如何給參數賦值,這個過程在函數里叫做參數的傳遞(pass)。
但函數的作用遠不僅如此,它能將複雜的語句和功能統一封裝進一個函數名里,調用者只需明白函數能實現什麼,根據需要傳遞參數即可。
2、函數的參數類型
主要的參數類型有:位置參數、預設參數、不定長參數。我會用一個案例把這些參數串起來。
1)位置參數

def menu(appetizer,course):

    print('一份開胃菜:'+appetizer)
    print('一份主食:'+course+'\n')
    #還記得轉義字元\n吧,表示換行

   menu('牛肉拉麵','話梅花生')
   menu('話梅花生','牛肉拉麵')

#如果採用下麵這種形式傳遞,就不需要理會參數位置
   menu(course='牛肉拉麵',appetizer='話梅花生')


2)預設參數:

#因為已經預設將'綠豆沙'傳遞給dessert,調用時無須再傳遞。
預設參數是可以改變的
如下

def menu(appetizer,course,dessert='綠豆沙'):
print('一份開胃菜:'+appetizer)
print('一份主食:'+course)
print('一份甜品:'+dessert)

menu('話梅花生','牛肉拉麵')
menu('話梅花生','牛肉拉麵','銀耳羹')
#銀耳羹對應參數dessert

3、不定長參數

盛夏來襲,你覺得賣燒烤是個不錯的主意。但問題是每個人點的烤串數量都不同,你也不能限定死數量,這時候【不定長參數】就能派上用場,即不確定傳遞參數的數量。

它的格式比較特殊,是一個星號*加上參數名,來看下麵的例子
你會發現輸出的是這樣的結果:('烤雞翅', '烤茄子', '烤玉米'),這種數據類型叫做元組(tuple)
預設參數也需要放在不定長參數的後面
上面的函數可以寫成:


五、return語句  1、返回單個參數

 

2、返回多個參數

返回的是('李若彤的臉蛋', '林志玲的身材')這樣一個元組,對不對?又是元組。
事實上,Python語言中的函數返回值可以是多個,而其他語言都不行,這是Python相比其他語言的簡便和靈活之處。一次接受多個返回值的數據類型就是元組。
最後需要再強調的是,沒有return語句的函數會預設返回None值。
return還有一個“副作用”:一旦函數內部遇到return語句,就會停止執行並返回結果。


3、總結return


六、變數作用域

  第一點:在一個函數內定義的變數僅能在函數內部使用(局部作用域),它們被稱作【局部變數】。

  第二點:在所有函數之外賦值的變數,可以在程式的任何位置使用(全局作用域),它們叫【全局變數】

第一個輸出為 88,第二個x為99
註意:
雖然變數的名字相同(都是x),但因為全局變數和局部變數處在不同的“作用域”中,所以它們彼此井水不犯河水,都能列印出相應的結果。
但為了讓程式更易讀以及避免可能會出現的麻煩,建議局部變數和全局變數【不要】取相同的名字,以免混淆。
你可以將定義的函數想象成一個私人房間,所以裡面存數據的容器(變數)是私有的,只能在個人的房間里使用;而在函數外存數據的變數是公用的,沒有使用限制。
全局作用域中的代碼中也不能使用任何局部變數,在函數內部的局部作用域,是可以訪問全局變數的。

局部變數轉換為全局變數
global






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

-Advertisement-
Play Games
更多相關文章
  • 一、安裝nginx 1、安裝前提 a)epoll,linux內核版本為2.6或者以上 b)gcc編譯器,g++編譯器 c)pcre庫,函數庫,支持解析正則表達式 d)zlib庫:壓縮解壓功能 e)openssl庫:ssl功能相關庫,用於網站加密通訊 2、nginx源碼下載以及目錄結構簡單認識 ngi ...
  • 正向代理: 客戶端的代理; 反向代理: 服務端的代理; ...
  • 一、使用 asyncio 總結 最近在公司的一些項目中開始慢慢使用python 的asyncio, 使用的過程中也是各種踩坑,遇到的問題也不少,其中有一次是記憶體的問題,自己也整理了遇到的問題以及解決方法詳細內容看:https://www.syncd.cn/article/memory_trouble ...
  • 今日學習內容: 一、基本數據類型及內置方法 1、數字類型 2、字元串類型 3、列表類型 今天學習的內容比較細比較雜,需要一點一點嚼爛慢慢消化,別急,加油!ヾ(◍°∇°◍)ノ゙ 一、可變不可變類型: 可變類型:值改變,id不變,也就是說在不改變id的情況下可以改變值,id地址不變。就是可變類型。 不可 ...
  • 1.位元組流 1.1 位元組輸入流【inputStream】 java.io.InputStream 抽象類是表示位元組輸入流的所有類的超類,可以讀取位元組信息到記憶體中。 它定義了位元組輸入流的基本共性功能方法。 public void close() :關閉此輸入流並釋放與此流相關聯的任何系統資源。 pub ...
  • Python誕生至今 python的創始人為吉多·範羅蘇姆(Guido van Rossum)荷蘭人,1989年的聖誕節期間,吉多·範羅蘇姆為了在阿姆斯特丹打發時間,決心開發一個新的腳本解釋程式,作為ABC語言的一種繼承。Python是一種面向對象的解釋型電腦程式設計語言,第一個公開發行版發行於1 ...
  • 作用於數組的函數: 通用函數:函數基於元素的,以單元方式作用於數組的,返回的是與原數組具有相同形狀的數組。 不通用函數(數組函數):函數能以行或者列的方式作用於整個矩陣;如果沒有提供任何參數時,它們將作用於整個矩陣。例如:max、sum和min等函數 例如:A=array([[1,2,3,4],[5 ...
  • C++編譯過程 1 #include <iostream> 2 //iostream 提供了一個叫命名空間的東西,標準的命名空間是std 包含了有關輸入輸出語句的函數 3 // input&^output 4 //stream 流 5 //命名空間 6 using namespace std; 7 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...