跟著廖雪峰學python 005

来源:https://www.cnblogs.com/DJC-Allen/archive/2023/02/19/17134801.html
-Advertisement-
Play Games

​ 函數的調用、定義、參數 ​編輯 #######命名關鍵字參數沒完 abs()函數:絕對值 >>> abs(100) 100 >>> abs(-20) 20 max()函數:接收任意多個參數,並返回最大的那個 >>> max(1, 2) 2 >>> max(2, 3, 1, -5) 3 數據類型轉 ...


 函數的調用、定義、參數 

編輯

 #######命名關鍵字參數沒完

abs()函數:絕對值

>>> abs(100)
100
>>> abs(-20)
20

max()函數:接收任意多個參數,並返回最大的那個

>>> max(1, 2)
2
>>> max(2, 3, 1, -5)
3

數據類型轉換函數:

int():整數

float():浮點型

str():字元型

bool():布爾型

定義函數

def my_abs(x):
    if x >= 0:
        return x
    else:
        return -x

執行到return時,函數就執行完畢,並將結果返回

如果已經把my_abs()的函數定義保存為abstest.py文件了,那麼,可以用from abstest import my_abs來導入my_abs()函數,註意abstest是文件名(不含.py擴展名):

空函數

如果想定義一個什麼也不做的空函數,可以用pass語句:

def nop():
    pass

pass 用來作為占位符,比如沒想好寫什麼函數代碼,可以先放個pass讓整體代碼正常運行

pass也可以用在其他語句

if age >= 18:
    pass

這句缺少pass,代碼就會有語法錯誤

返回多個值

比如在游戲中經常需要從一個點移動到另一個點,給出坐標、位移和角度,就可以計算出新的坐標:

import math  #表示導入math包,並允許後續代碼引用包里的sin、cos等函數


def move(x, y, step, angle=0):
    nx = x + step * math.cos(angle)
    ny = y - step * math.sin(angle)
    return nx, ny

python多值返回就是返回一個tuple

編輯

 函數參數

位置參數

計算_X{}^{2}<span class="cke_reset cke_widget_drag_handler_container"><img src="https://img2023.cnblogs.com/blog/1975815/202302/1975815-20230219151815511-72735130.gif" width="15" height="15" class="cke_reset cke_widget_drag_handler" title="點擊並拖拽以移動" data-cke-widget-drag-handler="1" data-mce-src="https://img2023.cnblogs.com/blog/1975815/202302/1975815-20230219151815511-72735130.gif"><span class="cke_image_resizer" title="點擊並拖拽以改變尺寸">​<span class="cke_widget_edit_container" title="編輯圖片">編輯的函數:

def power(x):
    return(x*x)

計算^{X_{}^{n}}<span class="cke_reset cke_widget_drag_handler_container"><img src="https://img2023.cnblogs.com/blog/1975815/202302/1975815-20230219151815511-72735130.gif" width="15" height="15" class="cke_reset cke_widget_drag_handler" title="點擊並拖拽以移動" data-cke-widget-drag-handler="1" data-mce-src="https://img2023.cnblogs.com/blog/1975815/202302/1975815-20230219151815511-72735130.gif"><span class="cke_image_resizer" title="點擊並拖拽以改變尺寸">​<span class="cke_widget_edit_container" title="編輯圖片">編輯的函數:

def power(x, n):
    s = 1
    while n > 0:
        s = s * x
        n = n - 1
    return x

x和n都是位置參數,調用函數時,傳入的兩個值按照位置順序依次賦給參數x和n

把第二個參數n的預設值設定為2:

def power(x, n = 2):
    s = 1
    while n > 0:
        s = s * x
        n = n - 1
    return x

此時,power(5)和power(5,2)等價

若n>2,就必須明確地傳入n,比如power(5,3)

註意:

必選參數在前,預設參數在後,否則Python的解釋器會報錯(容易產生歧義)

當函數有多個參數時,把變化大的參數放在前面,預設參數放在後面(降低調用函數的難度)

如:

def enroll(name, gender, age=6, city='Beijing'):
    print('name:', name)
    print('gender:', gender)
    print('age:', age)
    print('city:', city)

大多數學生註冊時不需要提供年齡和城市,只提供必須地兩個參數即可

enroll('Bob', 'M', 7)
enroll('Adam', 'M', city='Tianjin')

編輯

可變參數

傳入的參數個數是可以變的

如:給一組數字,計算平方和(作為一個list或tuple傳進來)

def calc(numbers):
    sum = 0
    for n in nmumbers:
        sum = sum + n * n
    return sum

若函數參數為可變參數:

def calc(*numbers):
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum

定義可變參數和定義一個list或tuple參數相比,只是在參數前面加一個 * 號,參數numbers接收到的是一個tuple。調用該函數時,可以傳入任意個參數,包括0個參數

 關鍵參數:

 關鍵字參數允許你傳入0個或任意個含參數名的參數:

def person(name, age, **kw):
    print('name:', name, 'age:', age, 'other:', kw)

也可以傳入任意個數的關鍵字參數:

>>> person('Michael', 30)
name: Michael age: 30 other: {}
>>> person('Bob', 35, city='Beijing')
name: Bob age: 35 other: {'city': 'Beijing'}
>>> person('Adam', 45, gender='M', job='Engineer')
name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}

關鍵參數可以擴展函數功能。比如,person函數name和age兩個參數是必選項,但如果提供更多的參數就需要利用關鍵字參數

可以把字典轉換為關鍵字參數傳進去:

>>> extra = {'city': 'Beijing', 'job': 'Engineer'}
>>> person('Jack', 24, **extra)
name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}
>>> extra = {'city': 'Beijing', 'job': 'Engineer'}
>>> person('Jack', 24, city=extra['city'], job=extra['job'])
name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}

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

-Advertisement-
Play Games
更多相關文章
  • 異常處理 1.基本介紹 SpringMVC 通過 HandlerExceptionResolver 處理程式的異常,包括 Handler映射、數據綁定以及目標方法執行時發生的異常 有兩種方案來進行異常處理: a.在本類編寫處理異常的方法,將拋出的異常視為局部異常處理 b.額外編寫處理異常的類,將拋出 ...
  • 前言 本文主要作為本人學習C\C++歷程的的一種記錄,以期望通過這種方式加深對知識點的記憶,查漏補缺。如有寫得不對的地方,歡迎大家批評改正。 模板概論 模板是泛型編程的基礎,是創建泛型類或函數的藍圖或公式。 C++提供了兩種模板機制:函數模板和類模板。函數模板,實際上是建立了一個通用函數,其函數類型 ...
  • 定義 1.排列 排列,一般地,從n個不同元素中取出m(m≤n)個元素,按照一定的順序排成一列,叫做從n個元素中取出m個元素的一個排列。特別地,當m=n時,這個排列被稱作全排列。 用Αnm表示“從n個元素里取m個元素,排成一排的方案數”,也就是Αnm=n!/(n-m)! ,將它稱為排列數。 註:n!即 ...
  • 這次設計一個DDS信號發生器。該設計的特點有: 雙通道的DA輸出,可以調節頻率、相位、和波形(正弦波、方波、三角波)。 擁有相位重置的功能,能夠同時重置兩個輸出波形的相位。 本次採用的是小梅哥的ACM2108模塊。該模塊有兩個通道的ADC和兩個通道的DAC。 本次設計的前置是DDS基本模塊,具體可點 ...
  • Requests 是一個 Python 的一個第三方庫,通過發送 HTTP 請求獲取響應數據,一般應用於編寫網路爬蟲和介面測試等。 相比 urllib 庫,它語法簡單,更容易上手。 官方中文文檔地址:Requests: 讓 HTTP 服務人類 離線文檔下載地址:Requests document d ...
  • 背景 golang可以獲取命令執行的輸出結果,但要執行完才能夠獲取。 如果執行的命令是ssh,我們要實時獲取,並執行相應的操作呢? 示例 func main() { user := "root" host := "172.16.116.133" //獲取執行命令 cmd := exec.Comman ...
  • IDEA如何使用Maven不通過模板創建javaWeb項目 1.創建項目 進入IDEA,點擊“項目”>“新建項目”,填寫項目信息,最後點擊“創建”。 點擊“創建”後,自動進入新創建的項目。 2.給項目配置Web框架 點擊 “文件”>“項目結構”,自動跳轉到項目結構。 點擊 “模塊” > “+” > ...
  • 給大家推薦一個比Redis性能更強的數據:KeyDB KeyDB是Redis的高性能分支,側重於多線程、記憶體效率和高吞吐量。除了性能改進外,KeyDB還提供主動複製、快閃記憶體和子密鑰過期等功能。KeyDB具有MVCC架構,允許您在不阻塞資料庫和降低性能的情況下執行密鑰和掃描等查詢。 KeyDB與Redi ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...