第八天:函数
---恢復內(nèi)容開始---
一.函數(shù)的介紹:
??? 1.為什么要用函數(shù),什么是函數(shù)?
??? ①組織結(jié)構(gòu)不清晰,可讀性差。
????②代碼冗余
??? ③管理維護難度大,擴展性差。
??? 具備某一功能的工具就是程序中的函數(shù)。
????事先準備工具的過程就是函數(shù)的定義
??? 拿來就用就是函數(shù)的調(diào)用
舉個栗子:修理工要下下水道修理,事先需要準備一個工具箱,工具箱就是函數(shù)的一個定義過程,之后下到下水道需要拿相應的工具就是函數(shù)的調(diào)用。
重點:所以函數(shù)的使用必須遵守規(guī)則:先定義,后調(diào)用。
二.函數(shù)的基本語法
1.? def 函數(shù)名(參數(shù)1,參數(shù)2,參數(shù)3...............)
????? '''
???? 文件的解釋
???? '''
???? 代碼一
???? 代碼二
?????代碼三
???? return值
?? def:定義函數(shù)的關鍵字
?? 函數(shù)名:用來調(diào)用函數(shù)的
?? 代碼塊:實現(xiàn)函數(shù)的功能
?? return:返回函數(shù)的值
舉幾個例子:
1.1定義的階段:
def print_sym(sym*count)
???? print_sym(sym*count)
???? print_sym(sym*count)
???? print_sym(sym*count)
???? print_sym(sym*count)
???? print_sym(sym*count)
???? print_sym(sym*count)
???? print_sym(sym*count)
1.2調(diào)用函數(shù):函數(shù)名加上括號就是在調(diào)用函數(shù)
??? print_sym('#',8)
2.定義函數(shù)的三種類型:
2.1有參函數(shù):參數(shù)的函數(shù)體代碼用來接收外部的值
def max2(x,y)#x=10,y=4
???? if? x>y:
??????? print(x)
?????else:
??????? print(y)
2.2無參函數(shù):函數(shù)體的代碼邏輯不需要調(diào)用者的摻入的情況下,就無參
def func():
???? print('------------------------')
???? print('-------soft fun-------')
???? print('------------------------')
?func()
2.3空函數(shù)體:函數(shù)體為pass
def put()
??? '''
??? 上傳功能
?? :return:
??? '''
????pass
def get()
??? '''
?下載功能
?? :return:
?? '''
?? pass
3.調(diào)用函數(shù):
函數(shù)遵守的規(guī)則:先定義后使用
注意:沒有事先調(diào)用的函數(shù)就相當于直接調(diào)用一個不存在變量名
①定義階段:只檢測語法,不執(zhí)行函數(shù)體代碼
②調(diào)用階段:根據(jù)函數(shù)名找到函數(shù)的內(nèi)存地址,然后執(zhí)行函數(shù)體代碼
③函數(shù)名加個括號就是定義函數(shù)
舉兩個例子:
①def foo():
???? print(from? foo?)
???? bar()
??? foo()#報錯,函數(shù)名bar()沒有被定義,第二步執(zhí)行的時候就會報錯
②def bar()
?????? print(from bar)
????def foo()
?????? print(from foo)
??????? bar()
foo()
③def? foo()
???????? print(from foo)
?????????bar()
?????def bar()
???????? print(from bar)
foo()
②③本質(zhì)上都是事先定義了函數(shù)名,最終函數(shù)體執(zhí)行。定義不分先后
3.1調(diào)用函數(shù)的三種形式:
①def func():#直接調(diào)用,無返回值
????? print('from func')
?? func()
②def? max2(x,y):#有參數(shù)調(diào)用,有返回值
??????? if? x>y:
??????? return x
??????? else:
????? ?retrun y
???res= max2(10,3)
?? print(res)
③ def max2(x.y)
?????? if? x>y:
??? ??return x
??????? else:
???????return y
res=max2(max2(10,3),11)#可以嵌套比較返回值
4.函數(shù)的返回值:
什么時候有返回值?
函數(shù)體代碼運行結(jié)束后需要一個返回結(jié)果給調(diào)用者
返回值有三種形式:
①沒有return,返回值為None
def func():
??? pass
res=func()
print(res)
②retrun后跟一個值,返回值本身
def func1()
?? return 1
res=func1()
print(res)
③return可以用逗號分開,返回多個值,會返回一個元組給調(diào)用者
def func2()
???? return 1,2,[1,2,3]
res=func2()
print(res)
注意點:1.return返回值沒有類型的限制
?????????????? 2.return是函數(shù)結(jié)束的標志,函數(shù)內(nèi)可以寫多個return,但執(zhí)行一次函數(shù)就立即結(jié)束,并把return后的值作為函數(shù)的返回值
?????????????? 例如:def func3():
???????????????????????????? print(first)
???????????????????????????? return?1
??????????????????????????? print(second)
???????????????????????????? return? 2
??????????????????????????? print(third)
??????????????????????????? return? 3
????????????????????? res=func3()
???????????????????? print(res)
????????????????????
?
?
?
?
?
?
?
?
?
?
?
---恢復內(nèi)容結(jié)束---
轉(zhuǎn)載于:https://www.cnblogs.com/shengg/p/8652264.html
總結(jié)
- 上一篇: GitLab10安装-部署-汉化-备份-
- 下一篇: Fragment与Activity的接口