Python3教學
Python3引入什麼新的東西?
Python3環境安裝設置
Python3基礎語法
Python3變量類型
Python算術運算符實例
Python3比較運算符實例
Python3賦值運算符實例
Python3位運算符實例
Python3邏輯運算符實例
Python3成員運算符實例
Python3標識運算符實例
Python3運算符優先級示例
Python3基本運算符
Python3 if語句
Python3 if...elseif...else語句
Python3嵌套if語句
Python3決策
Python3 while循環語句
Python3 for循環語句
Python3嵌套循環
Python3 break語句
Python3 continue語句
Python3 pass語句
Python3循環
Python3 abs()函數
Python3 ceil()函數
Python3 exp()函數
Python3 fabs()函數
Python3 floor()函數
Python3 log()函數
Python3 log10()函數
Python3 max()函數
Python3 min()函數
Python3 modf()函數
Python3 pow()函數
Python3 round()函數
Python3 sqrt()函數
Python3 choice()函數
Python3 randrange()函數
Python3 random()函數
Python3 seed()函數
Python3 shuffle()函數
Python3 uniform()函數
Python3 acos()函數
Python3 asin()函數
Python3 atan()函數
Python3 atan2()函數
Python3 cos()函數
Python3 hypot()函數
Python3 sin()函數
Python3 tan()函數
Python3 degrees()函數
Python3 radians()函數
Python3數字
Python3 string.capitalize()方法
Python3 string.center()方法
Python3 string.count()方法
Python3 string.decode()方法
Python3 string.endswith()方法
Python3 string.expandtabs()方法
Python3 string.encode()方法
Python3 string.find()方法
Python3 string.index()方法
Python3 string.isalnum()方法
Python3 string.isalpha()方法
Python3 string.isdigit()方法
Python3 string.tolower()方法
Python3 string.isnumeric()方法
Python3 string.isspace()方法
Python3 string.istitle()方法
Python3 string.isupper()方法
Python3 string.join()方法
Python3 string.len()方法
Python3 string.ljust()方法
Python3 string.lower()方法
Python3 string.lstrip()方法
Python3 string.maketrans()方法
Python3 string.max()方法
Python3 string.min()方法
Python3 string.replace()方法
Python3 string.rfind()方法
Python3 string.rindex()方法
Python3 string.rjust()方法
Python3 string.rstrip()方法
Python3 string.split()方法
Python3 string.splitlines()方法
Python3 string.startswith()方法
Python3 string.strip()方法
Python3 string.swapcase()方法
Python3 string.title()方法
Python3 string.translate()方法
Python3 string.upper()方法
Python3 string.zfill()方法
Python3 string.isdecimal()方法
Python3字符串
Python3 list.cmp()方法
Python3 list.len()方法
Python3 list.max()方法
Python3 list.min()方法
Python3 list.list()方法
Python3 list.append()方法
Python3 list.count()方法
Python3 list.extend()方法
Python3 list.index()方法
Python3 list.insert()方法
Python3 list.pop()方法
Python3 list.remove()方法
Python3 list.reverse()方法
Python3 list.sort()方法
Python3列表
Python3 tuple.cmp()方法
Python3 tuple.len()方法
Python3 tuple.max()方法
Python3 tuple.min()方法
Python3 tuple.tuple()方法
Python3元組
Python3 dictionary.cmp()方法
Python3 dictionary.len()方法
Python3 dictionary.str()方法
Python3 dictionary.type()方法
Python3 dictionary.clear()方法
Python3 dictionary.copy()方法
Python3 dictionary.fromkeys()方法
Python3 dictionary.get()方法
Python3 dictionary.has_key()方法
Python3 dictionary.items()方法
Python3 dictionary.keys()方法
Python3 dictionary.setdefault()方法
Python3 dictionary.update()方法
Python3 dictionary.values()方法
Python3字典
Python3 time.altzone()方法
Python3 time.asctime()方法
Python3 time.clock()方法
Python3 time.ctime()方法
Python3 time.gmtime()方法
Python3 time.localtime()方法
Python3 time.mktime()方法
Python3 time.sleep()方法
Python3 time.strftime()方法
Python3 time.time()方法
Python3 time.tzset()方法
Python3日期和時間
Python3函數
Python3模塊
Python3 file.close()方法
Python3 file.tell()方法
Python3 file.truncate()方法
Python3 file.write()方法
Python3 file.writelines()方法
Python3 file.flush()方法
Python3 file.fileno()方法
Python3 file.isatty()方法
Python3 file.next()方法
Python3 file.read()方法
Python3 file.readline()方法
Python3 file.readlines()方法
Python3 file.seek()方法
Python3文件方法
Python3 os.access()方法
Python3 os.chdir()方法
Python3 os.chflags()方法
Python3 os.chmod()方法
Python3 os.chown()方法
Python3 os.chroot()方法
Python3 os.close()方法
Python3 os.closerange()方法
Python3 os.dup()方法
Python3 os.dup2()方法
Python3 os.fchdir()方法
Python3 os.fchmod()方法
Python3 os.fchown()方法
Python3 os.fdatasync()方法
Python3 os.fopen()方法
Python3 os.fpathconf()方法
Python3 os.fstat()方法
Python3 os.fstatvfs()方法
Python3 os.fsync()方法
Python3 os.ftruncate()方法
Python3 os.getcwd()方法
Python3 os.getcwdu()方法
Python3 os.isatty()方法
Python3 os.lchflags()方法
Python3 os.lchmod()方法
Python3 os.lchown()方法
Python3 os.link()方法
Python3 os.listdir()方法
Python3 os.lseek()方法
Python3 os.lstat()方法
Python3 os.major()方法
Python3 os.makedev()方法
Python3 os.makedirs()方法
Python3 os.minor()方法
Python3 os.mkdir()方法
Python3 os.mkfifo()方法
Python3 os.mknod()方法
Python3 os.open()方法
Python3 os.openpty()方法
Python3 os.pathconf()方法
Python3 os.pipe()方法
Python3 os.popen()方法
Python3 os.read()方法
Python3 os.readlink()方法
Python3 os.remove()方法
Python3 os.removedirs()方法
Python3 os.rename()方法
Python3 os.renames()方法
Python3 os.rmdir()方法
Python3 os.stat()方法
Python3 os.stat_float_times()方法
Python3 os.statvfs()方法
Python3 os.symlink()方法
Python3 os.tcgetpgrp()方法
Python3 os.tcsetpgrp()方法
Python3 os.tempnam()方法
Python3 os.tmpfile()方法
Python3 os.tmpnam()方法
Python3 os.ttyname()方法
Python3 os.unlink()方法
Python3 os.utime()方法
Python3 os.walk()方法
Python3 os.write()方法
Python3 os文件目錄的方法
Python3文件操作
Python3標準異常
Python3斷言
Python3異常處理

Python3函數

函數是用於執行一個單一的,相關動作的組織的,可重複使用的代碼塊。 函數爲您的應用和高度代碼重用提供一個更好的代碼模塊。

你可以已經知道(瞭解),Python有類似於 printf()等許多內置函數。但你也可以創建自己的函數。 這些函數被稱爲:用戶自定義函數。

如何定義一個函數


可以定義函數,以提供所需的功能。 下面是一些簡單的規則用來定義 Python 中的函數。

  • 函數模塊使用 def 關鍵字開頭,後跟函數名以及括號( ( ) ).

  • 任何輸入參數或參數都應該放在這些括號內。 還可以定義這些括號內的參數。

  • 函數的第一個語句可以是一個可選的聲明 - 函數或文檔說明的字符串。

  • 每個函數中的代碼塊使用冒號(:)開始和縮進。

  • 語句返回[expression]存在於函數中,一個表達式可選地傳遞給調用者。不帶參數的return語句返回None。

語法

def functionname( parameters ):
"function_docstring"
function_suite
return [expression]

默認情況下,參數有一個位置的行爲,你需要告知它們定義的相同順序。

示例

下面的函數接受一個字符串作爲輸入參數,並打印標準屏幕上。

def printme( str ):
"This prints a passed string into this function"
print (str)
return

如何調用函數

定義一個函數只需要給出它的名稱,指定要被包括在函數和結構的代碼塊中的參數。

當函數的基本結構完成,可以通過從其它函數或直接從Python提示符調用它執行它。下面是一個調用 print()函數的例子 -

#!/usr/bin/python3

Function definition is here

def printme( str ):
"This prints a passed string into this function"
print (str)
return

Now you can call printme function

printme("I'm first call to user defined function!")
printme("Again second call to the same function")

當執行上面的代碼,它產生以下結果 -

I'm first call to user defined function!
Again second call to the same function

通過引用 VS 值傳遞


所有參數(參數)在Python語言中是通過引用傳遞。這意味着,如果在函數中你改變參數的值, 參數的值變動也會反映回調用函數。例如 -

#!/usr/bin/python3

Function definition is here

def changeme( mylist ):
"This changes a passed list into this function"
print ("Values inside the function before change: ", mylist)
mylist[2]=50
print ("Values inside the function after change: ", mylist)
return

Now you can call changeme function

mylist = [10,20,30]
changeme( mylist )
print ("Values outside the function: ", mylist) 

在這裏,我們維持傳遞的對象參考,並在同一個對象追加值。因此,這將產生以下結果 -

Values inside the function before change: [10, 20, 30]
Values inside the function after change: [10, 20, 50]
Values outside the function: [10, 20, 50]

存在這樣的情況:參數正在被引用傳遞,以及參考被覆蓋調用函數裏面的一個例子。

#!/usr/bin/python3

Function definition is here

def changeme( mylist ):
"This changes a passed list into this function"
mylist = [1,2,3,4] # This would assi new reference in mylist
print ("Values inside the function: ", mylist)
return

Now you can call changeme function

mylist = [10,20,30]
changeme( mylist )
print ("Values outside the function: ", mylist) 

參數 mylist 是局部在函數 changeme。在函數中更改mylist 不影響 mylist 的值。函數不會起任何作用,最終這將產生以下結果:

Values inside the function: [1, 2, 3, 4]
Values outside the function: [10, 20, 30]

函數參數

可以通過使用以下類型的形式參數來調用一個函數:

  • 必需參數

  • 關鍵字參數

  • 默認參數

  • 可變長度參數

必需的參數


必需的參數是傳遞到到一個函數正確的位置順序的參數。這裏,在函數調用的參數數目應當與函數定義完全匹配。

在調用函數 printme(),肯定需要傳遞一個參數,否則它給出了一個語法錯誤如下 -

#!/usr/bin/python3

Function definition is here

def printme( str ):
"This prints a passed string into this function"
print (str)
return

Now you can call printme function

printme()

當執行上面的代碼,它產生了以下結果:

Traceback (most recent call last):
File "test.py", line 11, in
printme();
TypeError: printme() takes exactly 1 argument (0 given)

關鍵字參數


關鍵字參數會關係到函數的調用。當你在一個函數調用中使用關鍵字參數,調用者是由參數名稱標識的參數。

這使您可以跳過參數或順序,因爲Python解釋器能夠使用提供帶參數的值相匹配關鍵字。您也可以使用關鍵字調用print()函數在以下幾個方面-

#!/usr/bin/python3

Function definition is here

def printme( str ):
"This prints a passed string into this function"
print (str)
return

Now you can call printme function

printme( str = "My string")

當執行上面的代碼,它產生以下結果 -

My string

下面的例子提供了更多的清晰代碼畫面。注意,這裏參數的順序並不重要。

#!/usr/bin/python3

Function definition is here

def printinfo( name, age ):
"This prints a passed info into this function"
print ("Name: ", name)
print ("Age ", age)
return

Now you can call printinfo function

printinfo( age=50, name="miki" )

當執行上面的代碼,它產生以下結果 -

Name: miki
Age 50

默認參數

默認參數是,如果參數不提供一個值,那麼函數就會調用這個默認參數。下面的例子給出了默認參數示例,如果沒有傳遞它,它將打印默認的 age 值 -

#!/usr/bin/python3

Function definition is here

def printinfo( name, age = 35 ):
"This prints a passed info into this function"
print ("Name: ", name)
print ("Age ", age)
return

Now you can call printinfo function

printinfo( age=50, name="miki" )
printinfo( name="miki" )

當執行上面的代碼,它產生以下結果 -

Name: miki
Age 50
Name: miki
Age 35

可變長度參數


您可能需要處理函數在定義函數時指定時更多的參數。 這些參數稱爲可變長度參數在函數定義時不會被命名,不像必需參數和默認參數。

非關鍵字可變參數的函數語法是這樣的 -

def functionname([formal_args,] *var_args_tuple ):
"function_docstring"
function_suite
return [expression] 

星號(*)放在持有的所有非關鍵字變量參數值的變量名之前。如果函數調用期間沒有指定任何其他參數此元組是空的。下面是一個簡單的例子 -

#!/usr/bin/python3

Function definition is here

def printinfo( arg1, *vartuple ):
"This prints a variable passed arguments"
print ("Output is: ")
print (arg1)
for var in vartuple:
print (var)
return

Now you can call printinfo function

printinfo( 10 )
printinfo( 70, 60, 50 )

當執行上面的代碼,它產生以下結果 -

Output is:
10
Output is:
70
60
50

匿名函數


這些函數被稱爲匿名,因爲它們不是通過使用def關鍵字標準方式的聲明。您可以使用lambda關鍵字創建小的匿名函數。

  • lambda形式可以使用任何數量的參數,但在表現形式上只返回一個值。 它們不能包含命令或多個表達式。

  • 匿名函數不能直接調用打印,因爲lambda需要表達式。

  • lambda函數都有自己的命名空間,並且不能訪問除了在其參數列表和在全局命名空間中的其他變量。

  • 儘管似乎 lambda 是一個函數的單行版,它們不等同於C或C++的內聯聲明,它的目的是調用出於性能考慮,在傳遞函數由堆棧分配。

語法

lambda函數的語法只包含一個聲明,如下 -

lambda [arg1 [,arg2,.....argn]]:expression

以下是顯示 lambda形式函數如何工作的例子-

#!/usr/bin/python3

Function definition is here

sum = lambda arg1, arg2: arg1 + arg2

Now you can call sum as a function

print ("Value of total : ", sum( 10, 20 ))
print ("Value of total : ", sum( 20, 20 ))

當執行上面的代碼,它產生以下結果 -

Value of total : 30
Value of total : 40

return語句

該語句返回[expression] 存在一個函數,一個表達式可選地傳遞給調用者。不帶參數的return語句一樣返回None。

所有上述實施例不返回任何值。您可以從一個函數返回一個值如下 -

#!/usr/bin/python3

Function definition is here

def sum( arg1, arg2 ):

Add both the parameters and return them."

total = arg1 + arg2
print ("Inside the function : ", total)
return total

Now you can call sum function

total = sum( 10, 20 )
print ("Outside the function : ", total )

當執行上面的代碼,它產生以下結果 -

Inside the function : 30
Outside the function : 30

變量範圍


程序中的所有變量可能不會在該程序中的所有位置都可以進行訪問。這取決於這個變量在哪裏聲明。

變量的作用域確定了程序,可以訪問特定標識的部分。有很多的 Python 變量兩種基本範圍 -

  • 全局變量

  • 局部變量

全局與局部變量


被一個函數體中定義的變量有一個局部範圍,之外定義那些具有全局範圍。

這意味着,局部變量只能在聲明它們的函數內部訪問,而全局變量在整個程序中通過函數體內進行訪問。當你調用一個函數,其內部聲明的變量也有一個作用域。下面是一個簡單的例子 -

#!/usr/bin/python3

total = 0 # This is global variable.

Function definition is here

def sum( arg1, arg2 ):

Add both the parameters and return them."

total = arg1 + arg2; # Here total is local variable.
print ("Inside the function local total : ", total)
return total

Now you can call sum function

sum( 10, 20 )
print ("Outside the function global total : ", total )

當執行上面的代碼,它產生以下結果 -

Inside the function local total : 30
Outside the function global total : 0