中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何用Python函數

發布時間:2021-10-19 15:42:04 來源:億速云 閱讀:125 作者:iii 欄目:編程語言

這篇文章主要講解了“如何用Python函數”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“如何用Python函數”吧!

請大家猜一猜下面這段代碼的運行效果:

import random import time  people = ['kingname', '王小一', '李小二', '張小三', '劉小四', '盧小五', '馬小六', '周小七', '丁小八', '朱小九'] for i in range(1, 11):     lucky_guy = random.choice(people)     print(f'第{i}次抽獎,中獎用戶:{lucky_guy}')     time.sleep(1)

你是不是以為這段代碼運行以后,結果如下圖所示?

如何用Python函數

但實際上,我可以讓輸出結果根據我的意愿隨意變動,例如像下面這個 gif ,所有輸出結果都是我:

如何用Python函數

你可以先不要往下看,放下手機,自己寫一下代碼,試一試 如何才能實現 gif 中的效果。

下面來為大家解密。

要實現這個效果,只需要兩個知識點:

  1. 鴻蒙官方戰略合作共建——HarmonyOS技術社區

  2. Python自帶模塊是可以被覆蓋的

  3. Python 的 import 在同一個運行時只會導入一次

首先來看第一個知識點。Python 的自帶模塊是可以被覆蓋的,所以我們先來定義一個函數:

def choice(option):     return 'kingname'

接下來,使用這個函數覆蓋random.choice:

import random random.choice = choice

現在,無論給random.choice傳入什么參數,它始終都會返回kingname,運行效果如下圖所示:

如何用Python函數

這個時候,你可能會說,那別人寫代碼的時候,又重新import random怎么辦呢?random.choice不是又被改回去了嗎?

實際上并不會,因為Python 的包導入機制決定了,在每個運行時內部,每個包只有第一次導入的時候有效,所以只要還在當前運行時,那么后續的所有import  random都是無效的。

所以,即使重新導入了 random  模塊,random.choice依然是你修改以后的代碼。所以當你再次執行的時候,會發現返回的還是你想要的數據,如下圖所示:

如何用Python函數

可能有人會說這樣容易被識破啊,別人只要先隨便寫一些測試數據,運行一次random.choice([123,  456]),發現返回的竟然是kingname,這不就露餡了嗎?

實際上完全不用擔心,我們可以這樣操作:

如果備選列表里面不包含kingname,那么就使用原生的 random.choice

如果備選列表里面包含kingname,那么就以60%的概率返回kingname

要實現這樣的功能,我們可以這樣寫代碼:

首先重啟當前 Jupyter 內核,讓 random 恢復成默認的,然后編碼:

import random  origin_choice = random.choice  def choice(option):     if 'kingname' not in option or random.randint(1, 10) > 6:         return origin_choice(option)     return 'kingname'  random.choice = choice

這樣替換以后,當有kingname在備選列表中時,kingname被有60%的概率被選中,如下圖所示:

如何用Python函數

當kingname不在備選列表中時,一切正常,如下圖所示:

如何用Python函數

感謝各位的閱讀,以上就是“如何用Python函數”的內容了,經過本文的學習后,相信大家對如何用Python函數這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

仪征市| 明光市| 任丘市| 长葛市| 唐河县| 开原市| 定州市| 西昌市| 沭阳县| 枣阳市| 定襄县| 沅江市| 怀柔区| 庄河市| 河池市| 巴马| 建宁县| 平顶山市| 张掖市| 临漳县| 辽阳县| 稷山县| 深州市| 开化县| 江山市| 泰来县| 介休市| 平定县| 习水县| 乐陵市| 福安市| 延庆县| 格尔木市| 南丹县| 南安市| 玉环县| 卓资县| 和静县| 资溪县| 长春市| 垫江县|