1. 程式人生 > >全國計算機等級考試二級教程--python語言程式設計(2018年版)第五章:函式和程式碼複用

全國計算機等級考試二級教程--python語言程式設計(2018年版)第五章:函式和程式碼複用

宣告:本篇文章只是個人知識盲區、知識弱點、重點部分的歸納總結,望各位大佬不喜勿噴。梳理順序是按照書籍的實際順序梳理,轉載請註明出處。

作者:sumjess

 

一、函式的基本使用:

      函式包括:函式的定義和函式的使用

      使用函式的目的:降低程式設計難度、增加程式碼複用、降低程式碼行數和程式碼維護難度

1、函式的定義:

      Python語言通過保留字def定義函式,語法形式如下:

      def<函式名>(<引數列表>):

            <函式體>

            return <返回值列表>

      函式名可以是任何有效的python識別符號,引數列表是呼叫該函式時傳遞給它的值。如果需要返回值,使用保留字return和返回值列表。函式可以沒有return語句。

def fact(n):
    s=1
    for i in range(1,n+1):
        s *= i
    return s
print(fact(4))

2、函式的使用:

      呼叫函式的基本方法如下:

      <函式名>(<實際賦值引數列表>)

      例子同上。

3、函式的使用的四步驟:

      1、函式定義:確定函式名、引數名、引數的個數;

      2、函式呼叫:;

      3、函式執行:;

      4、函式返回:;

二、函式的引數傳遞:

1、可選引數傳遞:

      函式定義時的語法形式如下:

         def <函式名>(<非可選引數列表>,<可選引數> = <預設值>):

             <函式體>

            return <返回值列表>

       需要注意,可選引數一般都放置在非可選引數的後面,即定義函式時,先給出所有非可選引數,然後再分別列出每個可選引數及對應的預設值。

2、引數名稱傳遞:

      python語言同時支援函式按照引數名稱方式傳遞引數,語法形式如下:

     <函式名>(<引數名> = <實際值>)

     這種東西會顯著增強程式的可讀性。

3、函式的返回值:

      return語句可以出現在函式中的任何部分,同時可以將0個、1個或多個函式運算的結果返回給函式被呼叫處的變數。

當return返回多個值時,這些值形成了一個元組資料型別,由小括號和逗號分隔,

例如(a,b,c)

def multiply(x,y=10):
    return x*y,x+y
s=multiply(99,2)
print(s)

def multiply(x,y=10):
    return x*y,x+y
a,b=multiply(99,2)
print(a)
print(b)

當函式使用return返回多個值時,可以使用一個變數或多個變數儲存結果。

三、變數的作用域:

1、區域性變數:

      區域性變數指在函式內部定義的變數,僅在函式內部有效,當函式退出時變數將不再存在。

      內部的變數,當函式呼叫後,變數將不存在。

2、全域性變數:

      全域性變數在函式內部使用時,需要提前使用保留字global宣告:

n=2
def multiply(x,y=10):
    global n
    return x*y*n
s=multiply(99,2)
print(s)

     使用global對全域性變數宣告時,該變數要與外部全域性變數同名。

四、程式碼複用:

        使用函式的優點有:可讀性提高、實現程式碼複用、提高封裝級別、增強程式碼可讀性、使程式碼易於維護

五、例項解析:軟文的詩詞風:

        利用程式進行排版。

txt='''
人生得意須盡歡,莫使金樽空對月。
天生我材必有用,千金散盡還復來。
'''
linewidth = 30

def lineSplit(line):
    plist = [',','!','?',',','。','!','?']
    for p in plist:
       line = line.replace(p,'\n')
    return line.split('\n')

def linePrint(line):
    global linewidth
    print(line.center(linewidth,chr(12288)))

newlines = lineSplit(txt)
for newline in newlines:
    linePrint(newline)

六、習題五:

(1)全域性變數在函式內部使用時,需提前使用global宣告

(2)生成器:在yield的區域內進行迭代處理

(3)def func():

                  print("hello")          

type(func)type(func())返回的結果是:<class'function'><class'NoneType'>

(4)Python語言從沒有縮排的程式碼開始執行

(5)在函式內定義的子函式只能在函式內呼叫。

(6)生成器:在yield的區域內進行迭代處理

(7)引數傳遞的優點有:加強可讀性、降低程式碼維護難度、引數順序可任意調整

(8)函式返回值不止一個時,返回值是元組型別

(9)可變數量引數接收的值將以元組型別傳入函式。

(10)使用函式的優點:可讀性提高、實現程式碼複用、提高封裝級別、增強程式碼可讀性、使程式碼便於維護

(11)函式返回時,傳入的組合資料型別變數不會被釋放;函式內建立的且未作為返回值的組合資料型別變數被釋放。

(12)想要操作全域性列表變數時,列表型別的引數不需要加global宣告,因為組合資料型別預設是傳遞而非副本傳遞。