『壹』 如何判斷python函數返回的是否是空
可以直接把函數放到if後面當作條件,如果為空的話判斷結果是false,例如:
deftest():
returnNone
iftest():
printTrue
else:
printFalse
『貳』 python 函數參數 是什麼意思
Python 函數定義以及參數傳遞
1.函數定義
#形如def func(args...):
doSomething123
以關鍵字def 開頭,後面是函數名和參數下面是函數處理過程。
舉例:
def add( a, b ):
return a+b12
參數可以設定默認值,如:
def add( a, b=10 ): #注意:默認值參數只會運算一次
return a+b12
默認值參數只會運算一次是什麼意思?
def func( a, b=[] ): #b的默認值指向一個空的列表,每次不帶默認值都會指向這塊內存
b.append(a) return b
print(func(1))#向默認的空列表裡加入元素1 ,默認列表裡已經是[1]print(func(2))#向默認的列表裡加入元素2,默認列表裡已經是[1,2]print(func(3,[]))#向b指向的空列表裡加入元素1 ,默認列表裡還是[1,2]print(func(4))#向默認的列表裡加入元素4,默認列表裡已經是[1,2,4]'''
結果:
[1]
[1, 2]
[3]
[1, 2, 4]
'''12345678910111213141516
這下明白為什麼默認參數只計算一次了吧,函數參數不傳遞時默認值總是指向固定的內存空間,就是第一次計算的空間。
2.參數傳遞
def func(a, b):
print('a=%d, b=%d' % (a,b) )12
在使用函數時可以如下方式,結果都是相同的
func(10,20) #不使用參數名,需要按參數順序傳遞func(a=10,b=20) #使用參數名可以不按順序傳遞func(b=20,a=10)#結果:a=10, b=20a=10, b=20a=10, b=201234567
如果函數定義形式如下方式:
def func(*args): #這種定義會把傳遞的參數包成元組
print(args,type(args))
func(10,20)#結果:#(10, 20) <class 'tuple'>1234567
舉一個和上述過程相反的例子:
def func(a,b):
print('a=%d, b=%d' % (a,b) )
a = (10, 20)
func(*a) #在調用函數使用`*`則會把元組解包成單個變數按順序傳入函數#結果:a=10, b=20123456
總結:*號在定義函數參數時,傳入函數的參數會轉換成元組,如果 *號在調用時則會把元組解包成單個元素。
另一種定義:
def func(**kw):#使用**定義參數會把傳入參數包裝成字典dict
print(kw, type(kw) )
func(a=10,b=20)#這種函數在使用時必須指定參數值,使用key=value這種形式#結果:{'b': 20, 'a': 10} <class 'dict'>12345
相反的例子:
def func(a,b):
print('a=%d, b=%d' % (a,b) )
d = {'a':10, 'b':20 }
func(**d) #在調用時使用**會把字典解包成變數傳入函數。12345
def func(*args, **kw):#這種形式的定義代表可以接受任意類型的參數
print(args,kw )12
總結:**號在定義函數參數時,傳入函數的參數會轉換成字典,如果 **號在調用時則會把字典解包成單個元素。
lambda表達式
lambda表達式就是一種簡單的函數
形如 f = lambda 參數1,參數2: 返回的計算值
例如:
add = lambda x,y: x+y
print(add(1,2))'''
結果:3
'''12345
『叄』 Python的函數都有哪些
Python 函數
函數是組織好的,可重復使用的,用來實現單一,或相關聯功能的代碼段。
函數能提高應用的模塊性,和代碼的重復利用率。你已經知道Python提供了許多內建函數,比如print()。但你也可以自己創建函數,這被叫做用戶自定義函數。
定義一個函數
你可以定義一個由自己想要功能的函數,以下是簡單的規則:
函數代碼塊以def關鍵詞開頭,後接函數標識符名稱和圓括弧()。
任何傳入參數和自變數必須放在圓括弧中間。圓括弧之間可以用於定義參數。
函數的第一行語句可以選擇性地使用文檔字元串—用於存放函數說明。
函數內容以冒號起始,並且縮進。
return [表達式]結束函數,選擇性地返回一個值給調用方。不帶表達式的return相當於返回 None。
語法
def functionname( parameters ): "函數_文檔字元串"
function_suite
return [expression]
默認情況下,參數值和參數名稱是按函數聲明中定義的順序匹配起來的。
實例
以下為一個簡單的Python函數,它將一個字元串作為傳入參數,再列印到標准顯示設備上。
實例(Python 2.0+)
def printme( str ): "列印傳入的字元串到標准顯示設備上"
print str
return
函數調用
定義一個函數只給了函數一個名稱,指定了函數里包含的參數,和代碼塊結構。
這個函數的基本結構完成以後,你可以通過另一個函數調用執行,也可以直接從Python提示符執行。
如下實例調用了printme()函數:
實例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
# 定義函數def printme( str ): "列印任何傳入的字元串"
print str
return
# 調用函數printme("我要調用用戶自定義函數!")printme("再次調用同一函數")
以上實例輸出結果:
參數傳遞
在 python 中,類型屬於對象,變數是沒有類型的:
a=[1,2,3]
a="Runoob"
以上代碼中,[1,2,3]是 List 類型,"Runoob"是 String 類型,而變數 a 是沒有類型,她僅僅是一個對象的引用(一個指針),可以是 List 類型對象,也可以指向 String 類型對象。
可更改(mutable)與不可更改(immutable)對象
在 python 中,strings, tuples, 和 numbers 是不可更改的對象,而 list,dict 等則是可以修改的對象。
不可變類型:變數賦值a=5後再賦值a=10,這里實際是新生成一個 int 值對象 10,再讓 a 指向它,而 5 被丟棄,不是改變a的值,相當於新生成了a。
可變類型:變數賦值la=[1,2,3,4]後再賦值la[2]=5則是將 list la 的第三個元素值更改,本身la沒有動,只是其內部的一部分值被修改了。
python 函數的參數傳遞:
不可變類型:類似 c++ 的值傳遞,如 整數、字元串、元組。如fun(a),傳遞的只是a的值,沒有影響a對象本身。比如在 fun(a)內部修改 a 的值,只是修改另一個復制的對象,不會影響 a 本身。
可變類型:類似 c++ 的引用傳遞,如 列表,字典。如 fun(la),則是將 la 真正的傳過去,修改後fun外部的la也會受影響
python 中一切都是對象,嚴格意義我們不能說值傳遞還是引用傳遞,我們應該說傳不可變對象和傳可變對象。
python 傳不可變對象實例
實例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
def ChangeInt( a ): a = 10
b = 2ChangeInt(b)print b # 結果是 2
實例中有 int 對象 2,指向它的變數是 b,在傳遞給 ChangeInt 函數時,按傳值的方式復制了變數 b,a 和 b 都指向了同一個 Int 對象,在 a=10 時,則新生成一個 int 值對象 10,並讓 a 指向它。
傳可變對象實例
實例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
# 可寫函數說明def changeme( mylist ): "修改傳入的列表"
mylist.append([1,2,3,4])
print "函數內取值: ", mylist
return
# 調用changeme函數mylist = [10,20,30]changeme( mylist )print "函數外取值: ", mylist
實例中傳入函數的和在末尾添加新內容的對象用的是同一個引用,故輸出結果如下:
參數
以下是調用函數時可使用的正式參數類型:
必備參數
關鍵字參數
默認參數
不定長參數
必備參數
必備參數須以正確的順序傳入函數。調用時的數量必須和聲明時的一樣。
調用printme()函數,你必須傳入一個參數,不然會出現語法錯誤:
實例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
#可寫函數說明def printme( str ): "列印任何傳入的字元串"
print str
return
#調用printme函數printme()
以上實例輸出結果:
關鍵字參數
關鍵字參數和函數調用關系緊密,函數調用使用關鍵字參數來確定傳入的參數值。
使用關鍵字參數允許函數調用時參數的順序與聲明時不一致,因為 Python 解釋器能夠用參數名匹配參數值。
以下實例在函數 printme() 調用時使用參數名:
實例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
#可寫函數說明def printme( str ): "列印任何傳入的字元串"
print str
return
#調用printme函數printme( str = "My string")
以上實例輸出結果:
下例能將關鍵字參數順序不重要展示得更清楚:
實例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
#可寫函數說明def printinfo( name, age ): "列印任何傳入的字元串"
print "Name: ", name
print "Age ", age
return
#調用printinfo函數printinfo( age=50, name="miki" )
以上實例輸出結果:
默認參數
調用函數時,默認參數的值如果沒有傳入,則被認為是默認值。下例會列印默認的age,如果age沒有被傳入:
實例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
#可寫函數說明def printinfo( name, age = 35 ): "列印任何傳入的字元串"
print "Name: ", name
print "Age ", age
return
#調用printinfo函數printinfo( age=50, name="miki" )printinfo( name="miki" )
以上實例輸出結果:
不定長參數
你可能需要一個函數能處理比當初聲明時更多的參數。這些參數叫做不定長參數,和上述2種參數不同,聲明時不會命名。基本語法如下:
def functionname([formal_args,] *var_args_tuple ): "函數_文檔字元串"
function_suite
return [expression]
加了星號(*)的變數名會存放所有未命名的變數參數。不定長參數實例如下:
實例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
# 可寫函數說明def printinfo( arg1, *vartuple ): "列印任何傳入的參數"
print "輸出: "
print arg1
for var in vartuple: print var
return
# 調用printinfo 函數printinfo( 10 )printinfo( 70, 60, 50 )
以上實例輸出結果:
匿名函數
python 使用 lambda 來創建匿名函數。
lambda只是一個表達式,函數體比def簡單很多。
lambda的主體是一個表達式,而不是一個代碼塊。僅僅能在lambda表達式中封裝有限的邏輯進去。
lambda函數擁有自己的命名空間,且不能訪問自有參數列表之外或全局命名空間里的參數。
雖然lambda函數看起來只能寫一行,卻不等同於C或C++的內聯函數,後者的目的是調用小函數時不佔用棧內存從而增加運行效率。
語法
lambda函數的語法只包含一個語句,如下:
如下實例:
實例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
# 可寫函數說明sum = lambda arg1, arg2: arg1 + arg2
# 調用sum函數print "相加後的值為 : ", sum( 10, 20 )print "相加後的值為 : ", sum( 20, 20 )
以上實例輸出結果:
return 語句
return語句[表達式]退出函數,選擇性地向調用方返回一個表達式。不帶參數值的return語句返回None。之前的例子都沒有示範如何返回數值,下例便告訴你怎麼做:
實例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
# 可寫函數說明def sum( arg1, arg2 ): # 返回2個參數的和."
total = arg1 + arg2
print "函數內 : ", total
return total
# 調用sum函數total = sum( 10, 20 )
以上實例輸出結果:
變數作用域
一個程序的所有的變數並不是在哪個位置都可以訪問的。訪問許可權決定於這個變數是在哪裡賦值的。
全局變數
局部變數
全局變數和局部變數
定義在函數內部的變數擁有一個局部作用域,定義在函數外的擁有全局作用域。
局部變數只能在其被聲明的函數內部訪問,而全局變數可以在整個程序范圍內訪問。調用函數時,所有在函數內聲明的變數名稱都將被加入到作用域中。如下實例:
實例(Python 2.0+)
#!/usr/bin/python# -*- coding: UTF-8 -*-
total = 0 # 這是一個全局變數# 可寫函數說明def sum( arg1, arg2 ): #返回2個參數的和."
total = arg1 + arg2 # total在這里是局部變數.
print "函數內是局部變數 : ", total
return total
#調用sum函數sum( 10, 20 )print "函數外是全局變數 : ", total
以上實例輸出結果:
『肆』 int mysum() {}函數體是空的 ,是什麼意思
函數體是空的。調用這個函數時,什麼工作也不做,沒有任何實際作用
空函數的作用:
在程序設計中往往根據需要確定若干個模塊,分別由一些函數來實現。
而在第一階段只設計最基本的模塊,其他一些次要功能或錦上添花的功能則在以後需要時陸續補上。在編寫程序的開始階段,可以在將來准備擴充功能的地方寫上一個空函數,將來再寫。
『伍』 python中def是什麼意思
python中def意思是聲明函數。
Python 使用def 開始函數定義,緊接著是函數名,括弧內部為函數的參數,內部為函數的 具體功能實現代碼,如果想要函數有返回值, 在expressions 中的邏輯代碼中用 return 返回。
expressions
實例def function():
print('This is a function')
a = 1+2
print(a)
function 的函數,函數沒有不接受參數,所以括弧內部為空,緊接著就是 函數的功能代碼。如果執行該腳本,發現並沒有輸出任何輸出,因為我們只定義了函數,而並沒有執行函數。 這時我們在 Python 命令提示符中輸入函數調用 function(), 注意這里調用函數的括弧不能省略。
那麼函數內部的功能代碼將會執行,輸出結果:This is a function。
『陸』 python內置函數什麼用
Python內置函數有很多,下面給你例舉了幾種python3.4版本的內置函數:
1、abx(x)
返回一個數的絕對值。參數可以是普通的整數,長整數或者浮點數。如果參數是個復數,返回它的模
2、all(iterable)
如果iterable的所有元素為真(或者iterable為空), 返回True。等同於:
def all(iterable):
for element in iterable:
if not element:
return False
return True
3、any(iterable)
如果iterable的任一元素為真,返回True。如果iterable為空,返回False。等同於:
def any(iterable):
for element in iterable:
if element:
return True
return False
4、ascii(object)
這個函數跟repr()函數一樣,返回一個可列印的對象字元串方式表示。當遇到非ASCII碼時,就會輸出\x,\u或\U等字元來表示。與Python 2版本里的repr()是等效的函數。
>>>print(ascii(10), ascii(9000000), ascii('b\31'), ascii('0x\1000'))
10 9000000 'b\x19' '0x@0'
5、bin(x)
將一個整數轉化成一個二進制字元串。結果是一個合法的Python表達式。如果x不是一個Python int對象,它必須定義一個返回整數的__index__()方法
6、bool([x])
將一個值轉化成布爾值,使用標準的真值測試常式。如果x為假或者沒有參數,它返回False;否則它返回True。bool也是一個類,它是int的子類。bool不能被繼承。它唯一的實例就是False和True
『柒』 python中的函數是什麼
Python3 函數
函數是組織好的,可重復使用的,用來實現單一,或相關聯功能的代碼段。
函數能提高應用的模塊性,和代碼的重復利用率。你已經知道Python提供了許多內建函數,比如print()。但你也可以自己創建函數,這被叫做用戶自定義函數。
定義一個函數
你可以定義一個由自己想要功能的函數,以下是簡單的規則:
函數代碼塊以def關鍵詞開頭,後接函數標識符名稱和圓括弧()。
任何傳入參數和自變數必須放在圓括弧中間,圓括弧之間可以用於定義參數。
函數的第一行語句可以選擇性地使用文檔字元串—用於存放函數說明。
函數內容以冒號:起始,並且縮進。
return [表達式]結束函數,選擇性地返回一個值給調用方,不帶表達式的 return 相當於返回 None。
語法
Python 定義函數使用 def 關鍵字,一般格式如下:
默認情況下,參數值和參數名稱是按函數聲明中定義的順序匹配起來的。
實例
讓我們使用函數來輸出"Hello World!":
#!/usr/bin/python3
defhello():
print("Hello World!")
hello()
更復雜點的應用,函數中帶上參數變數:
實例(Python 3.0+)
比較兩個數,並返回較大的數:
#!/usr/bin/python3
def max(a, b): if a > b: return a
else: return b
a = 4b = 5print(max(a, b))
以上實例輸出結果:
實例(Python 3.0+)
計算面積函數:
#!/usr/bin/python3
# 計算面積函數def area(width, height): return width * height
def print_welcome(name): print("Welcome", name)
print_welcome("Runoob")w = 4h = 5print("width =", w, " height =", h, " area =", area(w, h))
以上實例輸出結果:
函數調用
定義一個函數:給了函數一個名稱,指定了函數里包含的參數,和代碼塊結構。
這個函數的基本結構完成以後,你可以通過另一個函數調用執行,也可以直接從 Python 命令提示符執行。
如下實例調用了printme()函數:
實例(Python 3.0+)
#!/usr/bin/python3
# 定義函數def printme( str ): # 列印任何傳入的字元串
print (str)
return
# 調用函數printme("我要調用用戶自定義函數!")printme("再次調用同一函數")
以上實例輸出結果:
參數傳遞
在 python 中,類型屬於對象,變數是沒有類型的:
以上代碼中,[1,2,3]是 List 類型,"Runoob"是 String 類型,而變數 a 是沒有類型,她僅僅是一個對象的引用(一個指針),可以是指向 List 類型對象,也可以是指向 String 類型對象。
可更改(mutable)與不可更改(immutable)對象
在 python 中,strings, tuples, 和 numbers 是不可更改的對象,而 list,dict 等則是可以修改的對象。
不可變類型:變數賦值a=5後再賦值a=10,這里實際是新生成一個 int 值對象 10,再讓 a 指向它,而 5 被丟棄,不是改變 a 的值,相當於新生成了 a。
可變類型:變數賦值la=[1,2,3,4]後再賦值la[2]=5則是將 list la 的第三個元素值更改,本身la沒有動,只是其內部的一部分值被修改了。
python 函數的參數傳遞:
不可變類型:類似 C++ 的值傳遞,如 整數、字元串、元組。如 fun(a),傳遞的只是 a 的值,沒有影響 a 對象本身。如果在 fun(a))內部修改 a 的值,則是新生成來一個 a。
可變類型:類似 C++ 的引用傳遞,如 列表,字典。如 fun(la),則是將 la 真正的傳過去,修改後 fun 外部的 la 也會受影響
python 中一切都是對象,嚴格意義我們不能說值傳遞還是引用傳遞,我們應該說傳不可變對象和傳可變對象。
python 傳不可變對象實例
通過id()函數來查看內存地址變化:
實例(Python 3.0+)
def change(a): print(id(a)) # 指向的是同一個對象
a=10
print(id(a)) # 一個新對象
a=1print(id(a))change(a)
以上實例輸出結果為:
可以看見在調用函數前後,形參和實參指向的是同一個對象(對象 id 相同),在函數內部修改形參後,形參指向的是不同的 id。
傳可變對象實例
可變對象在函數里修改了參數,那麼在調用這個函數的函數里,原始的參數也被改變了。例如:
實例(Python 3.0+)
#!/usr/bin/python3
# 可寫函數說明def changeme( mylist ): "修改傳入的列表"
mylist.append([1,2,3,4])
print ("函數內取值: ", mylist)
return
# 調用changeme函數mylist = [10,20,30]changeme( mylist )print ("函數外取值: ", mylist)
傳入函數的和在末尾添加新內容的對象用的是同一個引用。故輸出結果如下:
參數
以下是調用函數時可使用的正式參數類型:
必需參數
關鍵字參數
默認參數
不定長參數
必需參數
必需參數須以正確的順序傳入函數。調用時的數量必須和聲明時的一樣。
調用 printme() 函數,你必須傳入一個參數,不然會出現語法錯誤:
實例(Python 3.0+)
#!/usr/bin/python3
#可寫函數說明def printme( str ): "列印任何傳入的字元串"
print (str)
return
# 調用 printme 函數,不加參數會報錯printme()
以上實例輸出結果:
關鍵字參數
關鍵字參數和函數調用關系緊密,函數調用使用關鍵字參數來確定傳入的參數值。
使用關鍵字參數允許函數調用時參數的順序與聲明時不一致,因為 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=50, name="runoob" )
以上實例輸出結果:
默認參數
調用函數時,如果沒有傳遞參數,則會使用默認參數。以下實例中如果沒有傳入 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="runoob" )
以上實例輸出結果:
不定長參數
你可能需要一個函數能處理比當初聲明時更多的參數。這些參數叫做不定長參數,和上述 2 種參數不同,聲明時不會命名。基本語法如下:
加了星號*的參數會以元組(tuple)的形式導入,存放所有未命名的變數參數。
實例(Python 3.0+)
#!/usr/bin/python3
# 可寫函數說明def printinfo( arg1, *vartuple ): "列印任何傳入的參數"
print ("輸出: ")
print (arg1)
print (vartuple)
# 調用printinfo 函數printinfo( 70, 60, 50 )
以上實例輸出結果:
實例(Python 3.0+)
#!/usr/bin/python3
# 可寫函數說明def printinfo( arg1, *vartuple ): "列印任何傳入的參數"
print ("輸出: ")
print (arg1)
for var in vartuple: print (var)
return
# 調用printinfo 函數printinfo( 10 )printinfo( 70, 60, 50 )
以上實例輸出結果:
還有一種就是參數帶兩個星號**基本語法如下:
加了兩個星號**的參數會以字典的形式導入。
實例(Python 3.0+)
#!/usr/bin/python3
# 可寫函數說明def printinfo( arg1, **vardict ): "列印任何傳入的參數"
print ("輸出: ")
print (arg1)
print (vardict)
# 調用printinfo 函數printinfo(1, a=2,b=3)
以上實例輸出結果:
聲明函數時,參數中星號*可以單獨出現,例如:
如果單獨出現星號*後的參數必須用關鍵字傳入。
匿名函數
python 使用 lambda 來創建匿名函數。
所謂匿名,意即不再使用 def 語句這樣標準的形式定義一個函數。
lambda 只是一個表達式,函數體比 def 簡單很多。
lambda的主體是一個表達式,而不是一個代碼塊。僅僅能在lambda表達式中封裝有限的邏輯進去。
lambda 函數擁有自己的命名空間,且不能訪問自己參數列表之外或全局命名空間里的參數。
雖然lambda函數看起來只能寫一行,卻不等同於C或C++的內聯函數,後者的目的是調用小函數時不佔用棧內存從而增加運行效率。
語法
lambda 函數的語法只包含一個語句,如下:
如下實例:
實例(Python 3.0+)
#!/usr/bin/python3
# 可寫函數說明sum = lambda arg1, arg2: arg1 + arg2
# 調用sum函數print ("相加後的值為 : ", sum( 10, 20 ))print ("相加後的值為 : ", sum( 20, 20 ))
以上實例輸出結果:
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)
以上實例輸出結果:
強制位置參數
Python3.8 新增了一個函數形參語法 / 用來指明函數形參必須使用指定位置參數,不能使用關鍵字參數的形式。
以下使用方法是正確的:
以下使用方法會發生錯誤:
『捌』 python類和函數的區別
一、主體不同
1、類:是面向對象程序設計實現信息封裝的基礎。
2、函數:是指一段在一起的、可以做某一件事兒的程序。也叫做子程序、(OOP中)方法。
二、特點不同
1、類:是一種用戶定義的引用數據類型,也稱類類型。每個類包含數據說明和一組操作數據或傳遞消息的函數。類的實例稱為對象。
2、函數:分為全局函數、全局靜態函數;在類中還可以定義構造函數、析構函數、拷貝構造函數、成員函數、友元函數、運算符重載函數、內聯函數等。
三、規則不同
1、類:實質是一種引用數據類型,類似於byte、short、int(char)、long、float、double等基本數據類型,不同的是它是一種復雜的數據類型。
2、函數:函數必須聲明後才可以被調用。調用格式為:函數名(實參)調用時函數名後的小括弧中的實參必須和聲明函數時的函數括弧中的形參個數相同。
『玖』 python為什麼函數輸出為空
對於你這個函數,你直接執行即可,外面不要加print。因為你的函數沒有定義返回,所以輸出了None。或者你這樣定義:
defadd(a,b):
returna+b
『拾』 Python中參數為None是什麼意思
python函數參數為None的時候,比如
def
req(self,
b=None),是因為這個函數是一個封裝函數,在沒有調用他的時候他的參數需要加上None。如果不加None值,不調用函數他會報錯。
一般會用在封裝類或者框架里。比如說框架一般會有一個總的調用函數,總的調用函數啟動,這次沒有獲取到值,執行到req函數時無法給req函數參數,那如果沒有參數req函數就會報錯。一般會報:『req()
missing
1
required
positional
argument:
'b'』但是如果參數為None就不會報錯。如果程序執行到req參數傳遞成功的話,參數就不會是None了。
所以None是一個防止報錯的機制。