for

函數的作用

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
``

forfor
forforforforforforforforforforforfor

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章