python函式、內部函式、檔案操作
阿新 • • 發佈:2021-11-24
一、函式
所謂函式,就是把重複的程式碼單獨的分離出來,放在一個公共的地方,以後可以一直的進行呼叫,這樣就可以解決多次重複來編寫。
1.定義函式使用的關鍵字是def
2.定義規則:
def 函式名稱(形式引數):
函式的表示式
3.除錯模式:debug的模式 那麼程式執行也是在debug模式下執行
4.引數:
在一個函式中,我們把函式裡面的引數叫形式函式,函式實際呼叫的時候,賦予的引數叫實際函式
預設引數:在定義函式的時候,給函式的形式引數指定他的預設值,他的優先順序是低於實際引數的
動態引數:
1.當定義的函式形式引數的個數不確定的時候
2.當定義的函式形式引數的資料型別不確定的時候
在動態引數裡面,一個*代表的是元組,兩個*代表的是字典
動態引數能夠解決什麼?
當一個藉口請求引數有時候是2個,有時候是3個,有時候是n個,如果按照正常的思維,我們需要編寫n個函式
那麼有了動態引數,我們只需要寫一個引數就好了
也就是說,當我們呼叫被定義動態引數的時候,實際引數如果存在,基本是key=value的情況,
基本是字典的資料型別,非key=value,所有的型別都是元組
5.返回值:
- 1、當一個函式裡面,有return,那麼函式的返回值就是return後面的值
- 2、當一個函式裡面,沒有return,那麼函式的返回值是none
- 3、一個函式可以有多個返回值
如果在單個的函式角度而言,函式其實有沒有返回值無所謂的
但是函式與函式之間需要建立一層關聯關係那麼就可以通過函式的返回值把這層關聯關係建立起來。
函式的形式函式他的實際引數的值也可以是函式
def login(username="caiying",password="admin"): '''登入''' if username=='caiying' and password=='admin': return True else: return False def profile(ASD): #定義函式 '''個人主頁''' #註釋函式是做什麼的 if ASD: print('歡迎您訪問我的個人主頁') else: print('登入失敗,請再次登入') profile(login())
5.程式執行的入口:
main:主函式,在其他的程式語言裡面,執行的程式碼必須在主函式裡面可以執行,其他不可以執行
但是python都可以,設計主函式的目的:指定程式執行的入口
6.全域性變數 區域性變數
全域性變數:值得是定義這個變數他的作用域是這個python檔案
區域性變數:在函式內部定義的變數,叫區域性變數,那麼他的作用域僅僅是針對變數而已
備註:當全域性變數與區域性變數名稱一致的時候:
1、在函式內部,區域性變數的優先順序高於全域性變數的
2、在python檔案而言,全域性變數的優先順序是高於區域性變數的
#全域性變數 name="asd" def func(): #在函式內部引用全域性變數 #如果想再函式內部呼叫全域性變數,我們就用關鍵字global申明全域性變數 global name name="admin" print(name) func()
二、內部函式
1.lambda:匿名函式
c=lambda x,y:x+y
print(c(2,3))
2.filter:過濾
#常規方式
lists=[x for x in range(10)]
list2=list()
for item in lists:
if item>3:
list2.append(item)
print(list2)
#函式
def func(a):
if a>3:
return True
print(list(filter(func,lists)))
print(list(filter(lambda a:a>3,lists)))
print(list(filte
3.map對所有物件進行同樣的操作
lists=[x for x in range(10)] def func(a): return a+10 print(list(map(func,lists))) print(list(map(lambda a:a+10,lists)))
4.eval():字串轉為表示式
str1='5+10' print(eval(str1))
5.range():包含開始不包含結尾
for item in range(5): print(item)
6.ord():字母轉為數字
print(ord('1'))
7.chr():數字轉為字母
print(chr(90))
8.匯入random的庫
#匯入random的庫 相當於隨機生成的驗證碼 import random #匯入random的庫 list1=[] #建立個空列表 for i in range(6): #展示6位 r=random.randrange(97,120) #從97到120 隨機抽取數字 list1.append(chr(r)) #將r裡的數字轉為字母 print(''.join(list1)) #將列表轉為字串
三、函式實戰
def out(): username = input('請輸入賬戶:\n') password = input('請輸入密碼:\n') return username,password def register(): '''註冊賬戶''' username, password asd=username+' '+password f=open('user.txt','w') #新建一個user.txt的檔案 執行寫的許可權 f.write(asd) #在檔案裡寫入上面賦值的變數asd f.close() #關閉檔案 def login(): '''登入''' username, password f=open('user.txt','r') #開啟user.txt的檔案 執行讀的許可權 lists=f.read().split(' ') #將讀到的user.txt的檔案的內容,轉為列表 #如果username=lists中第0個索引的值,password=lists中第1個索引的值 if username==lists[0] and password==lists[1]: print('login success') #輸出登入成功 else: print('login failed') #否則,輸出登入失敗 while True: f=int(input('1、註冊 2、登入 3、其他\n')) #將輸入的值強制轉化為int型別 if f==1: register() elif f==2: login() elif f==3: break