之前一直是寫Java的,來到新公司后,后端語言包括python。
這里對python語法做一些記錄,防止以后發(fā)生類似的問題
1,python是弱類型的語言,比如給同一個變量賦值不同的類型,是不會報錯的:
a = 10
a = "hello"
? ?注意,在項目中不要給同一個變量,前后賦值的類型不一樣。
2,python沒有使用大括號來區(qū)分語句塊,而是使用嚴格的縮進:
? ?比如像下面,第一個sum的計算是在bool_a 為Ture的時候,才會進行的,否則sum最終的值為0。而第二個sum的計算即使bool_a 為False也會計算,最終結(jié)果為30。
a = 10
b = 20
sum = 0
bool_a = False
if bool_a :
sum = a+b
a = 10
b = 20
sum = 0
bool_a = False
if bool_a :
sum = a+b
? 個人覺得python嚴格使用縮進來控制語句塊,是一個非常糟糕的設計。
3,python語句結(jié)束的時候,不會使用分號
4,python使用英語類似的自然語言的表達,沒有使用括號來封裝bool表達式:
?
if True and True:
print("hello")
5,python的函數(shù),類似c++的函數(shù)指針,可以將函數(shù)名稱當作另外一個函數(shù)的參數(shù),來使用:
? 像下面,我們可以在要對兩個函數(shù)求和的時候,調(diào)用func_pointer_call(10,20,sum)。
? 可能在另外一個地方求差值的時候,調(diào)用func_pointer_call(10,20,sub)
def sum(a,b):
return a+b
def sub(a,b):
return a-b
def func_pointer_call(a,b,func)
return func(a,b)
6,python的參數(shù)列表,是一個非常危險的地方,特別是默認參數(shù),容易發(fā)生不可感知的bug:
? ?比如像下面default_param_func()定義了一個默認參數(shù),這允許我們在調(diào)用的時候,最后一個參數(shù)不用傳遞,比如test1()和test2()
?如果像下面這樣調(diào)用test1() 返回的將是-90,而test2()返回的是110。
def default_param_func(a,name,is_user=False):
print("current name is :" + name)
if is_user:
return a+100
return a-100
def test1():
return default_param_func(10,Ture)
def test2():
return default_param_func(10,"laibincs",Ture)
? 我們在使用test1()的時候,是希望is_user = True,但是事與愿違,而且編譯器和運行時都不會報錯。
因此在python中定義方法的時候,盡量不要使用默認參數(shù),一定要顯示的傳遞參數(shù)文章來源:http://www.zghlxwxcb.cn/news/detail-424642.html
default_is_user = False
def default_param_func(a,name,is_user):
print("current name is :" + name)
if is_user:
return a+100
return a-100
def test1():
return default_param_func(10,None,default_is_user )
def test2():
return default_param_func(10,"laibincs",Ture)
7,注意python對象的字典的區(qū)別:特別是在訪問其中內(nèi)容的時候文章來源地址http://www.zghlxwxcb.cn/news/detail-424642.html
class Person:
def __init__(self,name,age):
self.name = name
self.age = age
def test3():
p = Person("laibincs",60)
name = p.name
age = p.age
def test4():
p = {
"name" : "laibincs",
"age" : 60
}
name =p["name"]
age = p["age"]
到了這里,關于Python個人常見語法問題的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!