python自定義函式需要注意的問題:
1.縮排。乙個語句塊要用相同的縮排,兩個縮排相同的邏輯行可以看做可以並列的關係,不可能是所屬關係。
return需要跟for對齊,否則
2.遍歷。range(n) 代表的是從0開始,遍歷到n-1,步長為1
range(1,n+1) 代表從1開始,遍歷到n 步長為1
range(1,n+1,2)代表從1開始,遍歷到n 步長為2、
3.自定義函式後可以返回乙個值(return)
return保留字用來傳遞返回值
函式可以有返回值也可以沒有
可以有return 也可以沒有
4.雙引數可變引數傳遞 b表達不確定的因素
如果 for j in n
#加上代表不確定給的數值,但是不加會返回錯誤,會把n看做int型別
如果for range in(1,n)
則不需要加,示例如下
定義了2個引數 但是給了3個值????不確定怎麼處理
6.區域性變數與全域性變數
基本資料變數
規則一:區域性變數和全域性變數是不同的變數
區域性變數是函式內部的佔位符 與全域性變數可能重名但不同
函式運算結算後 區域性變數被釋放
用global在區域性變數中使用全域性變數—宣告
n,s=10,100 *****— ns為全域性變數
def fact(n): *****— 區域性變數
s=1 *****—區域性變數
for i in range(1,10): 區域性變數
s*=i *****— 區域性變數
return s *****—區域性變數
print(fact(n),s) *****— 此時s是全域性變數
》362880100
注意:fact(n) 只有被return才能被傳遞
如果不return print(fact(n))為none
如果在函式內部使用全域性變數 用global
n,s=10,100 *****— ns為全域性變數
def fact(n): *****— 區域性變數
*global s *****—全域性變數*
for i in range(1,10): 區域性變數
s*=i *****— 區域性變數
return s *****—區域性變數
print(fact(n),s) *****— 此時s是全域性變數
》3628800036288000
規則二:區域性變數是組合資料型別並且未建立,等同於全域性變數
ls=[「f」,「f」]
return
func(1)
print(ls)
》[『f』, 『f』, 1]
因為ls在函式中沒有真實建立 所以 在函式中的ls等於全域性變數
但是如果在函式中真實建立了ls 則返回的是全域性變數 見下例
ls=[「f」,「f」]
def func(s):
ls= 真實建立了ls
總結:如果組合資料型別在函式中被真是建立 則不同於全域性變數 如果函式結束 區域性變數即被釋放。如果組合型別沒有真實建立 則等同於全域性變數
7、lambda函式
能夠返回函式名作為結果
lamda 保留自定義 函式名是返回結果
lamda 引數:表示式
f=lamda x,y:x+y
f(1,2)應用:一般使用 def return 謹慎使用lambda 主要用於特定函式或方法的引數有固定使用方式3
單元小結:
def 定義函式 lambda定義匿名函式
可選引數 注意 定義時要賦予初值 名稱的引數傳遞
return 返回多個結果
保留字global宣告全域性變數
基本資料型別和組合資料型別的規則
sum = lambda x,y:x+y
sum(6+9)
filter 函式
功能: filter的功能是過濾掉序列中不符合函式條件的元素,當序列中要刪減的元素可以用某些函式描述時,就應該想起filter函式。
呼叫: filter(function,sequence),function可以是匿名函式或者自定義函式,它會對後面的sequence序列的每個元素判定是否符合函式條件,返回true或者false,從而只留下true 的元素;sequence可以是列表、元組或者字串。
例子:x = [1,2,3,4,5]
list(filter(lambda x:x%2==0,x)) # 找出偶數。python3.*之後filter函式返回的不再是列表而是迭代器,所以需要用list轉換。
[2, 4]
map 函式
功能: 求乙個序列或者多個序列進行函式對映之後的值,就該想到map這個函式,它是python自帶的函式,在python3.*之後返回的是迭代器,同filter,需要進行列表轉換。
呼叫: map(function,iterable1,iterable2),function中的引數值不一定是乙個x,也可以是x和y,甚至多個;後面的iterable表示需要參與function運算中的引數值,有幾個引數值就傳入幾個iterable。
例子:x = [1,2,3,4,5]
y = [2,3,4,5,6]
list(map(lambda x,y:(x*y)+2,x,y))
[4, 8, 14, 22, 32]
reduce 函式
功能: 對乙個序列進行壓縮運算,得到乙個值。但是reduce在python2的時候是內建函式,到了python3移到了functools模組,所以使用之前需要 from functools import reduce
呼叫: reduce(function,iterable),其中function必須傳入兩個引數,iterable可以是列表或者元組
例子:x=[1,2,3,4,5]
from functools import reduce
reduce(lambda x,y: x+y, x)
例子:import numpy as np
import pandas as pd
a = np.random.randint(low=0,high=4,size=(2,4))
data = pd.dataframe(a)
想知道當前程式或是程序執行到某個地方時,記憶體裡有哪些變數,獲取他們的name 列表:
dir()
刪除單個變數
del x # 刪除變數 x
自定義 LayoutManger需要注意的幾個地方
最近寫銷控表,需要有上萬個資料 的情況,首先感謝 的帖主,給了大家乙個非常好的例子。本文也是根據他的帖子的原理,整理了自己在編寫銷控表的時候遇到的問題。很多demo 在onlayoutchildren 方法中 進行兩個動作,乙個是計算得到真實的最大寬高,乙個是進行layout的動作,我的觀點,一旦外...
STL自定義排序函式 需要注意的問題
1.例子 先舉個例子 分析一下程式的執行結果 看看在三種情況下程式的輸出分別是什麼,有可能出現異常 pragma once include include 下面是三個自定義的謂詞函式,排序演算法將分別使用這三個函式 bool compare int a,int b bool compare1 int...
自定義Cell需要注意的問題
使用xib建立cell時需要在設定單元格樣式時使用 nsbundel mainbundel loadnibname xib的檔名 owner self option nil 0 來初始化單元格 而使用純手寫 時,需要使用init方法來初始化cell上的控制項,來避免單元格重影問題,而xib不會出現重...