<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
函數用 def
語句建立,語法如下:
def 函數名(參數列): # 具體情況具體對待,引數可有可無 """函數說明檔案字串""" 函數封裝的程式碼 ……
標題行由 def
關鍵字,函數的名字,以及引數的集合(如果有的話)組成
def
子句的剩餘部分包括了一個雖然可選但是強烈推薦的檔案字串,和必需的函數體
函數名稱 的命名應該 符合 識別符號的命名規則
def washing_machine(): # 洗衣機可以幫我們完成 print("打水") print("洗衣服") print("甩幹")
使用一對圓括號 () 呼叫函數,如果沒有圓括號,只是對函數的參照
任何輸入的引數都必須放置在括號中
圖例:
案例:加洗衣粉
def washing_machine(): # 洗衣機可以幫我們完成 print("打水") print("加洗衣粉!!!") print("洗衣服") print("甩幹") # 早上洗衣服 washing_machine() # 中午洗衣服 washing_machine() # 晚上洗衣服 washing_machine()
總結
思考
Python
已經知道函數的存在NameError: name 'menu' is not defined
(名稱錯誤:menu 這個名字沒有被定義)問題
當我們想洗其他的東西,要手動改方法內部的程式碼:
def washing_machine(): # 洗衣機可以幫我們完成 print("打水") print("加洗衣粉!!!") print("洗床單") # 洗被套 print("甩幹")
在函數內部有一定的變化的值:
def washing_machine(): # 洗衣機可以幫我們完成 print("打水") print("加洗衣粉!!!") print("洗衣服") print("甩幹") washing_machine() def washing_machine(): # 洗衣機可以幫我們完成 print("打水") print("加洗衣粉!!!") print("洗床單") print("甩幹") washing_machine() ......
思考一下存在什麼問題
函數只能處理固定的資料
如何解決?
如果能夠把需要處理的資料,在呼叫函數時,傳遞到函數內部就好了!
,
分隔def washing_machine(something): # 洗衣機可以幫我們完成 print("打水") print("加洗衣粉!!!") print("洗" + something) print("甩幹") # 洗衣服 washing_machine("衣服") # 洗床單 washing_machine("床單")
圖例
def washing_machine(xidiji,something): # 洗衣機可以幫我們完成 print("打水") print("加" + xidiji) print("洗衣服" + something) print("甩幹") #早上洗衣服 #按照引數位置順序傳遞引數的方式叫做位置傳參 #使用洗衣機,執行洗衣機內部的邏輯 washing_machine("洗衣液","衣服")#something = 衣服 #中午洗被罩 washing_machine("洗衣粉","被罩")# something = 被罩 #晚上洗床單 washing_machine("五糧液","床單")# something = 床單
作用
1.在函數 內部,把引數當做 變數 使用,進行需要的資料處理
2.函數呼叫時,按照函數定義的引數順序,把 希望在函數內部處理的資料,通過引數 傳遞
與 shell
指令碼類似,程式名以及引數都以位置引數的方式傳遞給 python 程式,使用 sys
模組的 argv
列表接收
圖例
預設引數就是宣告了 預設值 的引數,因為給引數賦予了預設值,所以在函數呼叫時,不向該引數傳入值也是允許的
return
關鍵字可以返回結果# 函數的返回值: return, 用於對後續邏輯的處理 # 理解: 把結果揣兜裡,後續想幹啥幹啥,想列印列印,想求和就求和 # 注意: # a. 函數中如果沒有return,那麼直譯器會自動加一個return None # b. return表示函數的終止,return後的程式碼都不會執行 # 1 定義一個函數,計算兩個數的和 # 2 計算這兩個數的和是不是偶數 def get_sum(x, y=100): # 預設引數 he = x + y # sum = 10 + 20 return he # return 30 print("return表示函數的終止,return後的程式碼都不會執行") # 將函數return後的結果賦值給變數dc: dc = sum -> dc = 30 dc = get_sum(10, 20) # x = 10, y = 20 print("dc:", dc) # 30 dc1 = get_sum(10) # x = 10, y = 100 print("dc1:", dc1) # 110 # if dc % 2 == 0: # print("偶數") # else: # print("奇數")
#預設引數 #注意:具有預設值的引數後面不能跟沒有預設值的引數 def get_sum(a=20,b=5,c=10): he = a + b+ c return he dc = get_sum(1,2,3) #a=1 b=2 c=3 print("dc:",dc) # 6 dc1 = get_sum(1,2) # a=1 b=2 c=10 print("dc1:",dc1) # 13 dc2 = get_sum(1) # a=1 b=5 c=10 print("dc2:",dc2) # 16 dc3 = get_sum() print("dc3:",dc3) # 35
修改菲波那切數列
def new_fib(n=8): list01 = [0,1] #定義列表,指定初始值 for dc in range(n-2): list01.append(list01[-1]+list01[-2]) return list01 dc = new_fib() #不加引數預設是8 dc1 = new_fib(10) print("dc:",dc) print("dc1:",dc1)
生成隨機密碼:
#練習:生成隨機密碼 #建立 randpass.py 指令碼,要求如下: #編寫一個能生成8位元隨機密碼的程式 #使用 random 的 choice 函數隨機取出字元 #由使用者決定密碼長度 import random def new_password(): n = int(input("密碼長度:")) password = "" all = "0123456789zxcvbnmlkjhgfdsaqwertyuiopPOIUYTREWQASDFGHJKLMNBVCXZ" # 0-9 a-z A-Z random.choice(all) for i in range(n): dc = random.choice(all) password += dc # print("passwd:",password) return password # 呼叫函數,才能執行函數內部邏輯 dc = new_password() print("dc:",dc)
#練習:生成隨機密碼 #建立 randpass.py 指令碼,要求如下: #編寫一個能生成8位元隨機密碼的程式 #使用 random 的 choice 函數隨機取出字元 #由使用者決定密碼長度 import random,string def new_password(): n = int(input("密碼長度:")) password = "" all = string.ascii_letters + string.digits random.choice(all) for i in range(n): dc = random.choice(all) password += dc # print("passwd:",password) return password # 呼叫函數,才能執行函數內部邏輯 dc = new_password() print("dc:",dc)
為什麼需要匯入模組?
可以提升開發效率,簡化程式碼
正確使用
# test.py,將 file_copy.py 放在同級目錄下 # 需求:要將/etc/passwd複製到/tmp/passwd src_path = "/etc/passwd" dst_path = "/tmp/passwd" # 如何複製? # 呼叫已有模組中的方法 # - 很推薦,簡單粗暴不動腦 # - 直接使用 file_copy.py的方法即可 # 匯入方法一:直接匯入模組 import file_copy # 要注意路徑問題 file_copy.copy(src_path, dst_path) # 匯入方法二:只匯入 file_copy 模組的 copy 方法 from file_copy import copy # 如果相同時匯入多個模組 from file_copy import * copy(src_path, dst_path) # 匯入方法四:匯入模組起別名 as import file_copy as fc fc.copy(src_path, dst_path)
常用的匯入模組的方法
import random
from random import choice
, randint
模組在被匯入時,會先完整的執行一次模組中的 所有程式
案例
# foo.py print(__name__) # bar.py import foo # 匯入foo.py,會將 foo.py 中的程式碼完成的執行一次,所以會執行 foo 中的 print(__name__)
結果:
# foo.py -> __main__ 當模組檔案直接執行時,__name__的值為‘__main__’
# bar.py -> foo 當模組被另一個檔案匯入時,__name__的值就是該模組的名字
所以我們以後在 Python 模組中執行程式碼的標準格式:
def test(): ...... if __name__ == "__main__": test()
本篇文章就到這裡了,希望能夠給你帶來幫助,也希望您能夠多多關注it145.com的更多內容!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45