十分鐘看懂python3語言特性

十分鐘看懂python3語言特性

看了王垠的《如何掌握所有程序語言》,感觸甚深。如果說程序語言有其通用規律的話,那就是語言特性,也就是這些語言的通用概念。這些概念的具體語法的形式可能都不一樣,但是所內涵的功能是一致的,比如英語中的bird和漢語中,其實指的都是同一種事物,關鍵是它們怎么運作的,而不是它們的形式是什么。

掌握語言特性,一開始要掌握最基本、最簡單的概念和用法,然后由簡單到復雜。不是讓你從頭到尾的學,而是先掌握框架,再逐漸豐富。

下面,嘗試寫出python的語言特性。

一、字符串和數

1.字符串

所有在單引號‘ ’、雙引號“ ”、三引號‘’‘ ’‘’“”“ ”“”里面的單詞、句子和數字等都是字符串。其中三個引號可以換行。

‘good’

'''123
456'''

2.數字

數字不用加引號,包括整數,浮點數(帶小數點的數和科學計數法的數)和復數。

1

3.14156

10E-10

(1+2j)

二、變量

字符串、數、函數、數據結構、類、類的屬性等對象通過 = 賦值給變量。

a=55

b='good'

c=[1, 2, 3]

變量分為公共變量,特殊變量和私有變量.

1.公共變量。名稱前后不帶_,可以正常使用。

2.特殊變量。名稱前后帶_,一般在Python里有特殊用途,如

_main_

_name_

3.私有變量。名稱前帶_,不應該被直接引用。

三、算術運算

1.加減乘除,大于小于等于,變成二進制位移,以及二進制求同求異。

2.優先級跟數學算術一樣。

3.字符串也可以進行算數運算

'abc'*3

四、數據結構

數據結構,Data Structures,就是儲存數據的容器。數據包括字符串和數等對象。

四種數據結構:

1.列表[list],可以增刪修改。

2.元組(tuple),不能修改。

3.字典,dict,格式如{key:value},可以增刪修改。

4.集合,{set },儲存key,不儲存value,可以增刪。

五、控制結構

1.if

如果...那么。

if ... :
   代碼塊
elif ...:
   代碼塊
else:
   代碼塊

2.while

如果是TRUE,那么執行下面代碼。

while True:
    代碼塊

3.for

for ....in 循環,可迭代出(就是一個個取出)列表、元組、字典和字符串等對象里的元素。

for n in [1,2,3]:
    print(n)

4.break和continue

break和continue用在 if,while和for里面。

break是停止所有循環,continue是停止執行本次循環中continue下面的語句,繼續執行下個循環。

六、函數定義

python有內置函數和自定義函數。內置函數是python定義好的,知道名稱就可以直接使用,自定義函數就是用def去定義。

1.定義一個函數,def

def 函數名(參數):
    代碼塊
    return ...
  1. 參數類別

    參數共有五種

def 函數名(位置參數,默認參數,*可變參數,**關鍵字參數,命名關鍵字參數):
    代碼塊
    return 

(1)位置參數

放在函數名稱的( )里,且不帶*,也不在 *參數 后的參數。

舉例

def add(x):
    return x*x  

這個x就是位置參數

(2)默認參數

在函數名稱后面的( )里,給參數賦值的參數。

舉例

def add(n,k=2):
    reutrn n+k

add(4)  #只需要給n賦值即可

這里面的k就是默認參數。

(3)可變參數

可變參數,是指傳入參數的個數可以變化,從0到任意個參數,均可。

形式為

def  函數名稱(*可變參數):
    代碼塊

舉例

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)關鍵字參數

關鍵字參數,是指參數名稱的個數,可變化,可以放一個參數名稱到任意個參數名稱。這些參數名稱會自動組成一個字典。

形式為

def 函數名稱(**關鍵字參數):
    代碼塊

舉例

def add(**kw):
    print(kw)

add(num1=1,num2=2)  #必須寫成  參數名稱=對象 的形式。

#結果顯示如下
{'num1':1,'num2'=2}

(5)命名關鍵字參數

命名關鍵字參數限制關鍵字參數名稱的個數。有兩種形式

  • 一種是在*后面的參數
def add(*,命名關鍵字參數名稱1,命名關鍵字參數名稱2)

舉例如下:

def add(*,flower,tree):
    print(flower,tree)

add(flower='rose',tree='apple')

#結果顯示
rose apple
  • 一種是在 *可變參數 后面的參數
def add(*可變參數,命名關鍵字參數)

舉例如下:

def add(*person,flower,tree):
    print(person,flower,tree)

country=['China','America']
add(*country,flower='rose',tree='apple')

#結果顯示如下
('China', 'America') rose apple

七、函數調用

函數調用格式如下

(1)變量=函數名稱(參數 )

a=abs(-5) #abs是求絕對值的內置函數。

(2)變量=函數名稱

? 變量(參數)

a=abs
a(-5)

八、遞歸

遞歸就是函數的套用。就是函數里套用一個函數。

使用方法:

def 函數(參數):

? 代碼塊

? return 函數(參數)

舉例,求1+2+3+...+(n-1)+n的和

def fact(n):
    if n==1:
        return 1
    return n*fact(n-1)  

九、類型推導

1.推導式

推導式,英文名稱Comprehensions,又稱生成式。類型有三種,列表推導式,字典推導式和集合推導式,三種方式的語法結構都差不多。

[關于n的表達式 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。可以實現一邊循環一遍計算,一次生成一個數。

生成器有兩種語法結構

(1)把列表生成式的[ ] 改成( )即可

舉例

g=(x+x for x in range(10))

next(g) #可以不斷成數字

for n in g: #可以全部打出來
    print(n)

(2)把函數里的print 改成 yield即可。

舉例

def add(n):
    yield n

next(add(5))

十、lambda函數

lambda,又稱匿名函數。語法結構為:

lambda x:表達式

舉例如下

a=lambda x:x*x
a(5)

十一、面向對象——class

類,即class,語法形式為

class 類名稱(父類名稱): #如果沒有父類名稱,就寫object
    pass

參考:

1.Python中的推導式使用詳解

2.廖雪峰的Python教程

3.Python官方指導手冊

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • http://python.jobbole.com/85231/ 關于專業技能寫完項目接著寫寫一名3年工作經驗的J...
    燕京博士閱讀 7,628評論 1 118
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,923評論 18 139
  • 產品管理是一項你可以通過實踐來學習并提高的技能。成為一名好的產品經理應掌握以下幾點核心技能。 1.保持敏銳。這可以...
    大象的印象閱讀 13,280評論 0 42
  • 第一章 賀天看著飛機窗外漸漸泛白的天空,喝下了易拉罐里的最后一口啤酒。他不是沒有錢去買那些昂貴的好酒,相反...
    門口墨魚閱讀 542評論 0 1
  • 那些生于60年代末期和70、80年代的大多已經步入婚姻,為人父母,他們的圈子似乎已經固定,他們的人生似乎已經沒有波...
    生執念閱讀 1,806評論 2 30