本文章是對python 3 的基礎語法的概述赖阻,后期會詳細講解。
本文章的主要內容如下:
16個內容
編碼踱蠢、標識符火欧、python保留字、注釋茎截、行與縮進苇侵、多行語句、數(shù)字(Number)類型企锌、字符串(String)榆浓、空行、等待用戶輸入撕攒、同一行顯示多條語句陡鹃、多個語句構成代碼組烘浦、import 與 from...import、命令行參數(shù)萍鲸、#!/usr/bin/python3的介紹
1.編碼
這是python 2和python 3的區(qū)別之一闷叉。
默認情況下,Python 3 源碼文件以?UTF-8?編碼脊阴,所有字符串都是 unicode 字符串握侧。?
# -*-coding:utf-8-*-
當然你也可以為源碼文件指定不同的編碼:
# -*- coding: cp-1252 -*-
上述定義允許在源文件中使用 Windows-1252 字符集中的字符編碼,對應適合語言為保加利亞語嘿期、白羅斯語品擎、馬其頓語、俄語备徐、塞爾維亞語孽查。
2.標識符
用于各種命名規(guī)則,比如變量名坦喘,函數(shù)名盲再,類名等
(1) 第一個字符必須是字母表中字母或下劃線?_?。
(2) 標識符的其他的部分由字母瓣铣、數(shù)字和下劃線組成答朋。
(3)標識符對大小寫敏感。例如DOG和dog是兩個變量棠笑。
在 Python 3 中梦碗,非 ASCII 標識符也是允許的了。
3.python保留字
這是33個保留字蓖救。
保留字即關鍵字洪规,我們不能把它們用作任何標識符名稱。
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']
4.注釋
? (1) Python中單行注釋以?#?開頭:
實例(Python 3.0+)
#!/usr/bin/python3
# 第一個注釋
print ("Hello, Python!") # 第二個注釋
執(zhí)行以上代碼斩例,輸出結果為:
Hello, Python!
? (2)多行注釋可以用多個?#?號,還有?'''?和?" " ":
實例(Python 3.0+)
#第一種方式注釋
#!/usr/bin/python3
# 第一個注釋
# 第二個注釋
#第二種方式注釋
'''
第三注釋
第四注釋
'''
#第三種注釋
" " "
第五注釋
第六注釋
" " "
print ("Hello, Python!")
執(zhí)行以上代碼从橘,輸出結果為:
Hello, Python!
5.行與縮進(indent)
python最具特色的就是使用縮進來表示代碼塊念赶,不需要使用大括號?{}?。
縮進的空格數(shù)是可變的恰力,但是同一個代碼塊的語句必須包含相同的縮進空格數(shù)叉谜。如果縮進不一致 ,執(zhí)行程序會報錯:IndentationError踩萎。
實例如下:
實例(Python 3.0+)
if True:
? ? print ("True")
else:
? ? print ("False")
以下代碼最后一行語句縮進數(shù)的空格數(shù)不一致停局,會導致運行錯誤:
if True:? ??
? ? print ("Answer")? ?
? ? print ("True")
else:? ??
? ?print ("Answer")??
print ("False")? ? # 縮進不一致,會導致運行錯誤
以上程序由于縮進不一致,執(zhí)行后會出現(xiàn)類似以下錯誤:
File "test.py", line 6? ?
?print ("False")? ? # 縮進不一致董栽,會導致運行錯誤? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ^
IndentationError: unindent does not match any outer indentation level
6.多行語句
Python 通常是一行寫完一條語句履怯,但如果語句很長,我們可以使用反斜杠(\)來實現(xiàn)多行語句裆泳,例如:
total = item_one + \
? ? ? ? item_two + \
? ? ? ? item_three
在 [], {}, 或 () 中的多行語句,不需要使用反斜杠(\)柠硕,例如:
total = ['item_one', 'item_two', 'item_three',? ? ? ? 'item_four', 'item_five']
7.數(shù)字(Number)類型
python中數(shù)字有四種類型:整數(shù)工禾、布爾型、浮點數(shù)和復數(shù)蝗柔。
int?(整數(shù)), 如 1, 只有一種整數(shù)類型 int闻葵,表示為長整型,沒有 python2 中的 Long癣丧。
bool?(布爾), 如 True槽畔。
float?(浮點數(shù)), 如 1.23、3E-2
complex?(復數(shù)), 如 1 + 2j胁编、 1.1 + 2.2j
8.字符串(String)
(1)python中單引號和雙引號使用完全相同厢钧。
(2)使用三引號(' ' '或" " ")可以指定一個多行字符串。
(3)轉義符 '\'
(4)反斜杠可以用來轉義嬉橙,使用r可以讓反斜杠不發(fā)生轉義早直。。 如 r"this is a line with \n" 市框,則\n會顯示霞扬,并不是換行。
按字面意義級聯(lián)字符串枫振,如"this " "is " "string"會被自動轉換為this is string喻圃。
(5)字符串可以用 + 運算符連接在一起,用 * 運算符重復粪滤。
(6)Python 中的字符串有兩種索引方式斧拍,
? ? ? ? ? ?(1)從左往右以 0 開始,
? ? ? ? ? (2)從右往左以 -1 開始杖小。
(7)Python中的字符串不能改變饮焦。
(8)Python 沒有單獨的字符類型,一個字符就是長度為 1 的字符串窍侧。
(9)字符串的截取的語法格式如下:變量[頭下標:尾下標:步長]? 結果就是把輸出除掉步長之間的字符
word = '字符串'
sentence = "這是一個句子县踢。"
paragraph = """這是一個段落,
可以由多行組成"""
實例(Python 3.0+)
#!/usr/bin/python3
?str='Runoob'
print(str)? ? ? ? ? ? ? ? # 輸出字符串
print(str[0:-1])? ? ? ? ? # 輸出第一個到倒數(shù)第二個的所有字符
print(str[0])? ? ? ? ? ? ? # 輸出字符串第一個字符
print(str[2:5])? ? ? ? ? ? # 輸出從第三個開始到第五個的字符 從下標為2的字符到n-1的? ?字符
print(str[2:])? ? ? ? ? ? # 輸出從第三個開始的后的所有字符
print(str * 2)? ? ? ? ? ? # 輸出字符串兩次
print(str + '你好')? ? ? ? # 連接字符串?
print('------------------------------')?
print('hello\nrunoob')? ? ? # 使用反斜杠(\)+n轉義特殊字符
print(r'hello\nrunoob')? ? # 在字符串前面添加一個 r伟件,表示原始字符串硼啤,不會發(fā)生轉義
這里的 r 指 raw,即 raw string斧账。
輸出結果為:
Runoob
Runoo
R
noo
noobRunoobRunoobRunoob你好------------------------------hello
runoob
hello\nrunoob
9.空行
函數(shù)之間或類的方法之間用空行分隔谴返,表示一段新的代碼的開始煞肾。類和函數(shù)入口之間也用一行空行分隔,以突出函數(shù)入口的開始嗓袱。
空行與代碼縮進不同籍救,空行并不是Python語法的一部分。書寫時不插入空行渠抹,Python解釋器運行也不會出錯蝙昙。但是空行的作用在于分隔兩段不同功能或含義的代碼,便于日后代碼的維護或重構梧却。
記灼娴摺:空行也是程序代碼的一部分。
10.等待用戶輸入(input)
執(zhí)行下面的程序在按回車鍵后就會等待用戶輸入:
實例(Python 3.0+)
#!/usr/bin/python3?
input("\n\n按下 enter 鍵后退出放航。")
以上代碼中 烈拒,"\n\n"在結果輸出前會輸出兩個新的空行。一旦用戶按下 enter 鍵時广鳍,程序將退出荆几。
11.同一行顯示多條語句
Python可以在同一行中使用多條語句,語句之間使用分號(;)分割赊时,以下是一個簡單的實例:
實例(Python 3.0+)
#!/usr/bin/python3?
import sys; x = 'runoob'; sys.stdout.write(x + '\n')
使用腳本執(zhí)行以上代碼伴郁,輸出結果為:
runoob
使用交互式命令行執(zhí)行,輸出結果為:
>>> import sys; x = 'runoob'; sys.stdout.write(x + '\n')
runoob
7
此處的 7 表示字符數(shù)蛋叼。
12.多個語句構成代碼組
縮進相同的一組語句構成一個代碼塊焊傅,我們稱之代碼組。
像if狈涮、while狐胎、def和class這樣的復合語句,首行以關鍵字開始歌馍,以冒號( : )結束握巢,該行之后的一行或多行代碼構成代碼組。
我們將首行及后面的代碼組稱為一個子句(clause)松却。
如下實例:
if expression :
? suite
elif expression :
? suite?
else :
? suite
13.Print 輸出
print 默認輸出是換行的暴浦,如果要實現(xiàn)不換行需要在變量末尾加上?end=" ":
實例(Python 3.0+)
#!/usr/bin/python3?
x="a"y="b"
# 換行輸出
print( x )
print( y )?
print('---------')
# 不換行輸出
print( x, end=" " )
print( y, end=" " )
print()
以上實例執(zhí)行結果為:
a
b
---------
a b
14.import 與 from...import
在 python 用?import?或者?from...import?來導入相應的模塊(各種庫)。
將整個模塊(somemodule)導入晓锻,格式為:?import somemodule
從某個模塊中導入某個函數(shù),格式為:?from somemodule import somefunction
從某個模塊中導入多個函數(shù)(多個函數(shù)之間用逗號隔開),格式為:?from somemodule import firstfunc, secondfunc, thirdfunc
將某個模塊中的全部函數(shù)導入歌焦,格式為:?from somemodule import *
導入 sys 模塊
import sysprint('================Python import mode==========================');
print ('命令行參數(shù)為:')
for i in sys.argv:
? ?print (i)
? print ('\n python 路徑為',sys.path)
導入 sys 模塊的 argv,path 成員
from sys import argv,path? #? 導入特定的成員?
print('================python from import===================================')
print('path:',path) # 因為已經(jīng)導入path成員,所以此處引用時不需要加sys.path砚哆、
拓展:
關于 import 的小結独撇,以 time 模塊為例:
1、將整個模塊導入,例如:import time纷铣,在引用時格式為:time.sleep(1)卵史。
2、將整個模塊中全部函數(shù)導入搜立,例如:from time import *以躯,在引用時格式為:sleep(1)。
3啄踊、將模塊中特定函數(shù)導入忧设,例如:from time import sleep,在引用時格式為:sleep(1)社痛。
4、將模塊換個別名命雀,例如:import time as abc蒜哀,在引用時格式為:abc.sleep(1)。
15.命令行參數(shù)
很多程序可以執(zhí)行一些操作來查看一些基本信息吏砂,Python可以使用-h參數(shù)查看各參數(shù)幫助信息:
$ python -h
usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ...
Options and arguments (and corresponding environment variables):
-c cmd : program passed in as string (terminates option list)
-d? ? : debug output from parser (also PYTHONDEBUG=x)
-E? ? : ignore environment variables (such as PYTHONPATH)
-h? ? : print this help message and exit
[ etc. ]
我們在使用腳本形式執(zhí)行 Python 時撵儿,可以接收命令行輸入的參數(shù),具體使用可以參照?Python 3 命令行參數(shù)狐血。
16.#!/usr/bin/python3介紹
這一行可以不用寫淀歇,只是為了說明下而已。
#!/usr/bin/python3
第一行注釋標的是指向 python 的路徑匈织,告訴操作系統(tǒng)執(zhí)行這個腳本的時候浪默,
調用 /usr/bin 下的 python 解釋器。
此外還有以下形式(推薦寫法):
#!/usr/bin/env python3
這種用法先在 env(環(huán)境變量)設置里查找 python 的安裝路徑缀匕,再調用對應路徑下的解釋器程序完成操作纳决。