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
  • C#TMS系統代碼-基礎頁面BaseCity學習 本人純新手,剛進公司跟領導報道,我說我是java全棧,他問我會不會C#,我說大學學過,他說這個TMS系統就給你來管了。外包已經把代碼給我了,這幾天先把增刪改查的代碼背一下,說不定後面就要趕鴨子上架了 Service頁面 //using => impo ...
  • 委托與事件 委托 委托的定義 委托是C#中的一種類型,用於存儲對方法的引用。它允許將方法作為參數傳遞給其他方法,實現回調、事件處理和動態調用等功能。通俗來講,就是委托包含方法的記憶體地址,方法匹配與委托相同的簽名,因此通過使用正確的參數類型來調用方法。 委托的特性 引用方法:委托允許存儲對方法的引用, ...
  • 前言 這幾天閑來沒事看看ABP vNext的文檔和源碼,關於關於依賴註入(屬性註入)這塊兒產生了興趣。 我們都知道。Volo.ABP 依賴註入容器使用了第三方組件Autofac實現的。有三種註入方式,構造函數註入和方法註入和屬性註入。 ABP的屬性註入原則參考如下: 這時候我就開始疑惑了,因為我知道 ...
  • C#TMS系統代碼-業務頁面ShippingNotice學習 學一個業務頁面,ok,領導開完會就被裁掉了,很突然啊,他收拾東西的時候我還以為他要旅游提前請假了,還在尋思為什麼回家連自己買的幾箱飲料都要叫跑腿帶走,怕被偷嗎?還好我在他開會之前拿了兩瓶芬達 感覺感覺前面的BaseCity差不太多,這邊的 ...
  • 概述:在C#中,通過`Expression`類、`AndAlso`和`OrElse`方法可組合兩個`Expression<Func<T, bool>>`,實現多條件動態查詢。通過創建表達式樹,可輕鬆構建複雜的查詢條件。 在C#中,可以使用AndAlso和OrElse方法組合兩個Expression< ...
  • 閑來無聊在我的Biwen.QuickApi中實現一下極簡的事件匯流排,其實代碼還是蠻簡單的,對於初學者可能有些幫助 就貼出來,有什麼不足的地方也歡迎板磚交流~ 首先定義一個事件約定的空介面 public interface IEvent{} 然後定義事件訂閱者介面 public interface I ...
  • 1. 案例 成某三甲醫預約系統, 該項目在2024年初進行上線測試,在正常運行了兩天後,業務系統報錯:The connection pool has been exhausted, either raise MaxPoolSize (currently 800) or Timeout (curren ...
  • 背景 我們有些工具在 Web 版中已經有了很好的實踐,而在 WPF 中重新開發也是一種費時費力的操作,那麼直接集成則是最省事省力的方法了。 思路解釋 為什麼要使用 WPF?莫問為什麼,老 C# 開發的堅持,另外因為 Windows 上已經裝了 Webview2/edge 整體打包比 electron ...
  • EDP是一套集組織架構,許可權框架【功能許可權,操作許可權,數據訪問許可權,WebApi許可權】,自動化日誌,動態Interface,WebApi管理等基礎功能於一體的,基於.net的企業應用開發框架。通過友好的編碼方式實現數據行、列許可權的管控。 ...
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...