1. 程式人生 > 其它 >python函式學習(5)

python函式學習(5)

1.函式返回值:

1)一個函式,不管是否有return,它都有返回值的,如果沒有return,它的返回值是None

2)如果有return,函式的返回值是return後面的內容,切記:return後面的程式碼是不能夠執行的。

3)函式返回值的價值是:把函式與函式能夠建立一層關聯關係。

登入網際網路產品之後,會建立一個sessionid,如果sessionid與登入的該賬戶的sessionid一致就會顯示個人主頁面。

以知乎登入為例:

def zhihulogin(username='lm',password='admin'):  #登入知乎,賬號和祕密已定義
    if username=='
lm' and password=='admin': return 'we456ertre' else: return'賬戶或密碼錯誤' def profile(session_id): #定義另一個函式 if session_id=='we456ertre': #如果session-id與登入的session_id一致
print('歡迎檢視知乎主頁')
else:
      print('請登入') 
profile(session_id
=zhihulogin())

 

2.內部函式

1.chr數字轉字母,數字最小97才能轉字母

ord字母轉數字

 

2.range裡面指定一個範圍,包含開始不包含結尾

例如:range(1,5)輸出的就是1,2,3,4

           range(4),輸出的就是0,1,2,3

3.內部庫,隨機輸出一個數字

庫都是需要匯入的,匯入的關鍵字的import

 

例項:驗證碼是如何隨機生成的?

import random   #匯入數字
list1=[]        #新建一個列表list1
for i in range(4):   #迴圈輸出4個數字
    r=random.randrange(97,120)  #r隨機生成1個數字
    list1.append(chr(r))    #將隨機生成的4個數字轉為字母,放進列表list1中
print(
''.join(list1)) #輸出,將列表轉為字串

 

4.eval:字串轉為表示式

5.lambda:匿名函式

指的是它是一個函式,但是這個函式的名稱可以是自定義的

6.過濾函式filter()

普通方式過濾出列表中大於2的數字

list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list2=[]
 def func():
    for item in list1:
         list2.append(item+10)
     print(list2)
 func()

使用過濾函式filter()
1.函式物件,但是沒有()
2.可迭代的物件(可以被迴圈)
print(list(filter(func,list1)))#過濾出List1中大於2的數字
print(list(filter(lambda x:x>2,list1)))#使用lambda函式自定義,list強制資料轉換

list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
def func(a):#定義一個函式,函式的形參為a
    if a>2:  #如果a>2
        return True   #則結果為對
print(list(filter(func,list1)))  #輸出過濾之後list1中的數字
print(list(filter(lambda  x:x>2,list1)))  #第2種方法使用過濾函式filter和lambda函式自定義相結合,list是強制資料轉換

  

7.map:針對所有物件做同樣的操作

1.函式物件

2.可迭代的物件

以下還是常規操作和使用map函式的對比

list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list2=[]
def func():
    for item in list1:
        list2.append(item+10)
    print(list2)
func()
print(
    list(map(lambda a:a+10,list1))
)

 

 

3.全域性變數與區域性變數

優先順序:

1.在python檔案中,呼叫變數,全域性變數優於區域性變數
2.在函式內部呼叫變數,區域性變數的優先順序高於全域性變數

 

 3.如果在函式內部想引用全域性變數,那麼使用的關鍵字是global

 

 

4.異常處理

異常的父類是BaseException
try:
expect:
else:
finally:
異常順序:
1.正常邏輯:try-->else-->finally
2.異常邏輯:try-->except-->finally

 

 

異常邏輯,expect捕獲異常,列印輸出異常結果,如果程式中寫了兩個except,只有一個錯誤,則列印輸出第一個捕獲到的錯誤資訊

e.args[0]是原生程式碼,可以自行修改和定義,例如”分母不能為0“

 

 正常邏輯:

 

 例項:學生成績只能輸入數字,輸入字母就會報錯,使用異常處理改造之後程式都可以正常執行

 

 輸出結果:

 

 

5.模組和包

1.在python中,每一個Python檔案都是一個模組(module)

2.包:在一個包裡面有很多的模組

3.包與資料夾的區別:包裡面有 _ init _.py檔案,資料夾沒有

例如 在testDev裡建立一個login的包:(包的圖示有個洞,資料夾沒有)

 

 資料夾:

 

 

一個模組呼叫另外一個模組檔案的變數以及函式
from packages.module import *(代表所有)
首先建立一個login的包,在login的包下建立一個模組f1.py,
再從另外一個模組匯入之前的模組裡的內容