函式 模組化的程式設計

2022-03-17 08:27:26 字數 3436 閱讀 6831

可擴充套件性,可維護性

避免**冗長

可讀性函式:

函式是具備某一特定功能的工具

使用原則:先定義後呼叫

函式的定義———函式的三種形式

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

foo(x,y)

print

(x)

print

(y)foo(1,2)

12

關鍵字引數:形參=實參定義,key=value

def

foo(x,y):

print

(x)

print

(y)foo(y=1,x=2)

注意:1位置實參必須在關鍵字實參前面

2實參的形式可以是位置實參也可以是關鍵字引數,但是乙個形參只能對贏乙個實參

def

foo(x,y,z):

print

(x)

print

(y)

print

(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

print

(x,y,args)

func(1,2,3,4)

1 2 (3, 4)

def func(x,y,**args):#

可變的元素儲存為字典模式

print

(x,y,args)

func(x=1,y=2,z=3,a=1,b=1)

1 2

print

(args)

print

(kwargs)

(1, 2, 3, 4, 5)

命名關鍵字引數:定義在*後面的形參,必須被傳值,並且必須以關鍵字的形式傳值

def register(*rg,name,age):

print

(name)

print

(age)

register(age=18,name='

mona』)

mona

18

總結:位置參宿--->預設引數---->*args---->命名關鍵字----->**kwargs

函式巢狀呼叫:

函式的巢狀定義:

def f1():

def f2():

函式體f2()

函式是第一類物件:指的是函式可以被當作資料傳遞

命名空間與作用域:

命名空間:存放變數名與值的繫結關係

命名空間分為三種:

三者的載入順序:內建—>全域性—>區域性

取值的順序: 區域性—>全域性——>內建

區域性作用域———>全域性作用域

作用域:作用範圍

global

:x=1

deffoo():

global

x x=1000

print

(x)

foo()

print

(x)

1000

1000

nonlocal :

x=1def

foo():

deff2():

x=2def

f3():

nonlocal x

x=10000f3()

print

(x) f2()

foo()

print

(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.依次把前面元素的值放到後面的空間裡面.從後...