Python3基礎語法快速入門

01html

Pythonpython

簡介git

Python 是一種高層次的結合瞭解釋性、編譯性、互動性和麪向對象的腳本語言。Python 由 Guido van Rossum 於 1989 年末在荷蘭國家數學和計算機科學研究所發明,第一個公開發行版發行於 1991 年。算法

'''
做者:韭白
源自:
https://www.cnblogs.com/shockerli/p/python-study-note.html
'''

特色數據庫



  • 易於學習:Python 有相對較少的關鍵字,結構簡單,和一個明肯定義的語法,學習起來更加簡單。express

  • 易於閱讀:Python 代碼定義的更清晰。編程

  • 易於維護:Python 的成功在於它的源代碼是至關容易維護的。api

  • 一個普遍的標準庫:Python 的最大的優點之一是豐富的庫,跨平臺的,在 UNIX,Windows 和 macOS 兼容很好。網絡

  • 互動模式:互動模式的支持,您能夠從終端輸入執行代碼並得到結果的語言,互動的測試和調試代碼片段。app

  • 可移植:基於其開放源代碼的特性,Python 已經被移植(也就是使其工做)到許多平臺。

  • 可擴展:若是你須要一段運行很快的關鍵代碼,或者是想要編寫一些不肯開放的算法,你可使用 C 或 C++ 完成那部分程序,而後從你的 Python 程序中調用。

  • 數據庫:Python 提供全部主要的商業數據庫的接口。

  • GUI 編程:Python 支持 GUI 能夠建立和移植到許多系統調用。

  • 可嵌入:你能夠將 Python 嵌入到 C/C++ 程序,讓你的程序的用戶得到"腳本化"的能力。

  • 面向對象:Python 是強面向對象的語言,程序中任何內容統稱爲對象,包括數字、字符串、函數等。

02

Python

基礎語法

運行 Python

交互式解釋器

在命令行窗口執行python後,進入 Python 的交互式解釋器。exit()Ctrl + D 組合鍵退出交互式解釋器。

命令行腳本

在命令行窗口執行python script-file.py,以執行 Python 腳本文件。

指定解釋器

若是在 Python 腳本文件首行輸入#!/usr/bin/env python,那麼能夠在命令行窗口中執行/path/to/script-file.py以執行該腳本文件。

注:該方法不支持 Windows 環境。

編碼

默認狀況下,3.x 源碼文件都是 UTF-8 編碼,字符串都是 Unicode 字符。也能夠手動指定文件編碼:

# -*- coding: utf-8 -*-

或者

# encoding: utf-8

注意: 該行標註必須位於文件第一行

標識符

  • 第一個字符必須是英文字母或下劃線 _

  • 標識符的其餘的部分由字母、數字和下劃線組成。

  • 標識符對大小寫敏感。

注:從 3.x 開始,非 ASCII 標識符也是容許的,但不建議。

保留字

保留字即關鍵字,咱們不能把它們用做任何標識符名稱。Python 的標準庫提供了一個 keyword 模塊,能夠輸出當前版本的全部關鍵字:


>>> import keyword
>>> 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']

(左右滑動可查看完整代碼)


註釋

單行註釋採用#,多行註釋採用'''"""

# 這是單行註釋

'''
這是多行註釋

這是多行註釋
'''

"""
這也是多行註釋

這也是多行註釋
"""

行與縮進

Python 最具特點的就是使用縮進來表示代碼塊,不須要使用大括號 {}。 縮進的空格數是可變的,可是同一個代碼塊的語句必須包含相同的縮進空格數。縮進不一致,會致使運行錯誤。

多行語句

Python 一般是一行寫完一條語句,但若是語句很長,咱們可使用反斜槓\來實現多行語句。

total = item_one + \
        item_two + \
        item_three

[], {}, 或 () 中的多行語句,不須要使用反斜槓\

空行

函數之間或類的方法之間用空行分隔,表示一段新的代碼的開始。類和函數入口之間也用一行空行分隔,以突出函數入口的開始。

空行與代碼縮進不一樣,空行並非 Python 語法的一部分。書寫時不插入空行,Python 解釋器運行也不會出錯。可是空行的做用在於分隔兩段不一樣功能或含義的代碼,便於往後代碼的維護或重構。

記住:空行也是程序代碼的一部分。

等待用戶輸入

input函數能夠實現等待並接收命令行中的用戶輸入。

content = input("\n\n請輸入點東西並按 Enter 鍵\n")
print(content)

同一行寫多條語句

Python 能夠在同一行中使用多條語句,語句之間使用分號;分割。

import sys; x = 'hello world'; sys.stdout.write(x + '\n')

多個語句構成代碼組

縮進相同的一組語句構成一個代碼塊,咱們稱之代碼組。

ifwhiledefclass這樣的複合語句,首行以關鍵字開始,以冒號:結束,該行以後的一行或多行代碼構成代碼組。

咱們將首行及後面的代碼組稱爲一個子句(clause)。

print 輸出

print 默認輸出是換行的,若是要實現不換行須要在變量末尾加上end=""或別的非換行符字符串:

print('123') # 默認換行
print('123', end = "") # 不換行

import 與 from...import

在 Python 用 import 或者 from...import 來導入相應的模塊。

將整個模塊導入,格式爲:import module_name

從某個模塊中導入某個函數,格式爲:from module_name import func1

從某個模塊中導入多個函數,格式爲:from module_name import func1, func2, func3

將某個模塊中的所有函數導入,格式爲:from module_name import *

運算符

算術運算符

運算符描述+加-減*乘/除%取模**冪//取整除


比較運算符

運算符描述==等於!=不等於>大於<小於>=大於等於<=小於等於

賦值運算符

運算符描述=簡單的賦值運算符+=加法賦值運算符-=減法賦值運算符*=乘法賦值運算符/=除法賦值運算符%=取模賦值運算符**=冪賦值運算符//=取整除賦值運算符

位運算符

運算符描述&按位與運算符:參與運算的兩個值,若是兩個相應位都爲1,則該位的結果爲1,不然爲0|按位或運算符:只要對應的二個二進位有一個爲1時,結果位就爲1^按位異或運算符:當兩對應的二進位相異時,結果爲1~按位取反運算符:對數據的每一個二進制位取反,即把1變爲0,把0變爲1。~x 相似於 -x-1<<左移動運算符:運算數的各二進位所有左移若干位,由"<<"右邊的數指定移動的位數,高位丟棄,低位補0>>右移動運算符:把">>"左邊的運算數的各二進位所有右移若干位,">>"右邊的數指定移動的位數

邏輯運算符

運算符邏輯表達式描述andx and y布爾"與" - 若是 x 爲 False,x and y 返回 False,不然它返回 y 的計算值orx or y布爾"或" - 若是 x 是 True,它返回 x 的值,不然它返回 y 的計算值notnot x布爾"非" - 若是 x 爲 True,返回 False 。若是 x 爲 False,它返回 True

成員運算符

運算符描述in若是在指定的序列中找到值返回 True,不然返回 Falsenot in若是在指定的序列中沒有找到值返回 True,不然返回 False

身份運算符

運算符描述實例isis 是判斷兩個標識符是否是引用自一個對象x is y, 相似 id(x) == id(y) , 若是引用的是同一個對象則返回 True,不然返回 Falseis notis not 是判斷兩個標識符是否是引用自不一樣對象x is not y , 相似 id(a) != id(b)。若是引用的不是同一個對象則返回結果 True,不然返回 False

運算符優先級

運算符描述(expressions...), [expressions...], {key: value...}, {expressions...}表示綁定或元組、表示列表、表示字典、表示集合x[index], x[index:index], x(arguments...), x.attribute下標、切片、調用、屬性引用**指數 (最高優先級)~+-按位翻轉, 一元加號和減號 (最後兩個的方法名爲 +@ 和 -@)*/%//乘,除,取模和取整除+-加法減法>><<右移,左移運算符&位 'AND'^|位運算符<=<>>=比較運算符<>==!=等於運算符=%=/=//=-=+=*=**=賦值運算符isis not身份運算符innot in成員運算符andornot邏輯運算符if - else條件表達式lambdaLambda 表達式

具備相同優先級的運算符將從左至右的方式依次進行。用小括號()能夠改變運算順序。

變量

變量在使用前必須先"定義"(即賦予變量一個值),不然會報錯:

>>> name
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'name' is not defined

數據類型

布爾(bool)

只有 TrueFalse 兩個值,表示真或假。

數字(number)

整型(int)

整數值,可正數亦可複數,無小數。 3.x 整型是沒有限制大小的,能夠看成 Long 類型使用,因此 3.x 沒有 2.x 的 Long 類型。

浮點型(float)

浮點型由整數部分與小數部分組成,浮點型也可使用科學計數法表示(2.5e2 = 2.5 x 10^2 = 250)

複數(complex)

複數由實數部分和虛數部分構成,能夠用a + bj,或者complex(a,b)表示,複數的實部 a 和虛部 b 都是浮點型。

數字運算

  • 不一樣類型的數字混合運算時會將整數轉換爲浮點數

  • 在不一樣的機器上浮點運算的結果可能會不同

  • 在整數除法中,除法 / 老是返回一個浮點數,若是隻想獲得整數的結果,丟棄可能的分數部分,可使用運算符 //

  • // 獲得的並不必定是整數類型的數,它與分母分子的數據類型有關係

  • 在交互模式中,最後被輸出的表達式結果被賦值給變量 __ 是個只讀變量

數學函數

注:如下函數的使用,需先導入 math 包。

函數描述abs(x)返回數字的整型絕對值,如 abs(-10) 返回 10ceil(x)返回數字的上入整數,如 math.ceil(4.1) 返回 5cmp(x, y)若是 x < y 返回 -1,若是 x == y 返回 0,若是 x > y 返回 1。Python 3 已廢棄 。使用 使用 (x>y)-(x<y) 替換。exp(x)返回 e 的 x 次冪(ex),如 math.exp(1) 返回2.718281828459045fabs(x)返回數字的浮點數絕對值,如 math.fabs(-10) 返回10.0floor(x)返回數字的下舍整數,如 math.floor(4.9) 返回 4log(x)如 math.log(math.e) 返回 1.0,math.log(100,10) 返回 2.0log10(x)返回以 10 爲基數的 x 的對數,如 math.log10(100) 返回 2.0max(x1, x2,...)返回給定參數的最大值,參數能夠爲序列min(x1, x2,...)返回給定參數的最小值,參數能夠爲序列modf(x)返回 x 的整數部分與小數部分,兩部分的數值符號與 x 相同,整數部分以浮點型表示pow(x, y)冪等函數, x**y 運算後的值round(x [,n])返回浮點數 x 的四捨五入值,如給出 n 值,則表明舍入到小數點後的位數sqrt(x)返回數字 x 的平方根

隨機數函數

注:如下函數的使用,需先導入 random 包。

函數描述choice(seq)從序列的元素中隨機挑選一個元素,好比random.choice(range(10)),從0到9中隨機挑選一個整數randrange ([start,] stop [,step])從指定範圍內,按指定基數遞增的集合中獲取一個隨機數,基數缺省值爲1random()隨機生成下一個實數,它在[0,1)範圍內seed([x])改變隨機數生成器的種子seed。若是你不瞭解其原理,你沒必要特別去設定seed,Python會幫你選擇seedshuffle(lst)將序列的全部元素隨機排序uniform(x, y)隨機生成下一個實數,它在[x,y]範圍內

三角函數

注:如下函數的使用,需先導入 math 包。

函數描述acos(x)返回 x 的反餘弦弧度值asin(x)返回 x 的反正弦弧度值atan(x)返回 x 的反正切弧度值atan2(y, x)返回給定的 X 及 Y 座標值的反正切值cos(x)返回 x 的弧度的餘弦值hypot(x, y)返回歐幾里德範數 sqrt(x*x + y*y)sin(x)返回的 x 弧度的正弦值tan(x)返回 x 弧度的正切值degrees(x)將弧度轉換爲角度,如 degrees(math.pi/2) 返回 90.0radians(x)將角度轉換爲弧度

數學常量

常量描述pi數學常量 pi(圓周率,通常以π來表示)e數學常量 e,e 即天然常數(天然常數)

字符串(string)

  • 單引號和雙引號使用徹底相同

  • 使用三引號('''""")能夠指定一個多行字符串

  • 轉義符(反斜槓\)能夠用來轉義,使用r可讓反斜槓不發生轉義,如r"this is a line with \n",則\n會顯示,並非換行

  • 按字面意義級聯字符串,如"this " "is " "string"會被自動轉換爲this is string

  • 字符串能夠用 + 運算符鏈接在一塊兒,用 * 運算符重複

  • 字符串有兩種索引方式,從左往右以 0 開始,從右往左以 -1 開始

  • 字符串不能改變

  • 沒有單獨的字符類型,一個字符就是長度爲 1 的字符串

  • 字符串的截取的語法格式以下:變量[頭下標:尾下標]

轉義字符

轉義字符描述\在行尾時,續行符\\反斜槓符號\'單引號\"雙引號\a響鈴\b退格(Backspace)\e轉義\000空\n換行\v縱向製表符\t橫向製表符\r回車\f換頁\oyy八進制數,yy表明字符,例如:\o12表明換行\xyy十六進制數,yy表明字符,例如:\x0a表明換行\other其它的字符以普通格式輸出

字符串運算符

操做符描述實例+字符串鏈接'Hello' + 'Python' 輸出結果:'HelloPython'*重複輸出字符串'Hello' * 2 輸出結果:'HelloHello'[]經過索引獲取字符串中字符'Hello'[1] 輸出結果 e[ : ]截取字符串中的一部分'Hello'[1:4] 輸出結果 ellin成員運算符,若是字符串中包含給定的字符返回 True'H' in 'Hello' 輸出結果 Truenot in成員運算符,若是字符串中不包含給定的字符返回 True'M' not in 'Hello' 輸出結果 Truer/R原始字符串,全部的字符串都是直接按照字面的意思來使用,沒有轉義特殊或不能打印的字符。原始字符串除在字符串的第一個引號前加上字母 r(能夠大小寫)之外,與普通字符串有着幾乎徹底相同的語法print(r'\n')print(R'\n')%格式化字符串

字符串格式化

在 Python 中,字符串格式化不是 sprintf 函數,而是用 % 符號。例如:

print("我叫%s, 今年 %d 歲!" % ('小明', 10))

// 輸出:
我叫小明, 今年 10 歲!

格式化符號:

符號描述%c格式化字符及其 ASCII 碼%s格式化字符串%d格式化整數%u格式化無符號整型%o格式化無符號八進制數%x格式化無符號十六進制數%X格式化無符號十六進制數(大寫)%f格式化浮點數字,可指定小數點後的精度%e用科學計數法格式化浮點數%E做用同 %e,用科學計數法格式化浮點數%g%f 和 %e 的簡寫%G%f 和 %E 的簡寫%p用十六進制數格式化變量的地址

輔助指令:

指令描述*定義寬度或者小數點精度-用作左對齊+在正數前面顯示加號

在正數前面顯示空格#在八進制數前面顯示零('0'),在十六進制前面顯示'0x'或者'0X'(取決於用的是'x'仍是'X')0顯示的數字前面填充'0'而不是默認的空格%'%%'輸出一個單一的'%'(var)映射變量(字典參數)m.n.m 是顯示的最小總寬度,n 是小數點後的位數(若是可用的話)

Python 2.6 開始,新增了一種格式化字符串的函數 str.format(),它加強了字符串格式化的功能。

多行字符串

  • 用三引號('''""")包裹字符串內容

  • 多行字符串內容支持轉義符,用法與單雙引號同樣

  • 三引號包裹的內容,有變量接收或操做即字符串,不然就是多行註釋

實例:

string = '''
print(\tmath.fabs(-10))

print(\nrandom.choice(li))
'''

print(string)

輸出:

print(  math.fabs(-10))

print(
random.choice(li))


Unicode

在 2.x 中,普通字符串是以 8 位 ASCII 碼進行存儲的,而 Unicode 字符串則存儲爲 16 位 Unicode 字符串,這樣可以表示更多的字符集。使用的語法是在字符串前面加上前綴 u

在 3.x 中,全部的字符串都是 Unicode 字符串。

字符串函數

方法名描述str.capitalize()首字母大寫,其他字符小寫str.center(width[, fillchar])返回一個指定的寬度 width 居中的字符串,fillchar 爲填充的字符,默認爲空格str.count(sub, start= 0,end=len(string))統計子字符串在字符串中出現的次數str.encode(encoding='UTF-8',errors='strict')以指定的編碼格式編碼字符串,返回 bytes 對象bytes.decode(encoding="utf-8", errors="strict")以指定的編碼格式解碼 bytes 對象,返回字符串str.endswith(suffix[, start[, end]])判斷字符串是否以指定後綴結尾str.expandtabs(tabsize=8)把字符串中的 tab 符號(\t)轉爲空格str.find(str, beg=0, end=len(string))若是包含子字符串返回開始的索引值,不然返回-1str.index(str, beg=0, end=len(string))若是包含子字符串返回開始的索引值,不然拋出異常str.isalnum()檢測字符串是否只由字母和數字組成str.isalpha()檢測字符串是否只由字母組成str.isdigit()檢測字符串是否只由數字組成str.islower()若是字符串中包含至少一個區分大小寫的字符,而且全部這些(區分大小寫的)字符都是小寫,則返回 True,不然返回 Falsestr.isupper()檢測字符串中全部的字母是否都爲大寫str.isspace()若是字符串中只包含空格,則返回 True,不然返回 Falsestr.istitle()檢測字符串中全部的單詞拼寫首字母是否爲大寫,且其餘字母爲小寫str.join(sequence)將序列的元素以指定的字符鏈接生成一個新的字符串len(s)返回對象(字符串、列表、元組等)長度或項目個數str.ljust(width[, fillchar])返回一個原字符串左對齊,並使用空格填充至指定長度的新字符串。若是指定的長度小於原字符串的長度則返回原字符串str.lower()轉換字符串中全部大寫字符爲小寫str.upper()轉換字符串中全部小寫字符爲大寫str.strip([chars])移除字符串頭尾指定的字符(默認爲空格)或字符序列str.maketrans(intab, outtab)用於建立字符映射的轉換表,對於接受兩個參數的最簡單的調用方式,第一個參數是字符串,表示須要轉換的字符,第二個參數也是字符串表示轉換的目標。兩個字符串的長度必須相同,爲一一對應的關係。str.translate(table)根據參數table給出的錶轉換字符串的字符max(str)返回字符串中最大的字符min(str)返回字符串中最小的字符str.replace(old, new[, max])把字符串中的 old(舊字符串) 替換成 new(新字符串),若是指定第三個參數max,則替換不超過 max 次str.split(str="", num=string.count(str))經過指定分隔符對字符串進行切片,若是參數 num 有指定值,則僅分隔 num 個子字符串str.splitlines([keepends])按照行('\r', '\r\n', \n')分隔,返回一個包含各行做爲元素的列表,若是參數 keepends 爲 False,不包含換行符,若是爲 True,則保留換行符str.startswith(str, beg=0,end=len(string))檢查字符串是不是以指定子字符串開頭str.swapcase()對字符串的大小寫字母進行互換str.title()返回"標題化"的字符串,即全部單詞都是以大寫開始,其他字母均爲小寫str.zfill(width)返回指定長度的字符串,原字符串右對齊,前面填充0str.isdecimal()檢查字符串是否只包含十進制字符,只適用於 Unicode 對象

字節(bytes)

在 3.x 中,字符串和二進制數據徹底區分開。文本老是 Unicode,由 str 類型表示,二進制數據則由 bytes 類型表示。Python 3 不會以任意隱式的方式混用 str 和 bytes,你不能拼接字符串和字節流,也沒法在字節流裏搜索字符串(反之亦然),也不能將字符串傳入參數爲字節流的函數(反之亦然)。

  • bytes 類型與 str 類型,兩者的方法僅有 encode() 和 decode() 不一樣。

  • bytes 類型數據需在常規的 str 類型前加個 b 以示區分,例如 b'abc'

  • 只有在須要將 str 編碼(encode)成 bytes 的時候,好比:經過網絡傳輸數據;或者須要將 bytes 解碼(decode)成 str 的時候,咱們纔會關注 str 和 bytes 的區別。

bytes 轉 str:

b'abc'.decode()
str(b'abc')
str(b'abc', encoding='utf-8')

str 轉 bytes:

 
 
 
 

'中國'.encode() bytes('中國', encoding='utf-8'

相關文章
相關標籤/搜索