Python基礎 4

函數基礎

  list你可以定義一個由自己想要功能的函數,以下是簡單的規則:

  • 函數代碼塊以 def 關鍵詞開頭,後接函數標識符名稱和圓括號 ()。
  • 任何傳入參數和自變量必須放在圓括號中間,圓括號之間可以用於定義參數。
  • 函數的第一行語句可以選擇性地使用文檔字符串—用於存放函數說明。
  • 函數內容以冒號起始,並且縮進。
  • return [表達式] 結束函數,選擇性地返回一個值給調用方。不帶表達式的return相當於返回 None。

語法
  Python 定義函數使用 def 關鍵字,一般格式如下:

    def 函數名(參數列表):
        函數體

以下是一個函數實例:

# 計算面積函數
def area(width, height):
    return width * height
 
def print_welcome(name):
    print("Welcome", name)
 
print_welcome("Runoob")
w = 4
h = 5
print("width =", w, " height =", h, " area =", area(w, h))

以上實例輸出結果:

Welcome Runoob
width = 4  height = 5  area = 20

函數調用

  定義一個函數:給了函數一個名稱,指定了函數裏包含的參數,和代碼塊結構。
  這個函數的基本結構完成以後,你可以通過另一個函數調用執行,也可以直接從 Python 命令提示符執行。
  如下實例調用了 printme() 函數:

實例(Python 3.0+)

# 定義函數
def printme( str ):
   # 打印任何傳入的字符串
   print (str)
   return
# 調用函數
printme("我要調用用戶自定義函數!")
printme("再次調用同一函數")

以上實例輸出結果:

我要調用用戶自定義函數!
再次調用同一函數

函數參數

  以下是調用函數時可使用的正式參數類型:

  • 必需參數
  • 關鍵字參數
  • 默認參數
  • 不定長參數

必需參數
  必需參數須以正確的順序傳入函數。調用時的數量必須和聲明時的一樣。
  調用 printme() 函數,你必須傳入一個參數,不然會出現語法錯誤:

實例(Python 3.0+)
#!/usr/bin/python3
 
#可寫函數說明
def printme( str ):
   "打印任何傳入的字符串"
   print (str)
   return
# 調用 printme 函數,不加參數會報錯
printme()

以上實例輸出結果:

Traceback (most recent call last):
  File "test.py", line 10, in <module>
    printme()
TypeError: printme() missing 1 required positional argument: 'str'

關鍵字參數
  關鍵字參數和函數調用關係緊密,函數調用使用關鍵字參數來確定傳入的參數值。
  使用關鍵字參數允許函數調用時參數的順序與聲明時不一致,因爲 Python 解釋器能夠用參數名匹配參數值。
以下實例在函數 printme() 調用時使用參數名:

實例(Python 3.0+)
#!/usr/bin/python3
 
#可寫函數說明
def printme( str ):
   "打印任何傳入的字符串"
   print (str)
   return
 
#調用printme函數
printme( str = "一個例子")

以上實例輸出結果:

一個例子

以下實例中演示了函數參數的使用不需要使用指定順序:

實例(Python 3.0+)
#!/usr/bin/python3
 
#可寫函數說明
def printinfo( name, age ):
   "打印任何傳入的字符串"
   print ("名字: ", name)
   print ("年齡: ", age)
   return
 
#調用printinfo函數
printinfo( age=18, name="fish" )

以上實例輸出結果:

名字:  fish
年齡:  50

默認參數
  調用函數時,如果沒有傳遞參數,則會使用默認參數。以下實例中如果沒有傳入 age 參數,則使用默認值:

實例(Python 3.0+)
#!/usr/bin/python3
 
#可寫函數說明
def printinfo( name, age = 35 ):
   "打印任何傳入的字符串"
   print ("名字: ", name)
   print ("年齡: ", age)
   return
 
#調用printinfo函數
printinfo( age=50, name="runoob" )
print ("------------------------")
printinfo( name="fish" )

以上實例輸出結果:

名字:  fish
年齡:  50
------------------------
名字:  runoob
年齡:  35

不定長參數
  你可能需要一個函數能處理比當初聲明時更多的參數。這些參數叫做不定長參數,和上述 2 種參數不同,聲明時不會命名。基本語法如下:

def functionname([formal_args,] *var_args_tuple ):
   "函數_文檔字符串"
   function_suite
   return [expression]

加了星號 * 的參數會以元組(tuple)的形式導入,存放所有未命名的變量參數。

實例(Python 3.0+)
#!/usr/bin/python3
  
# 可寫函數說明
def printinfo( arg1, *vartuple ):
   "打印任何傳入的參數"
   print ("輸出: ")
   print (arg1)
   print (vartuple)
 
# 調用printinfo 函數
printinfo( 70, 60, 50 )

以上實例輸出結果:

輸出: 
70
(60, 50)

還有一種就是參數帶兩個星號 **基本語法如下:

def functionname([formal_args,] **var_args_dict ):
   "函數_文檔字符串"
   function_suite
   return [expression]

加了兩個星號 ** 的參數會以字典的形式導入。


實例(Python 3.0+)
#!/usr/bin/python3
  
# 可寫函數說明
def printinfo( arg1, **vardict ):
   "打印任何傳入的參數"
   print ("輸出: ")
   print (arg1)
   print (vardict)
 
# 調用printinfo 函數
printinfo(1, a=2,b=3)

以上實例輸出結果:

輸出: 
1
{'a': 2, 'b': 3}

return語句

  return [表達式] 語句用於退出函數,選擇性地向調用方返回一個表達式。不帶參數值的return語句返回None。之前的例子都沒有示範如何返回數值,以下實例演示了 return 語句的用法:

實例(Python 3.0+)
#!/usr/bin/python3
 
# 可寫函數說明
def sum( arg1, arg2 ):
   # 返回2個參數的和."
   total = arg1 + arg2
   print ("函數內 : ", total)
   return total
 
# 調用sum函數
total = sum( 10, 20 )
print ("函數外 : ", total)

以上實例輸出結果:

函數內 :  30
函數外 :  30

Python3 File(文件) 方法

open() 方法
  Python open() 方法用於打開一個文件,並返回文件對象,在對文件進行處理過程都需要使用到這個函數,如果該文件無法被打開,會拋出 OSError。

注意:使用 open() 方法一定要保證關閉文件對象,即調用 close() 方法。

open() 函數常用形式是接收兩個參數:文件名(file)和模式(mode)。

open(file, mode='r')

完整的語法格式爲:

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

參數說明:

  • file: 必需,文件路徑(相對或者絕對路徑)。

  • mode: 可選,文件打開模式

  • buffering: 設置緩衝

  • encoding: 一般使用utf8

  • errors: 報錯級別

  • newline: 區分換行符

  • closefd: 傳入的file參數類型

  • opener:
    file 對象
      file 對象使用 open 函數來創建,下表列出了 file 對象常用的函數:

  • 1 file.close()
    關閉文件。關閉後文件不能再進行讀寫操作。

    2 file.flush()
    刷新文件內部緩衝,直接把內部緩衝區的數據立刻寫入文件, 而不是被動的等待輸出緩衝區寫入。

    3 file.fileno()
    返回一個整型的文件描述符(file descriptor FD 整型), 可以用在如os模塊的read方法等一些底層操作上。

    4 file.isatty()
    如果文件連接到一個終端設備返回 True,否則返回 False。

    5 file.next()

    Python 3 中的 File 對象不支持 next() 方法。
    返回文件下一行。

    6 file.read([size])
    從文件讀取指定的字節數,如果未給定或爲負則讀取所有。

    7 file.readline([size])
    讀取整行,包括 “\n” 字符。

    8 file.readlines([sizeint])
    讀取所有行並返回列表,若給定sizeint>0,返回總和大約爲sizeint字節的行, 實際讀取值可能比 sizeint 較大,
    因爲需要填充緩衝區。

    9 file.seek(offset[, whence])
    設置文件當前位置

    10 file.tell()
    返回文件當前位置。

    11 file.truncate([size])
    從文件的首行首字符開始截斷,截斷文件爲 size 個字符,無 size 表示從當前位置截斷;截斷之後後面的所有字符被刪除,其中
    Widnows 系統下的換行代表2個字符大小。

    12 file.write(str)
    將字符串寫入文件,返回的是寫入的字符長度。

    13 file.writelines(sequence)
    向文件寫入一個序列字符串列表,如果需要換行則要自己加入每行的換行符。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章