英特爾預熱新款 Arc 筆記本獨顯,3 月 30 日晚 11 點發布
阿新 • • 發佈:2022-03-26
1、函式概述
1.1函式概念
所謂函式,就是把重複的程式碼單獨的分離出來,放在⼀個公共的地方,以後可以⼀直的進行呼叫,這樣就可以解決多次重複來編寫。
1.2函式的定義形式
函式定義:定義函式使用的關鍵字是def
如:def 函式名稱(函式的引數):
函式表示式
1.3函式的引數
常用的函式的引數有形式引數、實際引數、預設引數和動態引數。
(1)形式引數:函式裡面的引數叫做形式引數;
(2)實際引數:函式被呼叫的時候,給引數賦予的值叫做實際引數。
(3)預設引數:在定義函式的時候給形式引數指定預設的值叫做預設引數。預設引數只能放在非預設引數的後面,如果放在前面就會報錯。在呼叫過程中,如果沒有給
該形式引數賦值,那麼他的值預設就是我們定義的預設值,如果我們給形式引數定義了值,那麼他的值就是我們新定義的值。
(4)動態引數:定義一個函式的時候,當函式的形式引數個數不確定,資料型別不確定的時候,我們就可以用動態引數。
如def func(*a,**b),a和b為自定義的變數,一般a和b預設用args和kwargs,即def func(*args,**kwargs)。
*:代表的是元組的資料型別
**:代表的是字典的資料型別
1.4函式的呼叫
函式寫完後,必須要經過呼叫才能生效,如果不呼叫,不會生效。呼叫函式的方式是:函式名稱()。函式呼叫的注意事項:
(1)函式在呼叫時,可以填寫形式引數,也可以不填寫,但是要注意的是要填寫就都填寫,要不填寫就都不填寫;
(2)函式在呼叫的時候,填寫的實際引數要與形式引數的順序、個數保持一致;
(3)函式有形式引數的時候,呼叫函式必須填寫實際引數。
2、函式應用舉例
2.1函式定義與呼叫
#函式定義
def fun():
print("hello world")
#函式呼叫
fun()
2.2登入的函式
#登入的函式 def login(username,password): if username=="qy" and password=="123456": print("ok") else: print("no") #呼叫函式的時候,其形式引數:username、password要填寫的話,需要都進行填寫,如下 login(username="qy",password="123456") #呼叫函式的時候,其形式引數:username、password也可以都不進行填寫,如下: login("qy","123456")
2.3註冊的函式
#註冊的函式,然後把註冊的使用者名稱和密碼寫入到login.txt檔案中。
def registry():
username=input("請輸入使用者名稱:\n")
password=input("請輸入密碼:\n")
code=username+","+password
with open(file="login.txt",mode="a") as f:
f.write(code)
registry()
2.4輸出檔案中的使用者名稱
#讀取使用者名稱和密碼然後輸出使用者名稱。
def user():
with open(file="login.txt",mode="r") as f:
#定義一個變數,把讀取的值儲存在變數中,通過split把他進行拆分,這時候他就是一個列表,我們通過索引進行檢視即可。
a=f.read().split(",")
print(a[0])
user()
2.5預設引數練習
#預設引數練習,給密碼賦予預設值123456
def login(username, password="123456"):
if username=="qy" and password=="123456":
print("ok")
else:
print("no")
#呼叫函式的時候,如果不指定形式引數password的值,它的值預設就是123456。
login(username="qy")
#如果指定形式引數password的值,他的值就是我們指定的值。
login(username="qy",password="asd12345")
2.6動態引數練習
#動態引數
#元組練習,*args在函式中會把傳的引數轉成一個元組。
def func(*args):
print(args)
print(type(args))
func("(1,2,3)")
func("[1,2,3]")
func("{key:value}")
#字典練習,**kwargs在函式中會把傳的引數轉成一個字典。
def func(**kwargs):
print(kwargs)
print(type(kwargs))
# func(**{"name":"qy"},**{"a":"b"})
func(name="qy",a="b")
#使用場景:當*args和**kwargs組合起來使用,理論上能接受任何形式和任意數量的引數,需要注意的是,*args必須出現在**kwargs之前。
def func(*args,**kwargs):
print(args,kwargs)
func(pay="微信",price=100)
func(pay="支付寶",price=80)
func(pay="招商銀行",user="qy",price=40)
func(1,2,a="b",c="d")
list1=["微信","支付寶","招商銀行","現金","a+b+c"]
tuple1={"微信":"ok","支付寶":"no","招商銀行":"ok","現金":"500","a+b+c":"89.9"}
#func(list1,tuple1),如果這樣呼叫,後面的字典是空的,因此我們需要叫函式知道那個變數是*args的引數,哪個是**kwargs的引數,正確傳參寫法:
func(*list1,**tuple1)