建立一個(gè)小程序多少錢小紅書關(guān)鍵詞排名優(yōu)化
——雁丘
Python運(yùn)算符、函數(shù)與模塊和程序控制結(jié)構(gòu)
- 關(guān)于本專欄
- 一 運(yùn)算符
- 1.1 位運(yùn)算符
- 1.1.1 按位取反
- 1.1.2 按位與
- 1.1.3 按位或
- 1.1.4 按位異或
- 1.1.5 左移位
- 1.2 關(guān)系運(yùn)算符
- 1.3 運(yùn)算順序
- 1.4 運(yùn)算方向
- 二 函數(shù)與模塊
- 2.1 內(nèi)建函數(shù)
- 2.2 庫函數(shù)
- 2.2.1 標(biāo)準(zhǔn)庫函數(shù)
- 2.2.3 第三方庫
- 2.3 包
- 2.4 標(biāo)識符
- 2.4.1 標(biāo)識符命名的規(guī)則
- 2.4.2 標(biāo)識符命名的常用方法
- 三 程序控制結(jié)構(gòu)
關(guān)于本專欄
關(guān)于Python
安裝與環(huán)境變量配置請查看本專欄文章Python安裝與環(huán)境變量配置傻瓜式教程(2023年9月)
關(guān)于Pycharm
的安裝部署和基本使用請查看本專欄文章Python解釋器和Pycharm的傻瓜式安裝部署
一 運(yùn)算符
Pyihon 提供了四種類型的運(yùn)算符:算術(shù)運(yùn)算符、位運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符。Python 可以處理很大的數(shù),這一特點(diǎn)常??梢越档统绦蛟O(shè)計(jì)的難度。
Pyihon 運(yùn)算符 | |||||
---|---|---|---|---|---|
類別 | 運(yùn)算符 | 功能 | 說明 | 優(yōu)先級 | 目數(shù) |
/ | () | 括號 | 改變運(yùn)算順序 | 0 | / |
算術(shù)運(yùn)算符 | ** | 乘方 | 一般省略不寫 | 1 | 雙目 |
+ | 正號 | 一般省略不寫 | 2 | 單目 | |
- | 負(fù)號 | -10 | 2 | ||
位運(yùn)算符 | ~ | 按位取反 | ~x=-(x+1) | 3 | |
算術(shù)運(yùn)算符 | * | 乘號 | 4 | 雙目 | |
/ | 除號 | 4 | |||
// | 整除 | 5//2=2 | 4 | ||
% | 取余 | 5%2=1 | 4 | ||
+ | 加號 | 5 | |||
- | 減號 | 5 | |||
位運(yùn)算符 | << | 左移位 | 16<<4=16*2*2*2*2 | 7 | 雙目 |
>> | 右移位 | 16>>3=16/2/2/2 | |||
& | 與 | 64&15=0 | |||
| | 或 | 64|15=79 | |||
^ | 異或 | 64^15=78 | |||
關(guān)系運(yùn)算符 | < | 小于 | 8 | 雙目 | |
> | 大于 | ||||
<= | 小于等于 | ||||
>= | 大于等于 | ||||
== | 等于 | ||||
!= | 不等于 | ||||
邏輯運(yùn)算符 | not | 非 | 9 | 雙目 | |
and | 與 | 10 | |||
or | 或 | 11 |
1.1 位運(yùn)算符
位運(yùn)算就是按整數(shù)的二進(jìn)制位進(jìn)行的運(yùn)算,運(yùn)算對象必須是標(biāo)準(zhǔn)的char
和 int
數(shù)據(jù)類型。
1.1.1 按位取反
按位取反是對操作數(shù)的各位二進(jìn)制值取反,即0變1,1變0。得到原碼的反碼。
例如:5按位取反結(jié)果為-6
~00000101????????/十進(jìn)制 5/
??11111010??????/十進(jìn)制-6(二進(jìn)制為補(bǔ)碼)/
按位取反的出現(xiàn)與計(jì)算機(jī)中負(fù)數(shù)的表示有關(guān)
1.1.2 按位與
按位與是雙目運(yùn)算符,參加運(yùn)算的兩個(gè)操作數(shù)按二進(jìn)制位進(jìn)行“與”運(yùn)算。類似于數(shù)學(xué)中“交集”。例如:15&3的結(jié)果為3。
??00001111
&00000011
??00000011
1.1.3 按位或
按位或是雙目運(yùn)算符,參加運(yùn)算的兩個(gè)操作數(shù)按二進(jìn)制位進(jìn)行“或”運(yùn)算。類似于數(shù)學(xué)中“并集”。例如:15|32的結(jié)果為47。
??00001111
|00100000
??00101111
1.1.4 按位異或
按位異或也是雙目運(yùn)算符,參加運(yùn)算的兩個(gè)操作數(shù)按二進(jìn)制位進(jìn)行“異或”運(yùn)算。例如:15^3的結(jié)果為12。
利用按位異或可以很容易判斷兩個(gè)數(shù)的對應(yīng)二進(jìn)制位是相同還是相異,結(jié)果為0表示相同,結(jié)果為1表示相異。
??00001111
?^00000011
??00001100
1.1.5 左移位
將第一操作數(shù)的每一位向左平移第二操作數(shù)指定的位數(shù),右邊空位補(bǔ)0,左邊移出去的位丟棄。例如:15及其左移1位、2位、3位的二進(jìn)制補(bǔ)碼如下表所示。
可見,利用左移位可以快速地實(shí)現(xiàn)整數(shù)的乘法運(yùn)算,每左移一位相當(dāng)于乘以2,左移n位就相當(dāng)于乘以2n,非常有利于算法的硬件實(shí)現(xiàn)。
(6)右移位
將第一操作數(shù)的每一位向右平移第二操作數(shù)指定的位數(shù),右邊移出去的位丟棄。當(dāng)?shù)谝徊僮鲾?shù)為有符號數(shù)時(shí),左邊空位補(bǔ)符號位上的值,這種移位稱為算術(shù)移位;當(dāng)?shù)谝徊僮鲾?shù)為無符號數(shù)時(shí),左邊空位補(bǔ)0,這種移位稱為邏輯移位。例如:15和-15分別進(jìn)行右移1位、2位、3位的二進(jìn)制補(bǔ)碼如下表所示
可見,利用右移位可以快速地實(shí)現(xiàn)整數(shù)的除法運(yùn)算,每右移一位相當(dāng)于除以21,右移n位相當(dāng)于除以2n,非常有利于算法的硬件實(shí)現(xiàn)。
1.2 關(guān)系運(yùn)算符
關(guān)系(Relational)運(yùn)算是用來比較兩個(gè)操作數(shù)的值的運(yùn)算,比較的結(jié)果是一個(gè)邏輯值
比較字符串時(shí)則是按 第一個(gè)符號的ASCIT碼值,如果相同則比較下一位
1.3 運(yùn)算順序
按照優(yōu)先級從低到高計(jì)算
總體上的優(yōu)先級順序?yàn)? 算術(shù)運(yùn)算符 > 位運(yùn)算符 > 關(guān)系運(yùn)算符 > 邏輯運(yùn)算符,但按位取反運(yùn)算符_
的優(yōu)先級位于算術(shù)運(yùn)算符的正負(fù)號+
、-
和乘方**
之間。
1.4 運(yùn)算方向
除了關(guān)系運(yùn)算符的運(yùn)算順序是從左往右,其他均是從右往左
二 函數(shù)與模塊
一個(gè)能解決大規(guī)模問題的程序通常會被分解成若千功能模塊,這些功能模塊被稱為函數(shù)。使用函數(shù)通??梢允钩绦虻慕Y(jié)構(gòu)更簡潔易懂,可以提高程序的可讀性和可復(fù)用性,Python 中的雨數(shù)包括內(nèi)建函數(shù)、標(biāo)準(zhǔn)庫函數(shù),第三方庫和用戶自定義函數(shù)。
2.1 內(nèi)建函數(shù)
內(nèi)建函數(shù)就是不需要進(jìn)行外部導(dǎo)人就能直接使用的函數(shù),可以使用函數(shù) dir(__builtins__)
查看。下列為 Python 3.6 中的所有內(nèi)建函數(shù):
Python 常用初級內(nèi)建函數(shù) | |
---|---|
函數(shù)名 | 功能 |
abs() | 返回?cái)?shù)字的絕對值 |
bool() | 轉(zhuǎn)換為布爾類型(若沒有參數(shù),返回 false) |
int() | 轉(zhuǎn)換為整數(shù) |
float() | 轉(zhuǎn)換為浮點(diǎn)數(shù) |
cmplex() | 轉(zhuǎn)換為復(fù)數(shù) |
str() | 轉(zhuǎn)換為字符串 |
bin() | 返回一個(gè)整數(shù)二進(jìn)制表示。 |
otc() | 返回一個(gè)整數(shù) 八進(jìn)制表示。 |
hex() | 返回一個(gè)整數(shù)十六進(jìn)制表示。 |
round() | 返回統(tǒng)計(jì)學(xué)的四舍六入五湊偶 |
type() | 返回參數(shù)的數(shù)據(jù)類型 |
id() | 返回對象的身份標(biāo)識 |
all() | 判斷給定的元組或列表是否都為 True(空元組、空列表返回值為 True) |
any() | 判斷給定的元組或列表是否有 True空元組、空列表返回值為 True) |
ascii() | 返回字符串(非 ASCII 字符轉(zhuǎn)化為轉(zhuǎn)義字符) |
help() | 查詢該函數(shù)的幫助信息 |
2.2 庫函數(shù)
2.2.1 標(biāo)準(zhǔn)庫函數(shù)
除了內(nèi)建函數(shù)外, Python 還提供了標(biāo)準(zhǔn)庫函數(shù),需要先導(dǎo)入模塊再使用函數(shù),每個(gè)庫有相關(guān)的一些函數(shù)。使用dir(模塊名)
查看該模塊所有函數(shù)
- 導(dǎo)入一個(gè)模塊
>>> import math # 導(dǎo)入math模塊
>>> math.floor(3.5) # 使用math模塊的向下取整函數(shù)
3
- 導(dǎo)入多個(gè)模塊
>>> import math ,os ,operator
- 只導(dǎo)入模塊中一個(gè)函數(shù)
from...import...
>>> from math import floor
>>> math.floor(3.5) # 使用math模塊的向下取整函數(shù)
3
優(yōu)點(diǎn):無需再寫math.
,用from math import *
可以導(dǎo)人 math 模塊中的所有屬性和函數(shù)。
- 利用
as
在導(dǎo)入時(shí)為模塊增加別名,例如import numpy as np
表示導(dǎo)人numpy
模塊并為其取一個(gè)別名np
,后續(xù)模塊名numpy
均可用np
表示。
2.2.3 第三方庫
第三方庫提前下載后相當(dāng)于標(biāo)準(zhǔn)庫函數(shù)
可以在 PyPI 頁面上搜索和安裝、發(fā)布 Python 第三方庫(模塊)
安裝其中的第三方庫官方推薦使用Python 庫管理工具 pip
,只要將第三方庫下載到本地然后進(jìn)行安裝即可。
舉例
安裝安卓自動測試庫atx
,步驟為:
- Python 官網(wǎng)下載文件 get-pip.py(目前 Python IDE 中一般都預(yù)裝了 pip,不需要另外載和安裝,直接使用第3步安裝即可)
- 在命令提示符方式下運(yùn)行如下命令安裝 pip。
python get-pip. py
3 使用 pip 安裝 atx 第三方庫。
pip install atx
2.3 包
包是由模塊和子包組成的一個(gè)應(yīng)用程序執(zhí)行環(huán)境,是一個(gè)有層次的文件目錄結(jié)構(gòu)
>>> import A. C. cl
>>> A. C. cl. foo(123)
或者
>>> from A. C. cl import foo
>>> foo( 123)
A
是最頂層的包,C
是它的子包,而 c1
是子包 C
中的模塊。
2.4 標(biāo)識符
在 Python 程序中,我們對于變量、方法、類、用戶自定義函數(shù)等等可以由用戶起名字,這些名字,我們把它統(tǒng)一的稱之為標(biāo)識符。
2.4.1 標(biāo)識符命名的規(guī)則
- 內(nèi)容限定:只能用
- 英文
- 中文(不建議)
- 數(shù)字(不能用于開頭)
- 下劃線
_
- 大小寫敏感
- 不可使用關(guān)鍵字
2.4.2 標(biāo)識符命名的常用方法
-
遵循“見名知意”原則,在每一處邏輯斷點(diǎn)處標(biāo)識,兩種方法:
??windows風(fēng)格,駝峰命名法:大寫字母標(biāo)記邏輯斷點(diǎn),如mathGrades
;
??unix風(fēng)格,下劃線法:???下劃線標(biāo)記邏輯斷點(diǎn),如math_grades
。 -
變量中的英文字母全部小寫