定義 自己總結:就相當於現實中各種用途的工具,有著對數據進行各種處理的功能(實質就是比較複雜的變數?!) 分類 自定義函數和Python語言已經定義過的常用的內置函數 自定義函數的組成部分 自己理解: ①def:是內置函數名(保留標識符),用於自定義一個自定義函數,實現需要內置函數沒有的功能 ②函數 ...
定義
自己總結:就相當於現實中各種用途的工具,有著對數據進行各種處理的功能(實質就是比較複雜的變數?!)
分類
自定義函數和Python語言已經定義過的常用的內置函數
自定義函數的組成部分
def 函數名(參數1,參數2...): ''' 函數的描述及功能 ''' 語句1 語句2 return 返回值
自己理解:
①def:是內置函數名(保留標識符),用於自定義一個自定義函數,實現需要內置函數沒有的功能
②函數名:就是標識符(?!),相當於工具的名字,方便調用和區分
③參數:根據功能要求可有可無,分為形式參數和實際參數,形參本質就是變數名,有位置形參、預設形參;實參就是變數值,有位置實參、關鍵字實參,兩者可以混用,規則是所有位置實參必須都在關鍵字實參左邊,一個形參有且只能對應一個實參。如果形參為:“*args”,表示用來接收溢出的位置實參,相當於把位置實參作為一個元組,遍歷元組取元素的值分別作為實參運行函數,相對應的實參就為:“*(實參)”,表示:*後面的分別取出溢出實參如果形參為**wdargs表示用來接收溢出關鍵字實參,相當於把關鍵字實參作為一個字典,遍歷字典取鍵值對作為關鍵字實參運行函數。如果實參
使用**{key1:value,key2:value};這是把**後面的參數遍歷取出當做關鍵字實參應用
④語句就是實現函數功能的過程代碼,定義函數階段只檢測語法,是把函數語句當做字元串存儲在記憶體中,不執行,調用階段才執行具體代碼
⑤return:標識符,函數結束的標誌;返回值可以是任意個數的任意數據類型,0個:None,1個:值本身,多個:依元組形式返回
使用
調用函數格式:函數名(參數),調用之後才會執行語句
例子
1、
def far(): ''' 列印“from far” ''' print('from far') return def foo(): ''' 列印“from foo” ''' print('from foo') return far() foo() ''' 結果: from far from foo '''
2、
def func(): '''實驗毫無意義''' name = 'Jim' age = '18' hobby_list = ['read', 'write'] return name, age, hobby_list name, age, hobby_list = func() print(f'name,age,hobby_list: {name, age, hobby_list}') ''' 結果: name,age,hobby_list: ('Jim', '18', ['read', 'write']) '''
3、
def register(name, hobby, hobby_list=[]): hobby_list.append(hobby) print(f' {name} like {hobby}') print(f'{name} like {hobby_list}') register('Jim', 'reading',) register('Gru', 'bedthings',) register('Dru', 'money',) ''' 結果: Jim like reading Jim like ['reading'] Gru like bedthings Gru like ['reading', 'bedthings'] Dru like money Dru like ['reading', 'bedthings', 'money'] '''
4、
def register(name, hobby, hobby_list=None): if hobby_list == None: hobby_list = [] hobby_list.append(hobby) print(f'{name} like {hobby}') print(f'{name} like {hobby_list}') register('Jim', 'reading',) register('Gru', 'bedthings',) register('Dru', 'money',)
''' 結果: Jim like reading Jim like ['reading'] Gru like bedthings Gru like ['bedthings'] Dru like money Dru like ['money'] '''
5、
def func(x, y, *args, **kwargs): print(x, y, args, kwargs) print(x, y, *args, kwargs) func(1, 2, 3, *(4, 5),) func(1, 2, c=8, **{'a': 6, 'b': 7}) ''' 結果: 1 2 (3, 4, 5) {} 1 2 3 4 5 {} 1 2 () {'c': 8, 'a': 6, 'b': 7} 1 2 {'c': 8, 'a': 6, 'b': 7} '''
6、
def index(l, name, age, sex): print(f"{l}, name: {name}, age: {age}, sex: {sex}") def wrapper(*args, **kwargs): print(f"args: {args}") print(f"kwargs: {kwargs}") index(*args, **kwargs) wrapper(1, name='nick', sex='male', age=19) ''' 結果: args: (1,) kwargs: {'name': 'nick', 'sex': 'male', 'age': 19} 1, name: nick, age: 19, sex: male '''
實現註冊、登錄功能函數
def register(): """註冊功能""" username = input('username: ').strip() pwd = input('password: ').strip() with open('38a.txt', 'a', encoding='utf8') as fa: fa.write(f"{username}: {pwd}\n") fa.flush() register() def login(): """登錄功能""" while True: inp_username = input('username: ').strip() inp_pwd = input('password: ').strip() if inp_username == 'Jim' and inp_pwd == '123': print('歡迎你,Jim') break else: print('用戶名或者密碼錯誤') login()