python只有函式沒有過程
函式有執行完了之後會有返回值、過程沒有
def back():
return 1,'gg',2 #會有返回值(1,'gg',2) #注意預設返回元祖
一、全域性和區域性變數
在函式裡面想改變全域性變數的值,需要加上:global xx列表或單一值
二、內嵌函式
def ee():
print "123"
def ww()
print "456"
ww() #最後在呼叫一下 你就可以在命令列輸入ee() 會有123 456輸出
在外面呼叫ww() 是無法呼叫的
三、閉包
函式式程式設計的重要語法結構,函式式程式設計是一種程式設計方式,其最經典的乙個程式語言就是lisp 主要用於繪圖與人工智慧,天才程式設計師才使用的語言
閉包概念:如果在乙個內部函式裡,對外部作用域(不是在全域性變數的引用),那麼內部函式就被認為閉包
def funx():
def funy(y):
return x * y
return funy
可以這樣用:
i = funx(8)
i(5) #先賦值x 再賦值y 最後輸出40
在內部函式中只能呼叫外部函式的區域性變數,但不能修改
還有呼叫的注意,看下面的這個栗子:
x=10
def www():
x *= x
return x #發現會報錯,因為x=10是全域性變數,而自定義函式裡面的x是區域性變數的x,
print www() #跟外面的x是不一樣的
同樣下面的這種引用也會報錯:
def fun1():
x = 5
def fun2():
x *= x
return x
return fun2()
現在輸入fun1()會報錯,因為python會把fun2()函式中的x當做內部函式的變數,不會引用外部函式的變數
避免這樣的方法以前是這樣做:
def fun1():
x = [5]
def fun2():
x [0]*= x[0]
return x[0]
return fun2() #把資料的容器變一下,變為列表
python3現在不用那麼麻煩,直接價加乙個東西就好了:
def fun1():
x = 5
def fun2():
nonlocal x #變為非區域性變數,就可以在內部函式裡面使用外部函式的變數
x *= x
return x
return fun2()
#在函式中修改全域性變數的值,使用global xx變數
#在巢狀的函式中,想在內部函式中修改外部函式的區域性變數 使用nonlocal
四、匿名函式:lambda
python寫一些執行指令碼時,使用lambda就可以省下定義函式的過程,使得**更簡單,還可以避免重複,簡化**可讀性
def ww(x):
return x * x #兩行**
lambda x : x*x #幾個字就解決 還可以 g = lambda x : x*x 就可以使用 g(x)來替代這個式子
五、介紹兩個bif
1、filter(函式,可迭代的物件列表元祖什麼的) #有兩個引數,其返回結果會是使用函式在物件中的每個元素進行迭代
#並返回為true的列表
list(filter(none,[1,0,flase,true])) #會返回[1,true]
list(filter((lambda x: x %2),range(10))) #自定義乙個函式:用x除以2 得到餘數,範圍是1到10
#用filter處理,並生成list
2、map()
map在語言裡面是對映的意思。將序列的每乙個元素作為函式的引數,並進行迭代加工
list(map(lambda x : x*2,range(10))) #生成0,2,4,6,8,10,12,14,16,18
六、補充
def funout():
def funin():
print('賓果!你成功訪問到我啦!')
return funin
上面的函式怎麼能訪問funin?
第一種方法:funout()()
第二種方法:go = funout()
go()
下面介紹乙個很好的方法,用於看有很多符號的字串中的字母、數字
可以繼續改良一下:
str1 = '''拷貝過來的字串'''
list1 =
for each in str1:
if each not in list1:
if each == '\n':
print('\\n', str1.count(each))
else:
print(each, str1.count(each))
Python 函式與變數
函式定義的時候 按位置引數打包,使用 args 打包所有的位置引數為乙個元組 按關鍵字引數打包,使用 kwargs 打包所有的關鍵字引數為乙個字典 什麼時候使用打包 不確定引數的數量的時候 def 函式名 args,kwargs pass函式呼叫的時候 特點的情況 按位置引數進行拆包,如果 元組 列...
Python入門課程1 2 什麼是函式
乙個輸入一些值,進行一系列操作,再輸出 或不輸出一些值的過程 def count a,b n a b return n1 簽名 以def開始的第一行def count a,b 是乙個函式的簽名。該標誌建立了乙個新的識別符號 count 作為函式的名稱。並且設立了預期的引數個數,以及標識這些引數的名稱...
Python入門 匿名函式與偏函式
python早期沒有匿名函式,但後來出現了lambda表示式,python用lambda表示式充當匿名函式 用法 lambda 引數1,引數2,只能有一行 可寫函式說明 sum lambda arg1,arg2 arg1 arg2 lambda對結果預設return 呼叫sum函式 print 相加...