函數的學習3——傳遞任意數量的實參&將函數存儲在模塊——參考Python編程從入門到實踐

来源:https://www.cnblogs.com/shirley-yang/archive/2019/06/27/11099962.html
-Advertisement-
Play Games

傳遞任意數量的實參 形參前加一個 * ,Python會創建一個已形參為名的空元組,將所有收到的值都放到這個元組中: 不管函數收到多少實參,這種語法都管用。 1. 結合使用位置實參和任意數量實參 運行結果: 2. 使用任意數量的關鍵字實參 形參**user_info中的兩個星號讓python創建了一個 ...


傳遞任意數量的實參

形參前加一個 * ,Python會創建一個已形參為名的空元組,將所有收到的值都放到這個元組中: 

def make_pizza(*toppings):
    print("\nMaking a pizza with the following toppings: ")
    for topping in toppings:
        print("- " + topping)


make_pizza('pepperoni')
make_pizza('mushroom', 'green peppers', 'extra cheese')

不管函數收到多少實參,這種語法都管用。

1. 結合使用位置實參和任意數量實參

def make_pizza(size, *toppings):
    print("\nMaking a " + str(size) + "-inch pizza with the following toppings: ")
    for topping in toppings:
        print("- " + topping)


make_pizza(16, 'pepperoni')
make_pizza(12, 'mushroom', 'green peppers', 'extra cheese')

運行結果:

Making a 16-inch pizza with the following toppings: 
- pepperoni

Making a 12-inch pizza with the following toppings: 
- mushroom
- green peppers
- extra cheese

2. 使用任意數量的關鍵字實參

def build_profile(first, last, **user_info):
    profile = dict()
    profile['first_name'] = first
    profile['last_name'] = last
    for key, value in user_info.items():
        profile[key] = value
    return profile


user_profile = build_profile('albert', 'einstein', location='princeton', field='physic')
print(user_profile)

形參**user_info中的兩個星號讓python創建了一個名為user_info的空字典。

將函數存儲在模塊中

        將函數存儲在稱為模塊的獨立文件中,使用時再將模塊導入到主程式中。目的:1. 隱藏程式代碼細節;2.重用函數;3.與其他程式員共用這些文件;4.使用其他程式員編寫的函數庫。

1. 導入整個模塊

pizza.py

def make_pizza(size, *toppings):
    print("\nMaking a " + str(size) + "-inch pizza with the following toppings: ")
    for topping in toppings:
        print("- " + topping)

 

making_pizzas.py

import pizza
pizza.make_pizza(16, 'pepperoni')
pizza.make_pizza(12, 'mushroom', 'green peppers', 'extra cheese')

 即可以使用一下的語法來導入模塊並使用模塊中的任意函數:

import module_name
module_name.function_name( )

2. 導入特定的函數

from module_name import function_name    # 導入模塊中一個函數
from module_name import function_0, function_1,,,    # 導入模塊中的多個函數

eg:

making_pizzas.py

from pizza import make_pizza
make_pizza(16, 'pepperoni')
make_pizza(12, 'mushroom', 'green peppers', 'extra cheese')

 導入的是函數,調用函數時就無需使用句點。

3. 使用as給函數指定別名

from pizza import make_pizza as mp
mp(16, 'pepperoni')
mp(12, 'mushroom', 'green peppers', 'extra cheese')

給函數指定別名的通用語法:

from modul_name import function_name as fn

4. 使用as給模塊指定別名

import pizza as p
p.make_pizza(16, 'pepperoni')
p.make_pizza(12, 'mushroom', 'green peppers', 'extra cheese')

給模塊指定別名的通用語法:

import module_name as mn

5. 導入模塊中的所有函數

from pizza import *
make_pizza(16, 'pepperoni')
make_pizza(12, 'mushroom', 'green peppers', 'extra cheese')

導入所有函數的通用語法:

from module_name import *

函數編寫指南

1. 函數命名和模塊命名:指定描述性名稱,且在只其中使用小寫字母和下劃線。

2. 函數定義後應緊跟註釋,用以簡要闡述改函數的功能,採用文檔字元串格式。

3. 給形參指定預設值和函數調用中的關鍵字實參,等號兩邊不用空格。

4.所有程式或者模塊包含多個函數時,使用兩個空行將相鄰的兩個函數分開。

5. 所有import語句放在文件開頭,唯一例外就是文件開頭使用了註釋來描述整個程式。 


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

-Advertisement-
Play Games
更多相關文章
  • 參考:https://www.t9vg.com/archives/304 ...
  • 2.1.函數的定義和使用 函數基本使用 實例一:寫一個守護進程,nginx如果關閉自動開啟 vim nginx_daemon.sh 把這個腳本放到後臺運行 關閉後查看 2.2.向函數傳遞參數 shell中傳參 函數調用 舉例 2.3.函數的返回值 返回值的方式 使用return返回值 使用retur ...
  • 1.1原理: Cookie是保存在客戶端的信息包(一個文件) 1.客戶端向伺服器發送請求 2.伺服器將值放到響應頭中發送到客戶端 3.瀏覽器自動的將信息放到請求投資帶到伺服器 1.2設置Cookie 客戶端有cookei信息後,每次請求伺服器,cookie的信息都會自動的放到請求頭中帶到伺服器。 1 ...
  • 前面我們介紹了簡單工廠模式,今天我們來看一下工廠模式。 工廠模式的定義為:定義一個用於創建對象的介面,讓子類決定實例化哪一個類。工廠方法使一個類的實例化延遲到子類。 我們看以下例子。首先是產品類,用來定義共產所生產的部分產品,這部分代碼和簡單工廠模式的代碼相同。 接下來是和簡單工廠不同的地方,首先我 ...
  • JAVA-基礎(Class對象及反射) 1.(1)什麼是class對象? 首先,java有兩種對象,第一種是實例對象,第二種是Class對象,每一個類運行的類型信息就是用Class對象表示的,每一個對象都有一個到java.lang.Class(用於描述對象的結構)的實例的引用。Class類沒有公共的 ...
  • 小白程式猿,練練手,做做題目,分享下經驗, 有不對的,還請大家能夠指出,多多包涵!謝謝!! 先簡單,後複雜,循序漸進,希望能夠堅持下來, 大家一起進步~~ ...
  • 一、微服務概述 1. 什麼是微服務  簡單地說, 微服務是系統架構上的一種設計風格, 它的主旨是將一個原本獨立的系統拆分成多個小型服務,這些小型服務都在各自獨立的進程中運行,服務之間基於 RPC 進行通信協作。 被拆分成的每一個小型服務都圍繞著系統中的某一項或一些耦合度較高的業務功能進行構 ...
  • 1 import java.sql.Connection; 2 import java.sql.DriverManager; 3 import java.sql.ResultSet; 4 import java.sql.SQLException; 5 import java.sql.Statemen... ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...