Python入門 12 函式與變數

2022-08-30 21:39:13 字數 2669 閱讀 6703

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 相加...