Python: 你所不知道的星號 * 用法

来源:https://www.cnblogs.com/englyf/archive/2022/11/28/16931223.html
-Advertisement-
Play Games

平常對於星號的應用場景用得少是不需要瞭解太多用法的。不過,學編程的過程少不了要去閱讀優秀的源代碼庫,也就時常會對星號 * 的貿然出現和用途感到困惑,所以今天就讓你們好好瞭解一下會有哪些用法。 ...


以下內容為本人的學習筆記,如需要轉載,請聲明原文鏈接 微信公眾號「englyf」https://mp.weixin.qq.com/s/FHyosiG_tegF5NRUEs7UdA


本文大概 1193 個字,閱讀需花 6 分鐘
內容不多,但也花了一些精力
如有餘力,歡迎點贊收藏分享,謝謝!

鈴鈴鈴…… 上課了

老師在黑板寫著這麼一個標題 《Python: 你所不知道的星號 * 用法》

同學A:
    呃,星號不就是用來做乘法的嘛,這個還有必要專門列出來嗎?

同學B:
    老師這會又在賣關子了?

同學C忍不住嗦地一聲站起來喊:
    難道寫代碼還得強行找理由秀一波星星嗎?

老師:
    這位同學,你太優秀了,先坐下。
    平常對於星號的應用場景用得少是不需要瞭解太多用法的。
    不過,學編程的過程少不了要去閱讀優秀的源代碼庫,
    也就時常會對星號 * 的貿然出現和用途感到困惑,
    所以今天就讓你們好好瞭解一下會有哪些用法,
    不要求全記住,略懂一二即可,略懂。。。

這裡嘗試總結一波python里的星號* 用法,如有寫得不到位,歡迎評論區交流!看下文...

數值乘法

最常見的用法,星號用在兩個數之間實現兩個數的乘法計算

e.g.

mul = 1 * 2
print(mul)

Output:

2

成員倍增器

如果星號前面的操作數是序列,比如列表、元組、字元串等,後操作數是n,那麼是對序列的成員倍增,列表的成員數量會變成原來的n倍。

e.g.

list = ['hello'] * 2
print(list)

Output:

['hello', 'hello']

冪運算

兩個星號 ** 表示對星號前面的操作數執行後面操作數的冪運算,簡單點說就是求多少次方的計算。

e.g.

print(10 ** 3)

Output:

1000

函數參數解壓操作符

有時候在列印數據時,需要對原始數據進行輸出,並且在數據之間插入一些分隔符。一般想到的是用迴圈處理,但是看起來語句有些啰里啰唆的。

e.g.

print(' '.join(['sunday', 'monday', 'tuesday', 'wednesday']))
print(' '.join('helloworld!'))

Output:

sunday monday tuesday wednesday
h e l l o w o r l d !

在這裡要介紹的是更方便的方法,那就是用星號做解壓處理。

調用函數時,在輸入參數前添加星號 * 可以對參數執行解壓操作,比如對列表、元組、字元串等序列類型的輸入參數做解壓之後,就變成了單個數據。

e.g.

print(*'list')

Output:

l i s t

e.g.

print(*['hello', 'world', '!'])

Output:

hello world !

函數參數修飾符

  1. 添加星號 * 在函數的參數前時,表示該參數是不定數量的位置參數。

很多時候向函數輸入的位置參數是不定數目的,這樣子就可以藉助星號修飾符來表述了。在函數內該參數存儲的數據被構造成元組類型,也就是說傳入的不定參數被包含在元組內。

e.g.

def add(*args):
    return sum(args)

print(add(1, 2, 3, 4, 5))

Output:

15
  1. 添加兩個星號 ** 在函數的參數前時,表示該參數是不定數量的關鍵字參數。

向函數輸入的不定數目的參數除了可以是位置參數之外,也可以是關鍵字參數。這個時候就不能用單個星號做修飾符了,而是雙星號 **,比如 **kwargs。

在函數內該不定數目參數存儲的數據屬於字典類型,也就是說傳入的不定參數被包含在字典內。

e.g.

def food_type(**kwargs):
    for item in kwargs:
        print(f"{kwargs[item]} belongs to {item}")

food_type(fruit = 'apple', meat = 'animal', vegetable = 'potato')

Output:

apple belongs to fruit
animal belongs to meat
potato belongs to vegetable

好了,簡簡單單介紹完畢,你看懂了嗎?如果沒有就留個言吧,我改總可以了吧?


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

-Advertisement-
Play Games
更多相關文章
  • 大數據時代,無人不知Google的“三駕馬車”。“三駕馬車”指的是Google發佈的三篇論文,介紹了Google在大規模數據存儲與計算方向的工程實踐,奠定了業界大規模分散式存儲系統的理論基礎,如今市場上流行的幾款國產資料庫都有參考這三篇論文。 《The Google File System》,200 ...
  • 騰訊雲資料庫在助力金融核心系統分散式替換上,已經輻射到了東南亞市場。 東南亞最大的銀行之一印尼BNC銀行(Bank Neo Commerce)已正式完成新核心分散式遷移,使用騰訊雲資料庫TDSQL後,系統運行平穩順暢。這標志著騰訊雲資料庫在經過國內多家大型核心系統的落地實踐後,開始走向海外,“技術出 ...
  • 華為開發者大會2022(HDC)上,HMS Core手語數字人以全新形象亮相,併在直播中完成了長達3個多小時的實時手語翻譯,向線上線下超過一千萬的觀眾提供了專業、實時、準確的手語翻譯服務,為聽障人士提供了無障礙參會體驗。面對專業性強且辭彙量大的科技大會,HMS Core手語數字人是如何準確且流暢地打 ...
  • 實現效果圖 GitHub 和 Gitee 個人主頁中可以對自己的項目進行拖拽排序,於是我就想自己實現一個。本隨筆只是記錄一下大概的實現思路,如果感興趣的小伙伴可以通過代碼和本隨筆的說明去理解實現過程。👉我的 Gitee 和 GitHub 地址。 線上瀏覽地址:11.拖拽排序,裡面還有更多的例子。 ...
  • 事情緣由 作為選修了移動互聯網應用的一員,老師講的什麼JS基礎,還有ES6和uniapp,當然是沒怎麼聽,因為是之前大二的時候都大概看過。 但是快到期末,老師講了雲開發,並且佈置了與此相關的大作業,自己做一個新聞資訊app,和一個小組作業,也是一個app,題目自擬,我對它來了興趣(bushi)。 初 ...
  • 最近在維護一個小後臺項目,有段JS需要壓縮上傳到CDN存儲伺服器。由於之前壓縮的JS文件都比較少,都是手動壓縮的。這次需要壓縮的文件比較多,所以用了批量壓縮。特此記錄一下,方便大家和自己以後再用到的時候備忘。 v準備工作 安裝nodejs 首先在本地安裝node.js和npm,一般npm集成於nod ...
  • # HTTPS server server { listen 443; server_name ************.com; ssl on; ssl_certificate cert/************.com.pem; ssl_certificate_key cert/******** ...
  • 摘要:在競爭如此激烈的當下,作為一名IT新人,怎麼才能讓HR眼前一亮,從萬千簡歷中脫穎而出成為最亮的那個崽呢? 本文分享自華為雲社區《【一行代碼秒上雲】連夜自建網站背刺我的求職對手們 !》,作者:AppCloud小助手。 前言 在競爭如此激烈的當下,作為一名IT新人,怎麼才能讓HR眼前一亮,從萬千簡 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...