python函式部分整理

2022-05-02 17:27:09 字數 3390 閱讀 2208

函式

定義def mystr(): 定義函式名

注釋 對函式執行內容說明,增強可讀性

pass 函式體

mystr() 執行函式

函式返回值

return

返回值三種情況:

沒有返回值:return不寫返回none return後面不寫也返回none

return後面不寫 結束整個函式

return none也返回none,一般不這麼寫

返回乙個值:return + 需要返回的內容

返回多個值:return + 任意多、任意資料型別的值 str、int、list...

返回的多個值為元組型別,可由乙個變數接收,或者用多個變數接收

函式的引數:

def 函式名(形參[可以是多個用,隔開。][乙個具體的形參只能賦值一次][位置引數必須傳值否則報錯]):

(形參中還可以定義預設引數,即不變的形參)

(形參定義還可以定義為動態引數 即:*args,**kwargs args接收除鍵值對以外的引數,kwargs接收鍵值對的引數,儲存在字典中)

(在沒有動態引數時,實參形參必須一一對應,必須一一對應)

pass

函式名(實參[位置引數(1,2)、關鍵字引數(a = 1, b = 2)][混合傳參:1,b=2])

實參進行傳參時,必須位置引數在前,關鍵字引數在後

函式命名空間

命名空間分三種:

全域性命名空間 變數與值對應關係的空間

區域性命名空間 函式執行開闢的空間

內建命名空間 存著python中內部的一些方法的空間

載入順序 內建 全域性 區域性

取值順序 區域性 全域性 內建

作用域全域性作用域 內建 全域性

區域性作用域 區域性

global 和 nonlocal

global 宣告全域性變數 在區域性作用域中想要對全域性變數進行修改(str/int)(list,dict...可變資料直接引用即可)

nonlocal 不能修改全域性變數 在區域性作用域中,對父級作用域或者更外層作用域非全域性作用域的變數進行引用和修改,

並且引用的哪層,從那層及以下此變數全部發生改變

例子:def add_b():

b = 42

def do_global():

b = 10

print(b)

def dd_nonlocal():

nonlocal b

b = b + 20

print(b)

dd_nonlocal()

print(b)

do_global()

print(b)

add_b()

函式巢狀和作用域鏈

巢狀:在乙個函式中呼叫另乙個函式

作用域鏈:小範圍找大範圍變數,反推則不行 單向

函式名的本質

本質是記憶體位址

可以被引用

可以被當做容器型別的元素

可以當做函式的引數和返回值

第一類物件(first-class object)指

1.可在執行期建立

2.可用作函式引數或返回值

3.可存入變數的實體。

閉包內部函式包含對外部作用域而非全域性作用域變數的引用

__closure__判斷是否是閉包

閉包巢狀

閉包獲取網路應用

裝飾器基本形態:

def inner(*args,**kwargs):

'''執行被裝飾函式之前的操作'''

ret = f(*args,**kwargs)

'''執行被裝飾函式之後的操作'''

return ret

return inner()

裝飾器的固定格式--wraps版

from functools import wraps

def deco(func):

@wraps(func) #加在最內層函式正上方

return func(*args,**kwargs)

帶引數的裝飾器

def outer(flag):

def timer(func):

def inner(*args,**kwargs):

if flag:

print('''執行函式之前要做的''')

re = func(*args,**kwargs)

if flag:

print('''執行函式之後要做的''')

return re

return inner

return timer

@outer(false)

def func():

print(111)

func()

多個裝飾器裝飾乙個函式

def inner():

func()

return inner

def inner():

func()

return inner

def f():

print('in f')

f()遵循開放封閉原則

對擴充套件是開放的

對修改是封閉的

迭代器迭代器遵循迭代器協議:必須擁有__iter__方法和__next__方法。

for迴圈,能遍歷乙個可迭代物件,他的內部到底進行了什麼?

將可迭代物件轉化成迭代器。(可迭代物件.__iter__())

內部使用__next__方法,乙個乙個取值。

加了異常處理功能,取值到底後自動停止。

生成器生成器本質就是迭代器

列表推導式和生成器表示式

例如:l = [i *2 for i in range(10)]

print(l)

l = (i *2 for i in range(10))

print(next(l))

內建函式

匿名函式

普通函式如下:

def num(n):

return n**n

print(num(2))

轉換匿名函式

num = lambda n:n**n

(函式名 = 定義匿名函式關鍵字和def相似 引數 返回值 )

print(num(2))

函式和方法的區別

1、函式要手動傳self,方法不用傳

2、如果是乙個函式,用類名去呼叫,如果是乙個方法,用物件去呼叫 

遞迴遞迴最大深度: 998

def foo(n):

print(n)

n += 1

foo(n)

foo(1)

二分查詢演算法

PHP部分函式整理

1.gettype 獲取變數型別 2.is array 判斷變數是否為陣列型別 3.is double 判斷變數是否為倍浮點數型別 4.is float 判斷變數是否為浮點數型別 5.is int 判斷變數是否為整數型別 6.is integer 判斷變數是否為整數型別 7.is long 判斷變數...

Python 函式部分

1 區域性變數 區域性變數名只存在於函式這一區域性,這被稱之為變數的作用域 scope 所有變數的作用域是它們被定義的塊,從定義它們的名字的定義點開始。2 全域性變數 可以使用定義於函式之外的變數的值 假設函式中沒有具有相同名字的變數 如果之外有變數,則更改後覆蓋原值。3 預設引數值 使一些引數可選...

python 部分函式

abs number 返回數字的絕對值 cmath.sqrt number 返回平方根,也可以應用於負數 float object 把字串和數字轉換為浮點數 help 提供互動式幫助 input prompt 獲取使用者輸入 int object 把字串和數字轉換為整數 math.ceil numb...