可擴充套件性,可維護性
避免**冗長
可讀性函式:
函式是具備某一特定功能的工具
使用原則:先定義後呼叫
函式的定義———函式的三種形式
def 函式名(arg1,arg2):
#注釋函式體
return 返回值
1.定義無參函式:函式的執行不依賴於呼叫者傳入的引數就能執行時,需要定義為無參函式
def main():
print_tag('*',20,3)
print_msg('hello world')
print_tag('*',20,3)
main()
2.有參函式:函式的執行需要依賴於呼叫者傳入的引數才能執行時,需要定義為有參函式
def print_tag(tag,count,line_num):
for i in range(line_num):
print(tag*count)
3.空函式: 定義空函式:函式體為pass
def func(x,y,z):
pass
函式的呼叫:
函式的定義:與變數的定義是相似的
定義階段:只檢測語法,不執行**
返回值:可以返回任意型別
沒有return:none
return val1,val2,val2:(val1,val2,val3)
return 只能返回一次值並終止函式
引數:形參&實參
形參:變數名
實參:實際傳入的資料
位置引數:按照從左到右的順序依次定義的引數
按位置定義的實參,與形參一一定義
def關鍵字引數:形參=實參定義,key=valuefoo(x,y)
(x)
(y)foo(1,2)
12
def注意:1位置實參必須在關鍵字實參前面foo(x,y):
(x)
(y)foo(y=1,x=2)
2實參的形式可以是位置實參也可以是關鍵字引數,但是乙個形參只能對贏乙個實參
def預設引數(形參):在定義引數階段,就已經為形參賦值,呼叫階段可以傳值也可以不傳值,不傳值使用預設引數。foo(x,y,z):
(x)
(y)
(z)foo(1,z=2,y=5)
**預設引數必須放在位置形參後面
**值大多數情況下不變的使用預設引數
**預設引數通常定義成不可變型
**預設引數只在定義階段被賦值一次
a=10可變長引數:可變長指的是實參的個數不固定def foo(name,age=a)
print(name,age)
a=20foo(
'mona』)
mona,10
按位置定義的可變長度的實參:*
按關鍵字定義的可變長度的引數:**
def func(x,y,*args):#命名關鍵字引數:定義在*後面的形參,必須被傳值,並且必須以關鍵字的形式傳值可變的儲存為tuple
(x,y,args)
func(1,2,3,4)
1 2 (3, 4)
def func(x,y,**args):#
可變的元素儲存為字典模式
(x,y,args)
func(x=1,y=2,z=3,a=1,b=1)
1 2
(args)
(kwargs)
(1, 2, 3, 4, 5)
def register(*rg,name,age):總結:位置參宿--->預設引數---->*args---->命名關鍵字----->**kwargs(name)
(age)
register(age=18,name='
mona』)
mona
18
函式巢狀呼叫:
函式的巢狀定義:
def f1():
def f2():
函式體f2()
函式是第一類物件:指的是函式可以被當作資料傳遞
命名空間與作用域:
命名空間:存放變數名與值的繫結關係
命名空間分為三種:
三者的載入順序:內建—>全域性—>區域性
取值的順序: 區域性—>全域性——>內建
區域性作用域———>全域性作用域
作用域:作用範圍
global:x=1
deffoo():
global
x x=1000
(x)
foo()
(x)
1000
1000
nonlocal :閉包函式:函式內部定義的函式,稱為內部函式。該內部函式包含對外部作用域而非全家作用域。x=1def
foo():
deff2():
x=2def
f3():
nonlocal x
x=10000f3()
(x) f2()
foo()
(x)
10000
1
name='alex'
def func():
name='egon'
def bar():
print(name)
return bar
b=func()
b()檢視是否是閉包函式:none 就不是閉包函式
name='alex'
def func():
name='egon'
def bar():
print(name)
return bar
b=func()
print(b.__closure__)
閉包函式的特點:
定義閉包函式的基本形式:
def 外部函式:
內部函式變數
def 內部函式():
引用外部變數
return 內部函式
python函式模組化
1.python模組可以在邏輯上組織python程式,將相關的程式組織到乙個模組中去,使用良好的結構化設計,增加程式的重用性,提高 使用率 def print mytest name return mytest name import mytest mytest.print mytest mytes...
模組化程式設計 函式定義
在軟體開發的過程中,我們經常會重複的使用一些 片段,因此我們往往將這樣的 片段作為函式進行呼叫。函式有4種模式的定義和使用 q有引數,有返回值 y f x q有引數,無返回值 f x q無引數,有返回值 y f q無引數,無返回值 f 在遊戲 圖形 建築領域的軟體應用中,我們經常需要計算幾何圖形的面...
模組化程式設計
將乙個5元素陣列,右移n位,n從鍵盤輸入,首尾相接 例如 陣列中的元素為 那麼 n 3 的結果如下 資料是向右邊移三位,那麼,我轉化成先移一位的情況。因為當移一位的問題解決了,移動n位只需要將此過程迴圈n次即可 1.把a 1 放到臨時空間t t a 1 2.依次把前面元素的值放到後面的空間裡面.從後...