Java開發者的Python快速進修指南:函數基礎

来源:https://www.cnblogs.com/guoxiaoyu/archive/2023/11/13/17830582.html
-Advertisement-
Play Games

話不多說,今天我們要介紹的是函數。本系列文章追求短而精,今天我們將重點討論函數以及與Java方法的區別。與Java方法不同,函數不需要像Java方法一樣講究修飾符等其他特性,它只需要使用"def"關鍵字進行聲明。另外,函數的參數也與Java方法有所不同,Java方法中不存在預設參數的概念,而在Pyt... ...


話不多說,今天我們要介紹的是函數。本系列文章追求短而精,今天我們將重點討論函數以及與Java方法的區別。與Java方法不同,函數不需要像Java方法一樣講究修飾符等其他特性,它只需要使用"def"關鍵字進行聲明。另外,函數的參數也與Java方法有所不同,Java方法中不存在預設參數的概念,而在Python中,函數參數是可以有預設值的,並且可以通過傳遞關鍵字參數的方式來指定參數順序。

此外,Python函數還具有可變參數的特性,不同於Java中的實現方式,Python使用星號符號(*)來實現可變參數。請註意這種寫法的使用方式。更為強大的是,Python還提供了雙星號符號(**)的寫法,下麵我們將詳細討論這一特性。

最後,我們來談談返回值。與Java不同的是,Python函數可以返回多個值,而Java中需要將這些值封裝成對象。Python的這種設計讓我們能夠更加方便地處理返回值。另外,Python還提供了一些內置函數,但如果你想使用Java的內置方法,很抱歉,你需要直接使用對象來調用這些方法。好了,接下來讓我們簡單瞭解一下函數的一些其他特性吧。

函數聲明

在Python中,可以使用關鍵字def來聲明函數。函數聲明的基本語法如下:

def 函數名(參數1, 參數2, ...):
    # 函數體
    # 執行的代碼塊
    return 返回值
  • def關鍵字用於定義函數。
  • 函數名是你給函數起的名字,應該具有描述性。
  • 參數是可選的,你可以在括弧內指定函數需要接收的輸入參數。如果沒有參數,括弧仍然是必須的,但可以留空。
  • 函數體是函數的具體實現,包含一系列的語句和邏輯。
  • return語句用於指定函數的返回值。可以選擇省略return語句,這樣函數將不會返回任何值。

以下是一個簡單的示例:

def greet(name):
    print("Hello, " + name + "!")

greet("xiaoyu")  # 調用函數,輸出 "Hello, xiaoyu!"

參數

預設參數

預設參數(Default arguments):函數定義時可以為參數指定預設值,這樣在函數調用時如果沒有傳遞對應參數的值,將使用預設值。

def power(x, n=2):
    return x ** n

result1 = power(2)  # 調用函數,n使用預設值2
result2 = power(2, 3)  # 調用函數,指定n為3
print(result1)  # 輸出 4
print(result2)  # 輸出 8

可變參數

可變參數(Variable arguments):。與Java的...使用類似,有時候我們無法確定調用函數時會傳遞多少個參數,這時可以使用可變參數來接收不定數量的參數。在函數定義時,在參數前面加上一個星號*,這樣傳遞的參數將被打包成一個元組

def add(*numbers):
    result = 0
    for num in numbers:
        result += num
    return result

sum1 = add(1, 2, 3)  # 調用函數,傳遞3個參數
sum2 = add(1, 2, 3, 4, 5)  # 調用函數,傳遞5個參數
print(sum1)  # 輸出 6
print(sum2)  # 輸出 15

關鍵字參數

關鍵字參數(Keyword arguments):當函數調用時,可以使用關鍵字參數來指定參數的名稱和對應的值,這樣參數的順序可以任意。在函數定義時,在參數前面加上兩個星號**,這樣傳遞的參數將被打包成一個字典。

def person_info(**info):
    for key, value in info.items():
        print(key + ": " + value)

person_info(name="Alice", age="25", city="New York")  # 調用函數,傳遞關鍵字參數

以上我們之講解了在Java中不常見的,常規用法就不講解了,浪費時間。

返回值

有時候,Python中我們還可以在函數中返回多個值。實際上,Python中的多個返回值是以元組的形式返回的。我們可以通過解包操作將返回的元組拆分為多個變數。而Java中需要將這些值封裝成對象

下麵是一個示例,演示了函數如何返回多個值:

def calculate(a, b):
    sum = a + b
    difference = a - b
    return sum, difference

result1, result2 = calculate(8, 3)
print(result1)  # 輸出 11
print(result2)  # 輸出 5

除了這一個我還沒看到有啥別的大區別,Java同學註意一下!

內置函數

我舉一些不好理解的例子吧,像min、max、sum這種數值操作我就不列舉了,我們看下range、zip、all、any吧。這些你遇見了直接百度就可以明白的,無所謂記住什麼的,寫多了就記住了。

range函數

range(start, stop, step):range函數用於生成一個整數序列,可以用來遍曆數字範圍。它接受三個參數:起始值(可選,預設為0),結束值(必選),步長(可選,預設為1)。返回的對象是一個可迭代的序列。

for i in range(1, 10, 2):
    print(i)
# 輸出:1 3 5 7 9

zip函數

zip(*iterables):zip函數用於將多個可迭代對象進行配對。它接受任意個可迭代對象作為參數,並返回一個元組的迭代器,其中每個元組由輸入迭代器中對應位置的元素組成。當輸入的可迭代對象長度不一致時,zip函數會以最短的長度為準,超出部分將被忽略。

names = ["Alice", "Bob", "xiaoyu"]
ages = [25, 30, 35]
for name, age in zip(names, ages):
    print(name, age)
# 輸出:
# Alice 25
# Bob 30
# xiaoyu 35

all函數

all(iterable):all函數用於檢查可迭代對象中的所有元素是否為真。如果可迭代對象中所有元素都為真,返回True;否則返回False。如果可迭代對象為空,則返回True。

numbers = [1, 2, 3, 4, 5]
print(all(numbers))  # 輸出:True

numbers = [0, 1, 2, 3, 4, 5]
print(all(numbers))  # 輸出:False

numbers = []
print(all(numbers))  # 輸出:True

any函數

any(iterable):any函數用於檢查可迭代對象中的任何一個元素是否為真。如果可迭代對象中任何一個元素為真,返回True;否則返回False。如果可迭代對象為空,則返回False。

numbers = [0, 0, 0, 1]
print(any(numbers))  # 輸出:True

numbers = [0, 0, 0]
print(any(numbers))  # 輸出:False

numbers = []
print(any(numbers))  # 輸出:False

總結

本文介紹了函數的基本概念和與Java方法的區別。在Python中,函數使用"def"關鍵字進行聲明,不需要像Java方法一樣講究修飾符等其他特性。函數的參數可以有預設值,並且可以通過傳遞關鍵字參數的方式來指定參數順序。Python函數還具有可變參數和關鍵字參數的特性,可以接收不定數量的參數,並且參數的順序可以任意。與Java不同的是,Python函數可以返回多個值,而Java需要將多個值封裝成對象。此外,Python還提供了一些內置函數,如range、zip、all、any等。


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

-Advertisement-
Play Games
更多相關文章
  • 項目代碼同步至碼雲 weiz-vue3-template 關於vite的詳細配置可查看 vite官方文檔,本文簡單介紹vite的常用配置。 初始內容 項目初建後,vite.config.ts 的預設內容如下: import { defineConfig } from 'vite' import vu ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 前端“三清” 在前端開發中,我們經常聽到關於“三清”的說法,即 window、document、Object。這三者分別代表了 BOM(瀏覽器對象模型)、DOM(文檔對象模型)以及 JS 的頂層對象。在這個體系中,我們通過 JavaScr ...
  • 舉例:要屏蔽“Missing trailing comma”或“comma-dangle”警告,你可以使用ESLint的配置選項來設置規則。下麵是一些方法,你可以根據自己的需求選擇其中一種(這裡只是舉例,其他警告處理方法相同) 方法1:在代碼中添加註釋來禁用規則 在你希望屏蔽警告的代碼行的上方添加如 ...
  • 一、創建Date對象 var dateObj=new Date(); var now = Date.now() 當前時間 二、Date方法 1、將日期轉為字元串 toLocaleString() toLocaleDateString() toLocaleTimeString() 2、獲取年、月、日、 ...
  • 本文介紹了結構型設計模式中的代理設計模式,講解了靜態代理、JDK的動態代理和cglib的動態代理,並用代碼進行演示。 ...
  • 趁著雙十一備戰封板,終於又有一些時間可以梳理一下最近的心得。最近這半年跟同事討論比較多的是分層架構,然後就會遇到兩個觸及靈魂的問題,一個是如何做好分層架構,二是DDD在架構層面該如何落地。 ...
  • 一、定義 給某一個對象提供一個代理或占位符,並由代理對象控制對原對象的訪問。代理模式是一種結構型模式。 二、描述 代理模式的結構比較簡單,其核心是代理類,為了讓客戶端能夠一致性地對待真實對象和代理對象,在代理模式中引入了抽象層。包含以下三個角色: 1、Subject(抽象主題角色):它聲明真實主題和 ...
  • 清晰架構原則對於任何希望創建健壯、可維護和可擴展軟體的軟體開發者來說都至關重要。理解並實施這些概念可以顯著提升你的編程技能。以下是對20個基本架構洞見的深入探討:依賴規則: 清晰架構的核心是依賴規則。它規定源代碼的依賴關係應始終指向內部。這種內向的方向確保了一個具有彈性的基礎,強調了關註點的分離,並 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...