Python學習日記(八) 函數

来源:https://www.cnblogs.com/Fantac/archive/2019/08/03/11292714.html
-Advertisement-
Play Games

函數的結構: 函數的返回值: 1.當函數執行時運到return關鍵字將不再往下執行 2.當函數不寫return或者return後面不寫值時它的返回值為None 3.當函數return後面寫了一個值怎返回該值 4.當函數後面寫了多個結果則返回一個元祖,可以通過直接使用元祖來獲得多個變數 為什麼返回的是 ...


函數的結構:

 

函數的返回值:

1.當函數執行時運到return關鍵字將不再往下執行

def func():
    print("hello world!")
    print("hello world!")
    return
    print("hello world!")
func()  #hello world!
        #hello world!

2.當函數不寫return或者return後面不寫值時它的返回值為None

def func():
    print("hello world!")
print(func())   # hello world!
                # None                        

3.當函數return後面寫了一個值就返回該值

4.當函數後面寫了多個結果則返回一個元祖,可以通過直接使用元祖來獲得多個變數

def func():
    return 1,5,6,7
values = func()
print(values)   #(1, 5, 6, 7)

為什麼返回的是一個元祖數據?

當打開python解釋器

python自動將逗號分隔的元素組合成一個元祖,元祖、列表、字典可以進行解包

 

函數的參數:

傳參:就是將實際參數傳遞給形式參數的過程

<1>形式參數:在函數體使用的參數變數

  a.位置參數:按照位置從左到右一一對應

  b.預設值參數:給函數參數設定一個預設值,例如當我們調用open函數時我們預設的模式就是mode = 'r',我們就可以省去不寫

def print_info(name,age,sex = 'male'):
    print("{} {} {}".format(name, age,sex))
print_info('Jane',age = 15)  #Jane male 15

預設值也可以在實際參數去修改:

def print_info(name,age,sex = 'male'):
    print("{} {} {}".format(name, age,sex))
print_info('Jane',sex = 'female',age = 15)  #Jane female 15

  陷阱:如果預設參數的值是一個可變數據類型,那麼每一次調用函數的時候,如果不傳值那麼就公用這個數據類型的資源

預設參數為列表:

def func(li = []):
    li.append(2)
    print(li)
func()      #[2]
func()      #[2, 2]
func([])    #[2]
func()      #[2, 2, 2]

預設參數為字典:

def func(dic = {}):
    dic['a'] = 'v'
    print(dic)

func()      #{'a': 'v'}     key是唯一所以每一次都是覆蓋
func()      #{'a': 'v'}
func({})    #{'a': 'v'}
func()      #{'a': 'v'}
def func(k,dic = {}):
    dic[k] = 'v'
    print(dic)
func('a')   #{'a': 'v'}
func('b')   #{'a': 'v', 'b': 'v'
func('c')   #{'a': 'v', 'b': 'v', 'c': 'v'}

  c.動態參數:

    ①動態接收位置參數:*args 接收所有的位置參數,再以元祖的形式賦予args

def sum_data(*args):
    res = 0
    for i in args:
        res += i
    return res
print(sum_data(1,2,3,4,7,8,-10))    #15

    ②動態接收關鍵字參數:**kwargs 接收所有的關鍵字參數,再以字典的形式賦予kwargs

def print_data(**kwargs):
    print(kwargs)
print_data(name='Jane',sex='female',age=22)   #{'name': 'Jane', 'sex': 'female', 'age': 22}

兩種不同類型的動態參數可以一起使用,這樣會大大提升參數擴展性,也解決了大多數實參一一對應的難題

<2>實際參數:在調用函數時使用的參數變數

   a.位置參數:從左到右和形參的位置一一對應 

def print_info(name,sex,age):
    print("{} {} {}".format(name,sex,age))
print_info('Jane','female',15)  #Jane female 15

  b.關鍵字參數:當用於繁雜的數據時,不需要記住參數的位置,只需要記住參數的名字即可

def print_info(name,sex,age):
    print("{} {} {}".format(name, sex, age))
print_info(name='Jane',sex='female',age = 15)  #Jane female 15

  c.混合參數:就是位置參數和關鍵字參數可以混合著使用

  原則:當使用這種寫法就一定要註意位置參數必須要在關鍵字參數之前

def print_info(name,sex,age):
    print("{} {} {}".format(name, sex, age))
print_info('Jane','female',age = 15)  #Jane female 15

 

*的用法:

 


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

-Advertisement-
Play Games
更多相關文章
  • 截取字元串中的數字 1、使用parseInt() 2、使用正則 截取字元串 1、使用split() 2、使用join() 3、使用substring() 4、使用indexOf() 5、使用substr() ...
  • 事件處理程式指的是當 HTML 中發生某些事件時所調用的方法,是 jQuery 中的核心函數。 ...
  • 一、ES6的Set、Map數據結構 Map、Set都是ES6新的數據結構,都是新的內置構造函數,也就是說typeof的結果,多了兩個: Set 是不能重覆的數組 Map 是可以任何東西當做鍵的對象 ES6 提供了新的數據結構 Set。它類似於數組,但是成員的值都是唯一的,沒有重覆的值。 let s ...
  • 一、函數作用域查找1、定義說明1)、函數當前作用域查找不到,可以訪問外層函數作用域的活動對象(參數、局部變數、定義在外層函數體里的函數)2)、外層的外層函數。。。一直到全局 第一條說明:定義在外層函數體里的函數,包括當前函數,當前函數調用自己的時候,就是遞歸調用。 2、原理執行環境、作用域鏈、作用域 ...
  • 問題場景 所謂懸浮窗就是圖中微信圖標的按鈕,採用fixed定位,可拖動和點擊。 這算是一個比較常見的實現場景了。 為什麼要用cover view做懸浮窗?原生組件出來背鍋了~ 最初我做懸浮窗用的不是cover view,而是view。 這是簡化的代碼結構: index.wxml: 一大段test,占 ...
  • 親戚覺得自己家公司的官網不夠吸引人,想換種風格,所以來找我討論,哪種風格更符合自己的公司形象,一個企業的官網就相當於一個人的外在形象,一個人如果長相、打扮、舉止都很優秀就會給人一種被吸引的感覺,相反的話就會讓人不想再看第二眼。當客戶不瞭解這個公司,要不就是親自到店裡瞭解,但是更多的人會選擇在網上搜索 ...
  • Consul和Kong的實踐(一) 這一篇先介紹consul集群,以及consul和應用服務的結合使用,下一篇是和kong網關的結合。 一.Consul的集群安裝 以其中一臺機器為例: 1. mkdir /usr/local/consul 創建consul的安裝目錄 1. cd /usr/local ...
  • 隨著社會的發展和科技水平的不斷提高,互聯網在人們日常生活中扮演著越來越重要的角色,同時網路安全,網路可靠性等問題日益突出。傳統的單體服務架構已不能滿足現代用戶需求。隨之而來的就是各種分散式/集群式的服務架構模式。實現多台服務共同提供服務。最常見的就是Nginx代理技術。 對於用戶的請求到達nginx ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...