抽象可節省人力,使程式能夠被人理解的關鍵所在。
一、自定義函式
定義函式用def函式:
這裡的hello就是新定義的函式,return語句中就是該函式的返回值。def hello(name):
return 'hello,' +name+'!'
print (hello('world'))->hello, world!
2. callable( ):判斷函式是否被呼叫,被呼叫返回true,否則返回false.
3. return語句:用於退出函式,選擇性地向呼叫方返回乙個表示式。不帶引數值的return語句返回none.
注意:函式都必須有返回值的,如果沒有return語句,則預設返回乙個空值none.
給函式編寫文件def sum(arg1, arg2):
total=arg1+arg2
print('函式內:', total)
return total
#呼叫sum函式
total=sum(10,20)
print('函式外:', total)
返回:函式內:30
函式外:30
#如果沒有return語句則返回:
函式內:30
函式外:none
#加注釋資訊
__doc__是函式的乙個屬性,屬性名中的雙下劃線表示這是乙個特殊的屬性。
二、函式魔法
引數從呼叫的角度來說,分為形式引數和實際引數(簡稱形參和實參);形參只是代表乙個位置,乙個變數名,而實參是乙個具體的內容,是賦值到變數名中的值!
關鍵字引數:即傳入實參時指定形參的變數名,儘管使用這種技巧要多打點字,但這種技巧非常有用。
預設引數:即不輸入任何引數的情況下會有預設值列印出來,使用預設引數的話,就可以不帶引數去呼叫引數。def saysomething(name, words):
print(name+'->'+words)
saysomething(words="讓程式設計改變世界!」,name="小甲魚")
小甲魚->讓程式設計改變世界!
saysomething()->小甲魚->讓程式設計改變世界!
上面的name、words為形參,」讓程式設計改變世界「是實參,而words="讓程式設計改變世界"則是關鍵字引數.
收集引數:(也陳可變引數),即在引數前新增乙個星號(),如果要將多個引數傳入到函式中,也是需要用加列表名才能正常呼叫;星號不能收集關鍵字引數,如果要收集需要使用兩個星號(**),其可以將引數打包成字典的形式(關鍵字引數)。
作用域:(區域性變數和全域性變數)def test(*params):
print ("有%d個引數" %len(params))
print("第二個引數是:", params[1])
a=[1,2,3,4,5,6,7,8]
test(a) ->有乙個引數 error...
test(*a)->有8個引數 第二個引數是:2
這個函式中price/rate/final_price是整個函式的區域性變數,而old_price/rate/new_price則是全域性變數。區域性變數的作用範圍只在函式內部,除了這個函式discounts區域性變數變不起作用;而全域性變數在整個**段中都是可以訪問的,但是不要試圖在函式內部修改全域性變數的值,這樣會導致python自動在函式內部新建乙個名字一樣的區域性變數,很容易犯錯。一般千萬不要再函式內部修改全域性變數,會使得**非常麻煩。如果非要修改,則要用到global函式。def discounts(price, rate):
final_price= price*rate
return final_price
old_price=float(input('請輸入原價:'))
rate=float(input('請輸入折扣率:'))
new_price=discount(old_price, rate)
print('打折後**是:』,new_price)
請輸入原價:80
請輸入折扣率:0.75
打折後的**是:60.0
內嵌函式:python的函式定義是可以巢狀的,也就是允許在函式內部建立另乙個函式,這種函式叫做內嵌函式或者內部函式。count=5
def myfun():
global count
count=10
print(count)
myfun()->10
閉包:如果在乙個內部函式裡,對在外部作用域(但不在全域性作用域)的變數進行引用,那麼內部函式就被認為是閉包。
如果在乙個內部函式裡(funy就是這個內部函式)對外部作用域(但不是在全域性作用域)的變數進行引用(x就是被引用的變數,x在外部作用域funx函式裡面,但不在全域性作用域裡)則這個內部函式funy就是乙個閉包。def funx(x):
def funy(y):
return x*y
return funy
i=funx(8)
i(5)->40.
nonlocal也可以在內部函式裡修改外部函式裡的區域性變數值,使用方法與global一致 。
三、遞迴def funx():
x=5def funy():
nonlocal x
x*=x
return x
rerurn funy
funx()()->25.
遞迴即呼叫自身。
四、lambda表示式def factorial(n):
if n==1:
return 1
else:
return n*factorial(n-1)
python允許使用lambda關鍵字來建立匿名函式。
語法:lambda x: 2*x+1
其語法結構非常精簡,冒號左邊放原函式的引數,可以有多個引數,用逗號隔開,冒號右邊是返回值。如果lambda語句是返回乙個物件,則需要對它進行賦值操作
lambda表示式的作用:g=lambda x:2*x+1
g(5)->11
g=lambda x,y:x+y
g(3,4)->7
#lambda也可以使用關鍵字引數
g=lambda x, y: x**2+y**2
g(2,3)->13
g(y=4, x=3)->25
1)可以省下定義函式過程,也不需要命名函式,使得**更為精簡;
2)簡化**可讀性
兩個內建函式
mysql第六章 第六章 mysql日誌
第六章 mysql日誌 一 錯誤日誌 錯誤日誌的預設存放路徑是 mysql 存放資料的地方 hostname.err 1.修改錯誤日誌存放路徑 mysqld log error data mysql mysql.log 2.檢視配置命令 show variables like log error 3...
第六章 指標
1.多位元組資料的位址是在最左邊還是最右邊的位置,不同的機器有不同的規定,這也正是大端和小端的區別,位址也要遵從邊界對齊 2.高階語言的乙個特性就是通過名字而不是位址來訪問記憶體的位置,但是硬體仍然通過位址訪問記憶體位置 3.記憶體中的變數都是義序列的0或1的位,他們可以被解釋為整數或者其他,這取決...
第六章總結
6.1 使用滑鼠 6.1.1 滑鼠時間和滑鼠訊息 根據使用者操作滑鼠時滑鼠的位置,滑鼠訊息分為兩類 客戶區滑鼠訊息和非客戶區滑鼠訊息。1.客戶去滑鼠訊息 2.當滑鼠游標位於視窗的使用者區時,將生成客戶滑鼠訊息。滑鼠訊息和鍵盤訊息有所不同,windows 只將鍵盤有訊息傳送給具有輸入極點的視窗,但滑鼠...