Python--初識函數

来源:https://www.cnblogs.com/DoingBe/archive/2018/08/03/9410440.html
-Advertisement-
Play Games

一:定義 對於代碼塊和功能的封裝和定義 二:函數的定義, 函數名, 函數體以及函數的調用 我們使用def關鍵字來定義函數, 函數的定義語法: 函數名的命名規則和變數基本一致, 函數體就是函數被執行之後要執行的代碼 函數名()的形式用來調用函數. 三:函數的返回 return關鍵字會中斷函數,並返回一 ...


一:定義

  對於代碼塊和功能的封裝和定義

二:函數的定義, 函數名, 函數體以及函數的調用

  我們使用def關鍵字來定義函數, 函數的定義語法:

    

def 函數名():
    函數體

  函數名的命名規則和變數基本一致,

  函數體就是函數被執行之後要執行的代碼

  函數名()的形式用來調用函數.

三:函數的返回

  return關鍵字會中斷函數,並返回一個返回值

  關於返回值:

    如果return什什麽都不寫 或者 ⼲乾脆不寫return .那麼返回的就是None
    如果return後⾯面寫了了⼀一個值. 則調⽤用者可以接收⼀一個結果
    如果return後⾯面寫了了多個結果, 則調⽤用者可以接收⼀一個tuple, 調⽤用者可以直接解構成多個變數

四:函數的參數

    

def 函數名(參數):
    函數體

    首先,需要明確兩個概念,形參和實參

      形參:寫在聲明位置的變數叫做形參,它表示形式上的完整,表示這個函數需要xxx

      實參:函數調用的時候傳遞給函數的值,表示給函數xxx

    傳參:將實參交給形參的過程叫做傳參

    4.1 實參的分類

      1.位置參數:傳參時按照位置順序分別將實參傳遞給形參,解釋器預設按照位置傳參.

        

def yue(chat, address, age): # 形參
print("拿出手機")
print("打開"+chat)
print("找個"+address+"附近漂亮的"+str(age)+"歲妹子")
print("約不約")
yue("微信", "北京", 18) # 實參
結果:
拿出手機
打開微信
找個北京附近漂亮的18歲妹子
約不約

      2.關鍵字參數:不按照位置傳參,按照參數名字傳參

      

def yue(chat, address, age):
print("拿出手機")
print("打開"+chat)
print("找個"+address+"附近漂亮的"+str(age)+"歲妹子")
print("約不約")
yue(chat="微信", age=18, address="北北京") # 關鍵字參數.

結果:
拿出手機
打開微信
找個北京附近漂亮的18歲妹子
約不約

      3.混合參數:將上述兩種參數混合使用,但是位置參數必須在關鍵字參數前邊

  

# 混合參數
yue("微信", age=18, address="上海") # 正確.第一個位置賦值給chat, 後面的參數開始指定關鍵字.
yue(age="18", "微信", address="廣州") # 錯誤, 最開始使用了關鍵字參數, 那麼後面的微信的位置就串了, 容易出現混亂

    4.2 形參的分類

      1.位置參數:同實參的位置參數,很容易理解

      2.預設值參數:當這個參數不傳實參的時候,使用預設的值,需要在位置參數的後邊

    

#比如, 我們錄入一個班學生的基本信息. 通過調查發現.大部分學生都是男生. 這個時候就可以給出一個sex='男'的預設值.
def stu_info(name, age, sex=''):
    print("錄入學生信息")
    print(name, age, sex)
    print("錄入完畢")
stu_info("張強", 18)

      3.動態參數

        3.1  動態接受位置參數, 動態參數必須在位置參數之後,在預設值參數之前, *表示接受任意內容

def chi(*food):
    print("我要吃", food)
chi("大米飯", "小米飯")
結果:
我要吃 ('大米飯', '小米飯') # 多個參數傳遞進去. 收到的內容是元組tuple

        3.2 動態接收關鍵字參數,使用** 標誌

 

def func(**kwargs):
    print(kwargs)
func(a=1, b=2, c=3)
func(a=1, b=2)
結果:
{'a': 1, 'b': 2, 'c': 3}
{'a': 1, 'b': 2}

     幾種參數最終的排序:位置參數 > *args > 預設值參數 > **kwargs

    如果想接收所有類型的參數,可以使用def func(*args, **kwargs):的形式,可以接收任何類型的參數,源碼中很多方法都是這種形式.

    4 動態傳參的另一種方式

      

def fun(*args):
    print(args)
lst = [1, 4, 7]
fun(lst[0], lst[1], lst[2])
fun(*lst) # 可以使用*把一個列表按順序打散
s = "臣妾做不到"
fun(*s) # 字元串也可以打散, (可迭代對象)

      在實參位置上給一個序列,列表,可迭代對象前面加個*表示把這個序列按順序打散,在形參的位置上的* 表⽰示把接收到的參數組合成一個元組,如果是一個字典, 那麼也可以打散. 不過需要用兩個*

def fun(**kwargs):
    print(kwargs)
dic = {'a':1, 'b':2}
fun(**dic)

 

          


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

-Advertisement-
Play Games
更多相關文章
  • 自從學習Java開始一直使用的是jdk1.8,聽同事說版本不符要報錯出什麼52的錯誤 周末測試一下。java.lang.UnsupportedClassVersionError Unsupported major.minor version 52.0 出現這個錯誤是編譯時使用的版本高於運行時的版本。 ...
  • 6.1.爬取第一頁的職位信息 第一頁職位信息 6.2.爬取所有頁的職位信息 ...
  • DDOS攻擊的一些基礎知識點在這裡就不再贅述,由於Server端要控制client,所以這裡需要使用argparse,在這裡我們先規定好命令格式:#-H XXX.XXX.XXX.XXX -p xxxx -c<start|stop> -H後面接的是被攻擊主機的IP地址。 -p指定被攻擊的埠號。 -c ...
  • 異常在Java中有兩種分類:Error(OutOfMemoryError之類的我們自己程式無法處理的非常嚴重的錯誤,Java推薦不catch,讓程式隨之崩潰)、Excepiton(NullPointerException之類的並不致命的錯誤,Java覺得indicates conditions th ...
  • StringBuilder用法 StringBuilder str=new StringBuilder(); 和String用法的區別是 string 對象時恆定不變的,stringBuider對象表示的字元串是可變的。 StringBuilder 類提供了很多方法來操作字元串: 包裝類 基本數據類 ...
  • Spring5源碼解析-Spring框架中的單例和原型bean 最近一直有問我單例和原型bean的一些原理性問題,這裡就開一篇來說說的 通過Spring中的依賴註入極大方便了我們的開發。在xml通過<bean>定義(或者通過@Bean在配置類里定義)對象之後,然後只需簡單地使用@Autowired註 ...
  • python中有兩種數據類型:一種是可變數據類型,一種是不可變數據類型 不可變數據類型包括(整型及其他數據類型,字元串及元組) 可變數據類型(列表,集合,字典,類和類實例) 鑒定是否為拷貝還是只是引用計數加1,我們可以用python的內置函數(id())來驗證. 程式運行結果表明s和s1的記憶體地址是 ...
  • 1. Apache Kafka是一個分散式流平臺 1.1 流平臺有三個關鍵功能: 1.2 Kafka通常用於兩大類應用: 1.3 有幾個特別重要的概念: Kafka is run as a cluster on one or more servers that can span multiple d ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...