將多行代碼拿到別處並起個名字,之後經過名字就能夠找到這行代碼並執行編程
代碼重複執行app
代碼量不少超過一屏,能夠選擇經過函數進行代碼的分割ide
寫代碼方式:面向過程----函數式編程(多)----面向對象編程函數式編程
# 函數的定義
def 函數名():
函數內容
pass
# 函數的執行
函數名()
# 示例一 def list_data(): v = [11,54,52] print(v[1]) list_data() # 54
函數若是不被調用,則內部永遠不會被執行函數
# 練習題 # 1.請寫一個函數,函數計算列表 info = [11,22,33,44,55]中全部元素的和 def list_data(): s = 0 info = [11, 22, 33, 44, 55] for i in info: s = s + i print(s) list_data() # 165 # 2.請寫一個函數,用函數將列表拼接起來 def new_list(a,b): c = [] c.extend(a) c.extend(b) print(c) a1 = [555,4,6,5,6] a2 = [5646,86,6,] new_list(a1,a2) # [555, 4, 6, 5, 6, 5646, 86, 6] # 3.計算一個列表的長度 def list_len(age): conten = 0 for i in age: conten +=1 print(conten) v = [11,2,'rtffd','r','g','fsd',77] list_len(v) # 7
函數沒有返回值,默認返回:Noneui
函數內部執行過程當中遇到return,就終止。spa
return 能夠返回任意類型code
若是return後面寫了多個結果,,返回給調用者一個tuple(元祖),調用者能夠直接使用解構獲取多個變量對象
def func():
return (1,2,3)
v = func()
print(v) # (1, 2, 3)
# 特殊:多個返回值,返回值爲元組
def func():
return 5,8,"alex"
v = func()
print(v) # (5, 8, 'alex')
def func(age):
#函數
return 9 # 返回默認值爲9,默認:return None
val = func('asdfghj')
# 示例一 1.讓用戶輸入一段字符串,計算字符串中有多少個A字符的個數,有多少就在a.txt中寫多少個"大王八" def jisuan_a(aa): s = 0 for i in aa: if i =='A': s+=1 return s def xieru_d(bb): if len(bb) == 0: return False with open('a.txt',mode='w',encoding='utf-8') as f: f.write(bb) return True a = input("請用戶輸入") a1 = jisuan_a(a) b = "大王八" * a1 b1 = xieru_d(b) print(b1) # 示例二 2. 寫函數,計算一個列表中有多少個數字,打印: 列表中有%s個數字。 # # 提示:type('x') == int 判斷是不是數字。 def a_list(b): s = 0 for i in b: if type(i) == int: s = s + 1 print(s) a = input("請輸入列表") a = a_list(a) # 示例三 2. 寫函數,計算一個列表中偶數索引位置的數據構形成另一個列表,並返回。 def a_list(b): b1 = b[::2] return b1 a = input("請輸入列表") a = a_list(a) # 示例三 3. 讀取文件,將文件的內容構形成指定格式的數據,並返回。 a.log文件 alex|123|18 eric|uiuf|19 ... 目標結構: a. ["alex|123|18","eric|uiuf|19"] 並返回。 b. [['alex','123','18'],['eric','uiuf','19']] c. [ {'name':'alex','pwd':'123','age':'18'}, {'name':'eric','pwd':'uiuf','age':'19'}, ] # a def a_1(a): b = [] # a = open('log.txt',mode='r',encoding='utf-8') for i in a: i = i.strip() b.append(i) print(b) return a1 = a_1(open('log.txt',mode='r',encoding='utf-8')) # b def a_1(a): b = [] for i in a: i = i.strip() i = i.split('|') b.append(i) print(b) return a1 = a_1(open('log.txt',mode='r',encoding='utf-8')) # c def a_1(a): b = [] c = {} for i in a: i = i.strip() i = i.split('|') c['name'] = i[0] c['pwd'] = i[1] c['age'] = i[2] b.append(c) print(b) return a1 = a_1(open('log.txt',mode='r',encoding='utf-8'))
# 狀況一
def f1():
pass
f1()
# 狀況二
def f2(a1):
pass
f2(123)
# 狀況三
def f3():
return 1
v1 = f3()
# 狀況四
def f4(a1,a2):
#....
return 333
v2 = f4(1,22)
總結一:
定義:def 關鍵詞開頭,空格以後接函數名稱和圓括號(),最後還有一個":"。
def 是固定的,不能變,必須是連續的def三個字母,不能分開。。。它們要相親相愛的在一塊兒。
空格 爲了將def關鍵字和函數名分開,必須空(四聲),固然你能夠空2格、3格或者你想空多少都行,但正常人仍是空1格。
函數名:函數名只能包含字符串、下劃線和數字且不能以數字開頭。雖然函數名能夠隨便起,但咱們給函數起名字仍是要儘可能簡短,並能表達函數功能
括號:是必須加的,先別問爲啥要有括號,總之加上括號就對了!
註釋:每個函數都應該對功能和參數進行相應的說明,應該寫在函數下面第一行。以加強代碼的可讀性。
調用:就是 函數名() 要記得加上括號,好麼好麼好麼。
__name__
== '__main__
'__name__
== '__main__
' 執行的文件就是__name__
所在的文件blog
控制當這個py文件被看成腳本直接執行的時候,就執行這裏面的代碼
__name__
== '文件名' __name__
就是所在文件被導入的時候
當這個py文件被看成模塊導入的時候,就不執行這裏面的代碼