Python學習筆記1:Python基本語法

作者:xxw9485
時間:2018/1/8
來源:全棧數據工程師養成攻略


Python基本語法

1 變量

Python的變量相當於一個個容器,裏面存放着某些值。可以是英文、數字以及下劃線,不過不能以數字開頭,且區分大小寫。使用時無需聲明其所屬類型。
Python變量包括以下幾類:數值、字符串、列表、元組以及字典。

1.1數值

數值包括整型和浮點型,對應爲整數和浮點數。例:

#整型
a = 1
#浮點型
b = 1.0

1.2字符串

字符串也即是文本,要用單引號或雙引號括起來,長度爲任意長。
注意: 中文以及中文符號只能出現在字符串中。

  • 列表內容不能使用中文輸入法的逗號(,)把兩個字符串放在同一行輸出。
#輸入
a = 'hjk'
b = 'asd'
print(a, b)
#輸出
SyntaxError: invalid character in identifier
  • 使用加號(+)可以拼接兩個字符串。
#輸入
a = 'hjk'
b = 'asd'
print(a + b)
#輸出
hjkasd
  • 使用len()可以得到字符串的長度。
#輸入
a = 'hjk'
print(len(a))
#輸出
3
  • 使用切片可以訪問字符串中的某個字符或某部分字符串。

1.位置下標從0開始,即若打印第一個字符h時,下標取0。

a = 'hjk'
print(a[0])

2.位置下標爲負數表示從後往前數,即若打印倒數第一個字符k時,下標取-1。

a = 'hjk'
print(a[-1])

3.返回部分字符串時,冒號前後分別爲開始下標和結束下標,且包括開始下標,但不包括結束下標,即若打印第二個到第三個字符時,下標取1到3。

a = 'hjk'
print(a[13])

4.冒號前後的下標同樣可以使用負數。

1.3列表

列表與字符串類似,但字符串的每個元素均爲字符,而列表的每個元素可以爲任意類型的變量。

  • 列表內容使用[]定義一個空列表,使用append()可以向列表尾部添加一個元素;使用extend()可以向列表尾部添加一個列表;使用insert(某下標,元素)可以向列表某下標前面添加一個元素。
# 輸入
a = []
a.append('ab')
print(a)
a.append('cd')
print(a)
a.extend([1,2])
print(a)
a.insert(1,'y')
print(a)
# 輸出
['ab']
['ab', 'cd']
['ab', 'cd', 1, 2]
['ab', 'y', 'cd', 1, 2]
  • 使用len()可以獲取列表的長度。
# 輸入
a = ['ab', 'y', 'cd', 1, 2]
print(len(a))
# 輸出
5
  • 與字符串類似,可以按下標對列表進行訪問和賦值。
# 輸入
a = ['ab', 'y', 'cd', 1, 2]
print(a[0], a[-1])
a[1] = 10
print(a)
# 輸出
ab 2
['ab', 10, 'cd', 1, 2]
  • 使用del可以刪除列表中的某個元素。
# 輸入
a = ['ab', 10, 'cd', 1, 2]
del a[0]
print(a)
# 輸出
[10, 'cd', 1, 2]

1.4元組

元組和列表類似,唯一的不同是元組中的元素在初始化之後不能再更改,因此可以理解成一個只讀的變量。

  • 使用()定義一個元組,當嘗試修改元組的元素時會報錯。
# 輸入
a = (1, 2, 3)
a[0] = 10
# 輸出
TypeError: 'tuple' object does not support item assignment

1.5字典

字典是一種以鍵值對形式存在的變量類型,特定的key訪問對應的value。字典與列表的區別:列表的元素是有序對等的,字典的元素是無序的。

  • 使用{}定義一個字典,使用key來賦值value。
# 輸入
a = {}
print(a)
a['k1'] = 1
a['k2'] = 2
a['k3'] = 3
print(a)
# 輸出
{}
{'k1': 1, 'k2': 2, 'k3': 3}
  • 也可以在定義字典時直接賦值。
# 輸入
a = {'k1': 1, 'k2': 2, 'k3': 3}
print(a)
# 輸出
{'k1': 1, 'k2': 2, 'k3': 3}
  • 使用 key in dict.keys() 可以判斷字典中是否有某個key。python3沒有內置函數has_key()。
# 輸入
dict = {'Name': 'Zara', 'Age': 7}
print ('Age' in dict.keys())
print ('fa' in dict.keys())
# 輸出
True
False

注意:在賦值的時候,如果key已經存在,則會用新的value覆蓋已有的value。

2 註釋

被註釋的代碼將不會運行,可以看作是寫給自己和其他程序猿閱讀的一些筆記和說明,提高代碼可讀性。

# 這裏是單行註釋

'''
這裏是
很多行
註釋
'''

注意:在Sublime text2 中,選中需要註釋的內容,按Ctrl+/即可完成註釋。

3 保留字符

在Python中,有一些字符具有某些特定功能,如 import 、 class等。我們在選擇變量名時,應注意避開這些保留字符。
查看方法:

import keyword
print(keyword.kwlist)

4 行和縮進

在Python中,代碼塊的邊界不是通過大括號等符號進行顯式劃分,而是通過行的縮進實現的。連續相同縮進水平的代碼處於同一個代碼塊,在使用 for 、 while 、 if 、 try等語法時需要注意每行代碼的縮進。

5 運算符

運算符的作用是根據已有的變量生成新的變量,主要有以下幾種:

  • 算術運算符:+,-,*,/,%,即加、減、乘、除、取餘
  • 比較運算符:==,!=,>,<,>=,<=,即等於、不等於、大於、小於、大於等於、小於等於
  • 賦值運算符:=,+=,-=,*=,/=,%=,即賦值、加賦值、減賦值、乘賦值、除賦值、取餘賦值
  • 邏輯運算符:and,or,not,即與、或、非
# 輸入
a = 1
b = 2
print(a+b)
print(a==b)
a += 1
print(a)
c = True
d = False
print(c and d)
# 輸出
3
False
2
False

6 條件

在寫代碼的時候,往往需要根據某些條件進行判斷,並根據判斷結果執行不同的分支代碼。
主要有三種情況:if、if else、if elif else。

# 輸入
a = 1
if a == 1:
    print(True)
# 輸出
True

# 輸入
a = 1
if a == 2:
    print(True)
else:
    print(False)
# 輸出
False

# 輸入
a = 1
if a == 1:
    print(1)
elif a == 2:
    print(2)
else:
    print(3)
# 輸出
1

注意:若出現了 if 和 elif ,就需要加上相應的條件判斷,並且注意代碼的縮進。

7 循環

當重複性工作出現時,則需要使用循環來減輕工作量,提高工作效率。常用的循環有while循環和for循環。

7.1 while循環

只要某一條件成立,就不斷執行循環體裏的代碼,直到條件不再成立。

# 輸入
a = 1
while  a <10:
    print (a)
    a += 2
# 輸出
1
3
5
7
9

注意:一定要記得在循環體裏修改條件變量,否則可能會導致死循環。

7.2 for循環

循環次數一般是事先預知的,將一個標誌變量從某個起始值迭代到某個終止值後即結束循環。

# 輸入
for x in range(0, 5):
    print(x)
# 輸出
0
1
2
3
4

可以用 for循環方便地遍歷列表和字典。

  • 遍歷列表,這裏的x只是一個臨時變量
# 輸入
a = [1, 2, 3]
for x in a:
    print(x)
# 輸出
1
2
3
  • 遍歷字典的全部key,這裏的y也只是一個臨時變量
# 輸入
b = {'k1': 1, 'k2': 2, 'k3': 3}
for y in b.keys():
    print(y)
# 輸出
k1
k2
k3
  • 遍歷字典的全部value,這裏的z也只是一個臨時變量
# 輸入
b = {'k1': 1, 'k2': 2, 'k3': 3}
for z in b.values():
    print(z)
# 輸出
1
2
3
  • 同時遍歷字典的所有key和value
# 輸入
b = {'k1': 1, 'k2': 2, 'k3': 3}
for y, z in b.items():
    print(y, z)
# 輸出
k1 1
k2 2
k3 3

7.3 循環控制

循環控制主要包括三種: pass 、 continue 、 break 。

  • pass 表示什麼也不做,只是佔一行代碼的位置;
# 輸入
for x in range(0, 5):
    if x == 5:
        pass
    else:
        print (x)
# 輸出
0
1
2
3
4
  • continue 表示立即退出本輪循環,繼續執行後續輪循環;
# 輸入
for x in range(0, 5):
    if x == 5:
        continue
    print (x)
# 輸出
0
1
2
3
4
  • break 表示立即推出循環,後續循環也不再執行。
# 輸入
for x in range(0, 10):
    if x == 5:
        break
    print (x)
# 輸出
0
1
2
3
4

8 時間

時間戳指的是從1970年1月1日0時0分0秒開始,到某一時刻所經歷的秒數,可以是整數或者小數。

# 當前時刻的時間戳
import time
t = time.time()
print t, type(t)
  • 時間文本轉時間戳,精確到秒
# 輸入
import time
a = '2016-10-01 10:00:00'
b = int(time.mktime(time.strptime(a,'%Y-%m-%d %H:%M:%S')))
print(b)
# 輸出
1475287200
  • 當前時間戳轉時間文本
# 輸入
import time
c = int(time.time())
d = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(c))
print(d)
# 輸出
2018-01-08 23:01:06

9 文件

文件操作包括向文件中寫內容,以及從文件中讀內容,使用 open() 打開一個文件。

  • 寫文件:w爲重新寫模式,打開文件時會將文件內容清空;a爲追加寫模式,打開文件後保留原始內容,繼續寫入。
fw = open('data.txt', 'w')
for x in range(0, 10):
    # 將整數轉成文本再寫入
    fw.write(str(x))
    # 也可以每次寫入之後換行,\n爲轉義字符,表示換行
    # fw.write(str(x) + '\n')
fw.close()
  • 讀文件
fr = open('data.txt', 'r')
# 一行一行地讀,line只是個臨時變量
for line in fr:
    print(line)
    # 如果每行後面有換行,可以將換行符去掉,使內容更緊湊
    # strip()可以去掉字符串兩端的空白字符
    # print(line.strip())
fr.close()

10 異常

Python代碼中可能會出現一些可以預知的問題,例如字典訪問的key不存在。如果不加處理,發生問題的時候Python便會報錯並退出,可能之前跑了很久又要重頭再來。因此,我們需要對可能出現的異常進行捕捉和處理。
異常的結構由 try 、 except 、 else 、 finally 四部分組成。

try:
    # 嘗試執行這些代碼
    print(1 / 0)
except Exception, e:
    # 如果出現異常就進行處理
    # e爲出現的異常類型
    print(e)
else:
    # try裏的代碼沒有出錯
    # 可以執行後續工作了
    print('沒有出錯')
finally:
    # 無論是否出錯,都會執行的代碼
    print('一定會執行')

11 函數

函數的作用是代碼模塊化,將可重用的代碼封裝成一個函數,這樣在需要使用的時候就只需調用寫好的函數即可,而不用重新寫一遍代碼。
函數的使用包括兩個部分,函數的定義和函數的調用。除此之外,函數可以有一個或多個參數,參數之間以逗號分開,爲函數的功能提供更多的靈活性。

# 定義函數
def hello(name1, name2):
    print('Hello ' + name1 + ' ' + name2)

# 調用函數
hello('Python', 'my love')

# 輸出
Hello Python my love

12 補充學習

以上都是Python中最基礎和最常用的內容。如果希望更全面更系統地學習一遍Python,可以參考以下鏈接。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章