1. 程式人生 > >Python基本語法之函式

Python基本語法之函式

 

Python命名規範

名稱

說明

模組名

小寫字母,單詞之間用_分割  如:module_name

包名

小寫字母,單詞之間用_分割 如:package_name

類名

單詞首字母大寫 如:python class LogRecord(object):

普通變數

小寫字母,單詞之間用_分割  如:exc_info

例項變數

以_開頭,小寫字母,單詞之間用\_分割  如:_exc_info,不能訪問的類屬性,但可通過類提供的介面進行訪問, 不會被語句 “from module import *” 語句載入

私有例項變數

以\_\_開頭(2個下劃線),小寫字母,單詞之間用\_分割  如:__private_var ,外部訪問會報錯

專有變數

開頭,結尾,一般為python的自有變數,不要以這種方式命名  如:doc ,是系統定義的,具有特殊意義的識別符號

普通函式

小寫字母,單詞之間用_分割: 如:get_name()

私有函式

以\_\_開頭(2個下劃線),小寫字母,單詞之間用分割 如:__get_name() ,外部訪問會報錯

 

 

 

 

 

 

 

 

 

 

 

 


函式規則

函式程式碼塊以 def 關鍵詞開頭,後接函式識別符號名稱和圓括號 ()。

任何傳入引數和自變數必須放在圓括號中間,圓括號之間可以用於定義引數。

函式的第一行語句可以選擇性地使用文件字串—用於存放函式說明。

函式內容以冒號起始,並且縮排。

return [表示式] 結束函式,選擇性地返回一個值給呼叫方。不帶表示式的return相當於返回 None。

 

 

 

 

 

 

函式語法

def 函式名(引數列表):

函式體

return

 

 

 

函式示例

def printinfo( name, age ):
   print ("名字: ", name)
   print ("年齡: ", age)
   return
 
printinfo( age=15, name="xiaoming" )

示例執行結果

 

可變引數和不可變引數

strings, tuples, 和 numbers 是不可更改的物件,而 list,dict 等則是可以修改的物件

傳不可變引數示例

def ChangeInt( a ):
    a = 10
 
b = 6
ChangeInt(b)
print( b )

示例輸出結果為6

傳可變引數示例

def changeme( mylist ):
   mylist.append([2,3,4])
   print ("函式內取值: ", mylist)
   return
 
mylist = [10,20,30]
changeme( mylist )
print ("函式外取值: ", mylist)

示例輸出結果

 

關鍵字引數

Python 直譯器能夠用引數名匹配引數值,所以允許函式呼叫時引數的順序與宣告時不一致。

關鍵字引數示例

def printinfo( name, age ):
   print ("名字: ", name)
   print ("年齡: ", age)
   return
 
printinfo( age=15, name="xiaoming" )

示例執行結果

 

預設引數

在函式定義時設定引數的預設值,呼叫函式時,如果沒有傳遞引數,則會使用預設引數。

預設引數示例

def printinfo( name, age = 18 ):
   print ("名字: ", name)
   print ("年齡: ", age)
   return
 
printinfo(name="xiaoming" )

示例執行結果

 

不定長引數

含不定長引數的函式語法

def functionname([formal_args,] *var_args_tuple ):

     function_suite

     return [expression]

 

 

 

不定長引數示例

def printinfo( arg1, *vartuple ):
   print (arg1)
   print (vartuple)
 
printinfo( 70, 60, 50 )

示例執行結果

第二種不定長引數語法,兩個星號 ** 的引數會以字典的形式匯入

def functionname([formal_args,] **var_args_dict ):
   function_suite
   return [expression]

 

 

 

第二種不定長引數示例

def printinfo( arg1, **vardict ):
   print (arg1)
   print (vardict)
 
printinfo(10, a=20,b=30)

示例執行結果

 

匿名函式

python 使用 lambda 來建立匿名函式,只包含一個語句

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

 

 

匿名函式示例

multi = lambda arg1, arg2: arg1 * arg2

print ("相乘後的值為 : ", multi( 10, 20 ))

示例執行結果

 

return語句

return返回結果示例

def sum( arg1, arg2 ):
   return arg1 + arg2
 
print (sum( 10, 20 ))

示例的列印結果是30

 

變數作用域

Python的作用域一共有4種,使用變數時,以 L –> E –> G –>B 的規則查詢

作用域種類

說明

L (Local)

區域性作用域

E (Enclosing)

閉包函式外的函式中

G (Global)

全域性作用域

B (Built-in)

內建作用域

 

 

  

 

 

 

變數作用域程式碼示例

x = int(9.9)  # 內建作用域
 
g_count = 0  # 全域性作用域
def outer():
    o_count = 1  # 閉包函式外的函式中
    def inner():
        i_count = 2  # 區域性作用域

 

global和nonlocal關鍵字

global用於在區域性範圍內使用全域性變數而宣告,示例如下

num = 1
def my_fun():
    global num  # 需要使用 global 關鍵字宣告
    print(num) 
    num = 1234
    print(num)
my_fun()
print(num)

示例輸出結果

nonlocal關鍵字用於在內部巢狀中使用外層作用域(enclosing 作用域,外層非全域性作用域)中的變數,示例如下

def outer():
    num = 1
    def inner():
        nonlocal num   # nonlocal關鍵字宣告
        num = 123
        print(num)
    inner()
    print(num)
outer()

示例輸出結果

 

 

如果您喜歡該文章,別忘了點贊和評論哦!