函式
內建函式
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 ...