變數作用域:
全域性變數與區域性變數的作用域不同
生命週期不同
全域性變數
g_a=10
deftest1():
globalg_a 告訴程式這裡是全域性變數
g_a=20
print(g_a)
deftest2():
print(g_a)
test1()
當全域性變數和區域性變數同名時,區域性變數優先
區域性變數
deftest1():
g_a=20
print(g_a)
test1()
匿名函式:
python使用
lambda
來建立匿名函式
語法:lambda[arg1[arg2.......argn]]:expression
可寫函式說明
sum=lambda arg1,arg2:arg1+arg2;
呼叫sum函式
print」相加後的值為:」,sum(10,20)
sum=lambdaarg1,arg2:arg1+arg2;
print(sum(10,20))
也可以傳乙個引數
defadd(a,b,fun):
print(fun(a,b))
add(22,22,lambdaarg1,arg2:arg1+arg2 )
三個重要的大資料用到的函式:
>>> foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]
>>> printfilter(lambda x: x % 3 == 0, foo)
[18, 9, 24, 12, 27]
>>> printmap(lambda x: x * 2 + 10, foo)
[14, 46, 28, 54, 44, 58, 26, 34, 64]
>>> printreduce(lambda x, y: x + y, foo)
139
filter():對於列表中的元素進行篩選,最終獲取符合條件的序列
python內建了求和函式
sum(),
但沒有求積德函式,請利用
reduce()
來求積
fromfunctoolsimportreduce 匯入reduce()函式
排序:sorted
內建的sorted()函式可對
list
進行排序
sorelist=[12,85,47,2,63,77]
print(sorted(sorelist)) 從小到大正序
print(sorted(sorelist,reverse=true))從大到小倒序
對字串排序時,有時候忽略大小排序更符合習慣。請利用sorted()高階函式,實現忽略大小寫排序的演算法
a=['as','sa','ssd','zlo']
print(sorted(a,key=str.lower))
sorted()也是乙個高階函式,它可以接收乙個比較函式來實現自定義排序,
產生隨機數的方法:
迭代器協議
迭代器是訪問集合內元素的一種方式。迭代器物件從集合的第乙個元素開始訪問,直到所有的元素都被訪問一遍後結束。
迭代器協議:物件需要提供next()方法,它要麼返回下乙個物件,要麼引起乙個
stoplteration異常
可迭代物件:實現了迭代器協議的物件
for,max,min,sum,等使用迭代器協議訪問物件
構建迭代器的時候,以一種延遲計算(lazyevaluation)方式返回元素,這正是它的優點。比如列表中含有一千萬個整數,需要佔超過
400m
的記憶體但迭代器之需要幾十個位元組的空間。因為它並沒有把所有元素裝載到記憶體中,而是等到呼叫
next
方法時才返回該元素
(按需呼叫
call by need
的方式,本質上
for迴圈就是不斷呼叫迭代器的
next方法)
生成器python使用生成器對延遲操作提供了支援
所謂延遲操作,是指在需要的時候才產生結果,而不是立即產生結果。這也是生成器的主要好處。
python有兩種不同的方式提供生成器
1.生成器函式:常規函式定義
,但是,使用
yield
語句而不是
return
語句返回結返回乙個結果,在每個結果中間,掛起函式的狀態,以便下次重它離開的地方繼續執行果。
yield
語句一次
2.生成器表示式:類似於列表推導,但是,生成器返回按需產生結果的乙個物件,而不是一次構建乙個結果列表
用生成器返回自然數平方
defpf(n):
foriinrange(n):
yieldi**2
forjinpf(5):
print(j,end=" ")
生成器的好處是延遲計算,一次返回乙個結果。也就是說,它不會一次生成所有的結果,這對於大資料量處理,將會非常有用
sum([i for i in xrange(10000000000)])
sum(i for i in xrange(10000000000))
對於前乙個表示式還沒有看到最終結果電腦就已經卡死,對於後乙個表示式,幾乎沒有什麼記憶體占用。
生成器只能遍歷一次
Python 函式作用域
python中變數作用域分4種情況 x max 1,6 max為系統變數,它的作用域為python的所有模組 y 1 y為全域性變數,它的作用域為當前模組 defouter i 3 i的作用域為當前函式,包括巢狀函式 definner count 2 count為區域性變數,作用域只在當前函式有效函...
函式與作用域
函式宣告 function add a,b return a b 函式表示式 function variable 函式變數 varadd function a,b ief immediately excuted function 立即執行函式 function first class functio...
塊級作用域與函式作用域
函式作用域 變數在定義的環境中以及巢狀的子函式中處處可見 塊級作用域 變數在離開定義的塊級 後立即被 在es6之前,js的作用域只有兩種 函式作用域和全域性作用域。使用var宣告的變數,都存在變數提公升的過程。console.log a undefined console.log c undefin...