1. 程式人生 > 其它 >python函式、內部函式、檔案操作

python函式、內部函式、檔案操作

一、函式

所謂函式,就是把重複的程式碼單獨的分離出來,放在一個公共的地方,以後可以一直的進行呼叫,這樣就可以解決多次重複來編寫。

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