python中的lo函式 Python 函式

2021-10-11 13:16:34 字數 3763 閱讀 5129

函式

內建函式

print() input() len() type() ...

print('hello world')

函式 引數

定義函式

def greet(name):

print(name+'早上好')

return

第一行def的意思是定義(define)

greet是【函式名】(自己取的)

再搭配乙個括號和冒號,括號裡面的name是引數(引數名也是自己取)

第二行def下一行開始縮排的**是函式要實現的功能,也叫【函式體】

第三行函式內部一旦遇到return語句,就會停止執行並返回結果

沒有return語句的函式,python也會在末尾隱性地加上return none,

即返回none值(return none可以簡寫為return。),也可以省略return不寫

括號裡可以有引數,又能沒有引數

def pika1():

print('我最喜愛的神奇寶貝是皮卡丘')

def pika2(name):

print('我最喜愛的神奇寶貝是'+name)

區別:第乙個函式總是輸出固定的一句話,所以不需要帶引數

第二個函式需要引數name的參與,所以括號裡需要帶上name

呼叫函式

輸入函式名和引數對應的值

def pika2(name):

print('我最喜愛的神奇寶貝是'+name)

pika2('皮卡丘')          #呼叫函式,輸入函式名pika()並輸入引數'皮卡丘'

我最喜愛的神奇寶貝是皮卡丘

引數的傳遞:弄清函式有多少個引數,如何給引數賦值

def pika(name,person):                   #兩個引數

print('我最喜愛的神奇寶貝是'+name)

print('我最喜愛的馴獸師是'+person)

pika('可達鴨','小霞')                   #兩個引數賦值

我最喜愛的神奇寶貝是可達鴨

我最喜愛的馴獸師是小霞

函式重要概念

引數型別:位置引數、預設引數、不定長引數

位置引數

print('乙份主食:'+course)

menu('話梅花生','牛肉拉麵')

乙份開胃菜:話梅花生

乙份主食:牛肉拉麵

所以叫位置引數

靈活運用:

#如果採用下面這種形式傳遞,就不需要理會引數位置

乙份開胃菜:話梅花生

乙份主食:牛肉拉麵

預設引數

print('乙份主食:'+course)

print('乙份甜品:'+dessert)

menu('話梅花生','牛肉拉麵')

乙份開胃菜:話梅花生

乙份主食:牛肉拉麵

乙份甜品:綠豆沙

#因為已經預設將'綠豆沙'傳遞給dessert,呼叫時無須再傳遞。

靈活運用:

menu('話梅花生','牛肉拉麵','銀耳羹') #預設引數也可以改變

乙份開胃菜:話梅花生

乙份主食:牛肉拉麵

乙份甜品:銀耳羹

不定長引數

def menu(*barbeque):

print(barbeque)

menu('烤雞翅','烤茄子','烤玉公尺') #這幾個值都會傳遞給引數barbeque

('烤雞翅', '烤茄子', '烤玉公尺') #資料型別是元組

擴充套件元組

資料用()小括號,用法和列表類似,可迭代遍歷的

區別:列表元素可以隨時修改,但元組中的元素不可更改

綜合列子

print('乙份主菜:'+course)

print('乙份甜品:'+dessert)

for i in barbeque:

print('乙份烤串:'+i)

menu('話梅花生','牛肉拉麵','烤雞翅','烤茄子','烤玉公尺')

乙份開胃菜:話梅花生

乙份主菜:牛肉拉麵

乙份甜品:綠豆沙

乙份烤串:烤雞翅

乙份烤串:烤茄子

乙份烤串:烤玉公尺

#預設引數需要放在後面 (dessert='綠豆沙')

return語句

為什麼用return語句?

1.如果不是立即要對函式返回值做操作,

那麼可以使用return語句保留返回值

def face(name):

return name + '的臉蛋'

def body(name):

return name + '的身材'

#face('李若彤')

#body('林志玲') #函式也是可以互相巢狀這裡可以歸為一步

print('我的夢中情人:'+face('李若彤') +' + ' + body('林志玲'))

我的夢中情人:李若彤的臉蛋 + 林志玲的身材

2.需要多次呼叫函式時,可以再定義乙個主函式main(),

呼叫非主函式的返回值

def face(name):

return name + '的臉蛋'

def body(name):

return name + '的身材'

def main(dream_face,dream_body):

return '我的夢中情人:' + face(dream_face) + ' + ' + body(dream_body)

#定義主函式,可以多次呼叫

print(main('李若彤','林志玲'))

print(main('新垣結衣','長澤雅美'))

3.python函式的返回值可以是多個

多個返回值的資料型別是元組

def lover(name1,name2):

face = name1 + '的臉蛋'

body = name2 + '的身材'

return face,body

a=lover('李若彤','林志玲')

print(a)

('李若彤的臉蛋', '林志玲的身材') #一次接受多個返回值的資料型別是元組

#也可以和列表一樣取值

print('我的夢中情人:'+a[0]+' + '+a[1])

變數作用域

函式內部使用(區域性作用域),它們被稱作【區域性變數】

任何位置使用(全域性作用域),它們叫【全域性變數】

區域性變數和全域性變數【不要】取相同的名字

三種對比

def egg():

quantity = 108

egg()

print(quantity)

#會報錯,不能在函式外部(全域性作用域)使用函式內的區域性變數

quantity = 108

def egg():

print(quantity)

egg()

#函式內的區域性作用域,可以訪問全域性變數

def egg():

global quantity

quantity = 108

egg()

print(quantity)

#global語句可以將區域性變數宣告為全域性變數

擴充套件global

將區域性變數變成全域性變數

def egg():

global quantity

#global語句將變數quantity宣告為全域性變數

quantity = 108

egg()

print(quantity)

mysql中lock mysql中的鎖lock

鎖的分類 1.表級鎖 myisam 開銷小,加鎖快 不會出現死鎖 鎖定力度大,發生鎖衝突概率最高,併發度低 表共享讀鎖 表獨佔寫鎖 myisam在執行select語句時,會自動給相關表加讀鎖 執行insert update delete 語句時,自動加寫鎖 lock tables table1 re...

linux中的lo回環介面

1 linux的網路介面之掃盲 1 網路介面的命名 這裡並不存在一定的命名規範,但網路介面名字的定義一般都是要有意義的。例如 eth0 ethernet的簡寫,一般用於乙太網介面。wifi0 wifi是無線區域網,因此wifi0一般指無線網路介面。ath0 atheros的簡寫,一般指atheros...

pytorch中的loss函式(3) L1Loss

1 l1loss原理 l1loss計算 值和真實值的mean absolute error mae,平均絕對值誤差 其中 若是mean 先計算 值x與真實值y這兩個tensor中的對應位置的兩個元素的差的絕對值,得到乙個新的同樣大小的tensor,然後求這個tensor中所有元素的均值 若是sum ...