函數的作用
kv編程論:解釋函數
幾種參數的用法
作用域
程序異常的處理
案例:登錄驗證命令行版
密碼生成器
51備忘錄v0.26
def function_name(s):
statement(s)
def 關鍵詞,不可變
function_name 函數名,小寫字母,下劃線連接單詞
s parameters,參數,可以有多個,用逗號分開
statement(s) 代碼語句,或其他函數,帶(s)爲調用,call
import random
num1 = random.randint(1,10)
num2 = random.randint(1,10)
print(num1,num2)
2 3
def random_num(): # 此處是函數的輸入(),可以爲空,也可以向函數傳遞參數
num = random.randint(1,10)
return num # 函數有輸入也有輸出,此處是經過函數處理過的返回值,使用return.怎麼使用這個返回值?:random_num()即可
random_num() # 函數的調用即可顯示它的返回值
2
def random_num(): # 此處是函數的輸入(),可以爲空,也可以向函數傳遞參數
num = random.randint(1,10)
# return num
random_num() # 如果函數中沒有return這個方法,調用該函數的時候就不會顯示。如下所示,None
def random_num(): # 此處是函數的輸入(),可以爲空,也可以向函數傳遞參數
num = random.randint(1,10)
return num
#random_num()
#random_num() # 默認顯示的是最後這個函數
print(random_num())
print(random_num()) #如此顯示多個隨機數
4
2
# 傳遞參數:
def random_num(start,end):
num = random.randint(start,end)
return num
random_num(1,20) # 傳遞參數的樣子
16
幾種函數參數的用法
random_num
<function __main__.random_num(start, end)>
def random_num(start,end=10): #end=10是默認值,可
以在傳參的時候更換,默認值要放在非默認值的後面
num = random.randint(start,end)
return num
random_num(6)
7
random_num(20,40) #end=10是默認值,可以在傳參的時候更換,正如此例
25
def random_num(start,end=10,n=6):
nums = []
for i in range(n):
num = random.randint(start,end)
nums.append(num)
return nums
random_num(4)
[6, 8, 7, 4, 5, 9]
注意可變對象在默認值的特殊情況
#函數默認值只計算一次! 注意列表當參數默認值。
def f(a,L=[]):
L.append(a)
return L
print(f(1))
print(f(2))
print(f(3)) ## 注意打印出來的結果,列表在不斷改變,增加
[1]
[1, 2]
[1, 2, 3]
def f(a,L=None): # 將參數追加到列表L中
if L is None:
L = []
L.append(a)
return L
print(f(1))
print(f(2))
print(f(3))
[1]
[2]
[3]
關鍵詞參數 (k = v)
def car(color,price ='10',user = 'coop'):
print(f'{user} has a {color} car,its price is {price}')
car('blue') # 使用的是默認參數
coop has a blue car,its price is 10
car('red','30','jiao') # 使用參數位置傳遞參數
jiao has a red car,its price is 30
car(color='yellow',price='100') #使用關鍵詞傳遞參數
coop has a yellow car,its price is 100
任意參數
# *args **kwargs: args ->tuple,kwargs ->dict argument keyword argument
def car(*args):
print(args)
for k in args:
print(k)
car('red',10,'coop')
('red', 10, 'coop')
red
10
coop
def car(**kwargs):
for k,v in kwargs.items(): #轉換成字典,所以可以使用字典的方法
print(f'{k}::{v}')
car('red',100,'coop')
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-83-08de737668de> in <module>()
2 for k,v in kwargs.items():
3 print(f'{k}::{v}')
----> 4 car('red',100,'coop')
TypeError: car() takes 0 positional arguments but 3 were given
def car(**kwargs): # **kwargs,需要傳遞key=values這樣格式的數據,然後轉換成字典
for k,v in kwargs.items():
print(f'{k}::{v}')
car(color='red',price=100,user='coop')
color::red
price::100
user::coop
def car(*args ,**kwargs):
print('args',args) #打印出來就是元組
print('kwargs',kwargs) # 打印出來的就是字典
for k in args:
print(k)
for k,v in kwargs.items():
print(f'{k}:{v}')
car('T','abc',color='red',price=200,user='coop') #如果沒有等號,就會轉換成元組,如果是k=v的形式,則會轉換成字典
args ('T', 'abc')
kwargs {'color': 'red', 'price': 200, 'user': 'coop'}
T
abc
color:red
price:200
user:coop
``