十分鐘看懂python3語言特性
看了王垠的《如何掌握所有程序語言》味混,感觸甚深挫以。如果說程序語言有其通用規(guī)律的話眼姐,那就是語言特性诅迷,也就是這些語言的通用概念。這些概念的具體語法的形式可能都不一樣众旗,但是所內(nèi)涵的功能是一致的罢杉,比如英語中的bird和漢語中鳥,其實指的都是同一種事物贡歧,關(guān)鍵是它們怎么運作的滩租,而不是它們的形式是什么。
掌握語言特性利朵,一開始要掌握最基本律想、最簡單的概念和用法,然后由簡單到復(fù)雜绍弟。不是讓你從頭到尾的學(xué)技即,而是先掌握框架,再逐漸豐富樟遣。
下面而叼,嘗試寫出python的語言特性身笤。
一、字符串和數(shù)
1.字符串
所有在單引號‘ ’葵陵、雙引號“ ”液荸、三引號‘’‘ ’‘’和“”“ ”“”里面的單詞、句子和數(shù)字等都是字符串埃难。其中三個引號可以換行莹弊。
‘good’
'''123
456'''
2.數(shù)字
數(shù)字不用加引號,包括整數(shù)涡尘,浮點數(shù)(帶小數(shù)點的數(shù)和科學(xué)計數(shù)法的數(shù))和復(fù)數(shù)忍弛。
1
3.14156
10E-10
(1+2j)
二、變量
字符串考抄、數(shù)细疚、函數(shù)、數(shù)據(jù)結(jié)構(gòu)川梅、類疯兼、類的屬性等對象通過 = 賦值給變量。
a=55
b='good'
c=[1, 2, 3]
變量分為公共變量贫途,特殊變量和私有變量.
1.公共變量吧彪。名稱前后不帶或_,可以正常使用丢早。
2.特殊變量姨裸。名稱前后帶或_,一般在Python里有特殊用途怨酝,如
_main_
_name_
3.私有變量傀缩。名稱前帶或_,不應(yīng)該被直接引用农猬。
三赡艰、算術(shù)運算
1.加減乘除,大于小于等于斤葱,變成二進(jìn)制位移慷垮,以及二進(jìn)制求同求異。
2.優(yōu)先級跟數(shù)學(xué)算術(shù)一樣揍堕。
3.字符串也可以進(jìn)行算數(shù)運算
'abc'*3
四料身、數(shù)據(jù)結(jié)構(gòu)
數(shù)據(jù)結(jié)構(gòu),Data Structures鹤啡,就是儲存數(shù)據(jù)的容器。數(shù)據(jù)包括字符串和數(shù)等對象蹲嚣。
四種數(shù)據(jù)結(jié)構(gòu):
1.列表[list]递瑰,可以增刪修改祟牲。
2.元組(tuple),不能修改抖部。
3.字典说贝,dict,格式如{key:value}慎颗,可以增刪修改乡恕。
4.集合,{set }俯萎,儲存key傲宜,不儲存value,可以增刪夫啊。
五函卒、控制結(jié)構(gòu)
1.if
如果...那么。
if ... :
代碼塊
elif ...:
代碼塊
else:
代碼塊
2.while
如果是TRUE撇眯,那么執(zhí)行下面代碼报嵌。
while True:
代碼塊
3.for
for ....in 循環(huán),可迭代出(就是一個個取出)列表熊榛、元組锚国、字典和字符串等對象里的元素。
for n in [1,2,3]:
print(n)
4.break和continue
break和continue用在 if玄坦,while和for里面血筑。
break是停止所有循環(huán),continue是停止執(zhí)行本次循環(huán)中continue下面的語句营搅,繼續(xù)執(zhí)行下個循環(huán)云挟。
六、函數(shù)定義
python有內(nèi)置函數(shù)和自定義函數(shù)转质。內(nèi)置函數(shù)是python定義好的园欣,知道名稱就可以直接使用,自定義函數(shù)就是用def去定義休蟹。
1.定義一個函數(shù)沸枯,def
def 函數(shù)名(參數(shù)):
代碼塊
return ...
-
參數(shù)類別
參數(shù)共有五種
def 函數(shù)名(位置參數(shù),默認(rèn)參數(shù)赂弓,*可變參數(shù)绑榴,**關(guān)鍵字參數(shù),命名關(guān)鍵字參數(shù)):
代碼塊
return
(1)位置參數(shù)
放在函數(shù)名稱的( )里盈魁,且不帶*翔怎,也不在 *參數(shù) 后的參數(shù)。
舉例
def add(x):
return x*x
這個x就是位置參數(shù)
(2)默認(rèn)參數(shù)
在函數(shù)名稱后面的( )里,給參數(shù)賦值的參數(shù)赤套。
舉例
def add(n,k=2):
reutrn n+k
add(4) #只需要給n賦值即可
這里面的k就是默認(rèn)參數(shù)飘痛。
(3)可變參數(shù)
可變參數(shù),是指傳入?yún)?shù)的個數(shù)可以變化容握,從0到任意個參數(shù)宣脉,均可。
形式為
def 函數(shù)名稱(*可變參數(shù)):
代碼塊
舉例
def calc(*n):
sun=0
for x in n:
sum=sum+x
return sum
calc(1,2)
num=[1,2,3] #如果傳入的是個列表剔氏,則在列表名稱前面加上*
calc(*num)
num=(1,2,3)#如果傳入的是個元組塑猖,則在元組名稱前面加上*
calc(*num)
(4)關(guān)鍵字參數(shù)
關(guān)鍵字參數(shù),是指參數(shù)名稱的個數(shù)谈跛,可變化羊苟,可以放一個參數(shù)名稱到任意個參數(shù)名稱。這些參數(shù)名稱會自動組成一個字典币旧。
形式為
def 函數(shù)名稱(**關(guān)鍵字參數(shù)):
代碼塊
舉例
def add(**kw):
print(kw)
add(num1=1,num2=2) #必須寫成 參數(shù)名稱=對象 的形式践险。
#結(jié)果顯示如下
{'num1':1,'num2'=2}
(5)命名關(guān)鍵字參數(shù)
命名關(guān)鍵字參數(shù)限制關(guān)鍵字參數(shù)名稱的個數(shù)。有兩種形式
- 一種是在*后面的參數(shù)
def add(*,命名關(guān)鍵字參數(shù)名稱1吹菱,命名關(guān)鍵字參數(shù)名稱2)
舉例如下:
def add(*,flower,tree):
print(flower,tree)
add(flower='rose',tree='apple')
#結(jié)果顯示
rose apple
- 一種是在 *可變參數(shù) 后面的參數(shù)
def add(*可變參數(shù)巍虫,命名關(guān)鍵字參數(shù))
舉例如下:
def add(*person,flower,tree):
print(person,flower,tree)
country=['China','America']
add(*country,flower='rose',tree='apple')
#結(jié)果顯示如下
('China', 'America') rose apple
七、函數(shù)調(diào)用
函數(shù)調(diào)用格式如下
(1)變量=函數(shù)名稱(參數(shù) )
a=abs(-5) #abs是求絕對值的內(nèi)置函數(shù)鳍刷。
(2)變量=函數(shù)名稱
? 變量(參數(shù))
a=abs
a(-5)
八占遥、遞歸
遞歸就是函數(shù)的套用。就是函數(shù)里套用一個函數(shù)输瓜。
使用方法:
def 函數(shù)(參數(shù)):
? 代碼塊
? return 函數(shù)(參數(shù))
舉例瓦胎,求1+2+3+...+(n-1)+n的和
def fact(n):
if n==1:
return 1
return n*fact(n-1)
九、類型推導(dǎo)
1.推導(dǎo)式
推導(dǎo)式尤揣,英文名稱Comprehensions搔啊,又稱生成式。類型有三種北戏,列表推導(dǎo)式负芋,字典推導(dǎo)式和集合推導(dǎo)式,三種方式的語法結(jié)構(gòu)都差不多嗜愈。
[關(guān)于n的表達(dá)式 for n in collection if 條件]
舉例如下
[x+x for x in range(1,10)]
[n+n for n in range(1,20) if n%2==1]
{ key_expr: value_expr for value in collection if condition }
{ expr for value in collection if condition }
2.生成器
生成器旧蛾,generator∪浼蓿可以實現(xiàn)一邊循環(huán)一遍計算锨天,一次生成一個數(shù)。
生成器有兩種語法結(jié)構(gòu)
(1)把列表生成式的[ ] 改成( )即可
舉例
g=(x+x for x in range(10))
next(g) #可以不斷成數(shù)字
for n in g: #可以全部打出來
print(n)
(2)把函數(shù)里的print 改成 yield即可剃毒。
舉例
def add(n):
yield n
next(add(5))
十病袄、lambda函數(shù)
lambda搂赋,又稱匿名函數(shù)。語法結(jié)構(gòu)為:
lambda x:表達(dá)式
舉例如下
a=lambda x:x*x
a(5)
十一益缠、面向?qū)ο蟆猚lass
類厂镇,即class,語法形式為
class 類名稱(父類名稱): #如果沒有父類名稱左刽,就寫object
pass
參考: