1.基本文法
1.1基本:
1.在Python中嚴格區分大小寫
2.Python中的每一行就是一條語句,每條語句以換行結束
3.Python中每一行語句不要過長(規範中建議每行不要超過80個字元)"rulers":[80],
4.一條語句可以分多行編寫,多行編寫時語句後邊以\結尾
5.Python是縮進嚴格的語言,是以在Python中不要随便寫縮進
6.在Python中使用#來表示注釋,#後的内容都屬于注釋,注釋的内容将會被解釋器所忽略
我們可以通過注釋來對程式進行解釋說明,一定要養成良好的編寫注釋的習慣
注釋要求簡單明了,一般習慣上#後邊會跟着一個空格
基本文法:
print('he\
aaa\
aaa')
# 這是一個列印語句,請你看見了不要慌張
# 這是一個注釋
# 注釋會被解釋器所忽略
# print(123+456) 這行代碼被注釋了,将不會執行
print('abc') # 這是一個單行注釋
1.2 編碼
預設情況下,python3源檔案以UTF-8編碼,所有字元串都是unicode字元串。同時可以指定源檔案的不同編碼
檔案開頭加上
# -*- coding: UTF-8 -*-
# coding=utf-8(等号兩邊不能有空格)
允許在源檔案中使用utf-8字元集中的字元編碼,對應的适合語言為中文等
1.3 變量和辨別符
變量:Python中使用變量,不需要聲明,直接為變量指派即可
(1) 不能使用沒有進行過指派的變量
(2)Python是一個動态類型的語言,可以為變量賦任意類型的值,也可以任意修改變量的值
Python中的變量和Java中的比較
'''
private String a = "hello"
變量名 = "value"
int[] arr = {1,2}
# 值傳遞和引用傳遞
public void swap(int[]arr,int a,int b){
a = temp;
a = b
b = temp
}
'''
'''
a = "abc"
b = 10
c = 2.5
b = a
'''
'''
a,b,c = 1,2,"abc"
'''
# 交換變量資料
'''
a = 1
b = 2
a,b = b,a
a = b
b = a
print(a,b)
'''
'''
String s = "abc"
str = s.subString(0,2)
'''
# python2中有long,python3中沒有long全部都是int
# 沒有double,全部都是float
'''
a = 1000000000000
b = 2.5
c = True
d = False
'''
# print(type(a))
# print(type(b))
# True是1,False是0
'''
print(c)
print(a+c)
print(a+d)
'''
# j定義變量時,前面不能有數字,隻要有數字全部識别成複數
'''
e = 2 + 2j
f = 0 + 1j
print(f**2)
String a = "aa"
a = null
'''
import math
a = 9
print(math.e)
多變量指派:
Python允許你同時為多個變量指派。例如:
a = b = c = 1
以上執行個體,建立一個整型對象,值為 1,從後向前指派,三個變量被賦予相同的數值。
可以為多個對象指定多個變量。例如:
a, b, c = 1, 2, "runoob"
a,b = b,a # 變量的交換
以上執行個體,兩個整型對象 1 和 2 的配置設定給變量 a 和 b,字元串對象 "runoob" 配置設定給變量 c。
注意:
a = 10
b = 20
a,b = b,a+5
print(a,b)
結果:a = 20,b=15
辨別符:
-
1.辨別符中可以含有字母、數字、_,但是不能使用數字開頭
标題例子:a_1 _a1 _1a
-
辨別符不能是Python中的關鍵字和保留字
也不建議使用Python中的函數名作為辨別符,因為這樣會導緻函數被覆寫
-
命名規範:
在Python中注意遵循兩種命名規範:
下劃線命名法
所有字母小寫,單詞之間使用_分割
max_length min_length hello_world xxx_yyy_zzz
帕斯卡命名法(大駝峰命名法)
首字母大寫,每個單詞開頭字母大寫,其餘字母小寫
MaxLength MinLength HelloWorld XxxYyyZzz
如果使用不符合标準的辨別符,将會報錯 SyntaxError: invalid syntax
_b123 = 20
# print(_b123)
# print = 123
# print(print)
1.4 注釋
單行注釋:#
多行注釋:''' '''
1.5 關鍵字和保留字
import keyword
print(len(keyword.kwlist)) #33
print(keyword.kwlist) #列印關鍵字
'''['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']'''
簡介:
1.and:表示邏輯‘與’
2.del:用于list清單操作,删除一個或者連續幾個元素。
3.from:導入相應的子產品,用import或者from...import
4.not:表示邏輯‘非’
5.while:while循環,允許重複執行一塊語句,一般無限循環的情況下用它
6.as:as單獨沒有意思,是這樣使用:with....as用來代替傳統的try...finally文法的。
擴充:with...as...用法
with open('./hello world') as f:
data = f.read()
print(data)
class Demo(object):
def t(self):
print("haha1")
class Test(object):
def __enter__(self): # 1
print('這是enter')
return Demo()
def __exit__(self,a,b,c):
print('這是exit') # 3
def t(self):
print("haha")
with Test() as t:
t.t() # 2
7.elif:和if配合使用的,if語句中的一個分支用elif表示。
8.global :定義全局變量
例如:
name = 10
age = 20
def test():
global name
age = 30
name = 'aa'
#print(name)
test()
print(name) # 'aa'
print(age) # 20
9.or:表示邏輯“或”
10.with:和as一起用,使用的方法請看as,見with
11.assert:表示斷言(斷言一個條件就是真的,如果斷言出錯則抛出異常)用于聲明某個條件為真,如果該條件不是真的,則抛出異常:AssertionError
v1 = 10
v2 = 20
assert(v1 > v2)
12.else:看下面if的解釋
13.if:if語句用于選擇分支,依據條件選擇執行那個語句塊。(if語句中最好不要嵌套if語句,建議把嵌套的if語句寫在另一個函數中)
14.pass:pass的意思就是什麼都不做
15.yield:用起來和return很像,但它傳回的是一個生成器
16.break:作用是終止循環,程式走到break的地方就是循環結束的時候。
17.except:和try一起使用,用來捕獲異常。
18.import:用來導入子產品,有時這樣用from....import
19.class:定義類
20.in:查找清單中是否包含某個元素,或者字元串a是否包含字元串b。
21.raise:raise可以顯示地引發異常。一旦執行raise語句,後面的代碼就不執行了
22.continue:跳過continue後面循環塊中的語句,繼續進行下一輪循環。
23.finally:看到finally語句,必然執行finally語句的代碼塊。
24.is:Python中的對象包含三要素:id、type、value,用來判斷對象是否相等
25.return:用于跳出函數,也可以在跳出的同時傳回一個值。
26.def:用于定義方法
27.for:for....in 一起使用:它在一序列的對象上遞歸,就是周遊隊列中的每個項目
28.lambda:即匿名函數
29.try:出現在異常進行中,使用格式為:try...except,try中放想要執行的語句,except捕獲異常
30.nonlocal:nonlocal關鍵字用來在函數或其他作用域中使用外層(非全局)變量
例如:
def make_counter():
count = 0
def counter():
nonlocal count
count += 1
return count
return counter
def make_counter_test():
mc = make_counter()
print(mc())
print(mc())
print(mc())
make_counter_test()
1.6 行和縮進
學習 Python 與其他語言最大的差別就是,Python的代碼塊不使用大括号{}來控制類,函數以及其他邏輯判斷。python 最具特色的就是用縮進來寫子產品。
縮進的空白數量是可變的,但是所有代碼塊語句必須包含相同的縮進空白數量,這個必須嚴格執行。
if True:
print "True"
else:
print "False"
1.7 多行語句
Python語句中一般以新行作為語句的結束符。但是我們可以使用斜杠**( \)将一行的語句分為多行**顯示
total = item_one + \
item_two + \
item_three
print('aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\
aaaaaaaaaaaaaaaaaaaa')
語句中包含 [], {} 或 () 括号就不需要使用多行連接配接符
days = ['Monday', 'Tuesday', 'Wednesday',
'Thursday', 'Friday']
1.8 引号
Python 可以使用引号( ’ )、雙引号( " )、三引号( ‘’’ 或 “”" )表示字元串,引号的開始與結束必須的相同類型的。
其中三引号可以由多行組成,編寫多行文本的快捷文法,常用于文檔字元串,在檔案的特定地點,被當做注釋。
word = 'word'
sentence = "這是一個句子。"
paragraph = """這是一個段落。
包含了多個語句"""
1.9 Python空行
函數之間或類的方法之間用空行分隔,表示一段新的代碼的開始。類和函數入口之間也用一行空行分隔,以突出函數入口的開始。空行與代碼縮進不同,空行并不是Python文法的一部分。書寫時不插入空行,Python解釋器運作也不會出錯。但是空行的作用在于分隔兩段不同功能或含義的代碼,便于日後代碼的維護或重構。
記住:空行也是程式代碼的一部分。
1.10 等待使用者輸入
執行下面的程式在按Enter鍵後就會等待使用者輸入:
input("\n\n按下 enter 鍵後退出。")
1.11 同一行顯示多條語句
Python可以在同一行中使用多條語句,語句之間使用分号(;)分割
x = 'runoob';print(x + '\n')
1.12 多個語句構成代碼組
縮進相同的一組語句構成一個代碼塊,我們稱之代碼組。像if、while、def和class這樣的複合語句,首行以關鍵字開始,以冒号( : )結束,該行之後的一行或多行代碼構成代碼組。
我們将首行及後面的代碼組稱為一個子句(clause)
if expression :
suite
elif expression :
suite
else :
suite
1.13 Print 輸出
同類型才可以相加
print 預設輸出是換行的,如果要實作不換行需要在變量末尾加上 end="":
x="a"
y="b"
# 換行輸出
print( x )
print( y )
print('---------')
# 不換行輸出
print( x, end=" " )
print( y, end=" " )
print()
1.14 import 與 from…import
在 python 用 import 或者 from...import 來導入相應的子產品。
a、将整個子產品(somemodule)導入,格式為: import somemodule
b、從某個子產品中導入某個函數,格式為: from somemodule import somefunction
c、從某個子產品中導入多個函數,格式為: from somemodule import firstfunc, secondfunc, thirdfunc
d、将某個子產品中的全部函數導入,格式為: from somemodule import *
(1)導入 sys 子產品
import sys
print('================Python import mode==========================');
print ('指令行參數為:')
for i in sys.argv:
print (i)
print ('\n python 路徑為',sys.path)
(2)導入 sys 子產品的 argv,path 成員
from sys import argv,path # 導入特定的成員
print('================python from import===================================')
print('path:',path) # 因為已經導入path成員,是以此處引用時不需要加sys.path