Python

基本類型

1. Number類型

  • 整數(shù): int
  • 浮點(diǎn)數(shù): float(雙精度)
  • 其他語言: 單精度(float) 雙精度(double)
  • 其他語言: short int long
type(1)    // int
type(1.1)    // float
type(1*1)    // int
type(1+1.0)    // float
type(1*1.0)    // float
type(2/2)    // float
type(2//2)    // int
2/2    // 1.0
2//2    // 1
1//2    // 0

/表示將自動(dòng)轉(zhuǎn)化為浮點(diǎn)數(shù),而//將進(jìn)行整除,只保留整數(shù)部分

10,2,8,16進(jìn)制
十進(jìn)制: 0,1,2,3...9
二進(jìn)制: 0,1
八進(jìn)制: 0,1,2,3...7
十六進(jìn)制: 0,1,2,3,...9,A,B,C,D,E,F
各進(jìn)制的表示與轉(zhuǎn)換
  • 0b 表示二進(jìn)制
  • 0o 表示八進(jìn)制
  • 0x 表示十六進(jìn)制
0b10    //2
0b11    //3
0o10    //8
0o11    //9
0x10    //16
0x1F    //31
  • bin 轉(zhuǎn)換成2進(jìn)制
  • int 轉(zhuǎn)換成10進(jìn)制
  • hex 轉(zhuǎn)換成16進(jìn)制
  • oct 轉(zhuǎn)換成8進(jìn)制
10 -> 2
bin(10)    //0b1010
8 -> 2
bin(0o7)    //0b111
16 - > 2
bin(0xE)    //0b1110
2 -> 10
int(0b111)    //7
8 -> 10
int(0o77)    //63
10 -> 16
hex(888)    //0x378
2 -> 16
hex(0o7777)    //0xfff
2 -> 8
oct(0b111)    //0o7
布爾類型

T/F必須要大寫

type(True)    // bool
int(True)    // 1
int(False)    // 0
bool(2.2)    // True
bool('abc')    // True
bool('')    // False
bool(None)    // False

任何非0的數(shù)都為True,空字符串,空數(shù)組,空對象都為False

復(fù)數(shù)

復(fù)數(shù)的表示方式: 36j

2. 字符串

表示字符串的方式: 單引號(hào),雙引號(hào),三引號(hào),三引號(hào)表示多行字符串

'''
hello world 
hello world
hello world
'''

變成

'\nhello world\nhello world\nhello world '

將普通字符串變成原始字符串,不再進(jìn)行轉(zhuǎn)義

print(r'c:\northwind\northwest')    // c:\northwind\northwest
字符串運(yùn)算
'hello' * 3     // hellohellohello
'hello world'[3]    //l
'hello world'[-1]    //d
'hello world'[0:4]    //'hell'
'hello world'[0:5]    //'hello'
'hello world'[6:10]    //'worl'
'hello world'[6:11]    //'world'
'hello world'[6:]    //'world'

列表

type([1,2,3,4,5,6,7])    //list
type([[1,2],True,1,2])    //list
列表的基本操作
['num1','num2','num3','num4'][0]    // num1
['num1','num2','num3','num4'][0:2]    // ['num1','num2']
['num1','num2','num3','num4'][-1:]    // ['num4']

使用冒號(hào)以后得到的將會(huì)是一個(gè)列表

合并列表
['num1','num2','num3','num4']+['num5','num6']    // ['num1','num2','num3','num4','num5','num6'] 
['num1','num2']*3    // ['num1','num2','num1','num2','num1','num2']

元組

(1,2,3,4,5)
(1,'-1',True)
(1,2,3,4)[0]    // 1
type((1,2,3))    // tuple 

有一個(gè)特例

type((1))    // int
type(('hello'))    // str

當(dāng)元組中只有一個(gè)元素的時(shí)候,IDLE將會(huì)把元組的括號(hào)當(dāng)做運(yùn)算
如何定義只有一個(gè)元素的元組?

(1,)    // (1,)
type((1,))    // tuple

總結(jié)

str list tuple統(tǒng)稱為序列,他們都有序號(hào)

切片
['num1','num2','num3','num4'][0:2]    //['num1','num2']

如何判斷3是否在[1,2,3,4,5]中

3 in [1,2,3,4,5]    //True
3 not in [1,2,3,4,5]    //False
長度
len([1,2,3,4,5])     //5
len('hello world')    //11
大小
max([1,2,3,4,5])    //6
min([1,2,3,4,5])    //1
max('hello world')    //w
min('hello world')    //' '
min('helloworld')    //d

轉(zhuǎn)換ASCI碼

ord('w')    //119

集合

集合是無序的,沒有下標(biāo)索引,因此不支持切片等序號(hào)操作

type({1,2,3,4,5,6})    //set

集合是不重復(fù)的

{1,1,2,2,3,3,4,4}    //{1,2,3,4}
常用操作
len({1,2,3})    //3
1 in {1,2,3}    //True
1 not in {1,2,3}    //False
{1,2,3,4,5,6} - {3,4}    //{1,2,5,6}
{1,2,3,4,5,6} & {3,4}    //{3,4}
{1,2,3,4,5,6} | {3,4,7}    //{1,2,3,4,5,6,7}
定義空集合
type({})    // dict
type(set())    // set 

字典

type({1:1,2:2,3:3,4:4})    // dict

字典不能有重復(fù)的key

{'q':'翻滾','w':'被動(dòng)','e':'釘','r':'大招'}['q']    // '翻滾'    

字典的key和value類型

  • value: str int float list set dict
  • key: 必須是不可變的類型 int str tuple
image.png

變量

變量命名規(guī)則

可以使用字母數(shù)字下劃線,開頭不能是數(shù)字
保留關(guān)鍵字也不能作為變量名

a = '1'
a = 1
a = 1
b = a
a = 3
print(b)    //1
a = [1,2,3,4,5]
b = a
a[0] = '1'
print(a)    //['1',2,3,4,5]
print(b)    //['1',2,3,4,5]

值類型和引用類型

type = 1
type(1)    //報(bào)錯(cuò) 'int' object is not callable
a = [1,2,3,4,5]
b = a
a[0] = '1'
print(a)    //['1',2,3,4,5]
print(b)    //['1',2,3,4,5]

int str tuple 值類型(不可改變) list set dict 引用類型(可變)

int 值類型 list 引用類型.那么當(dāng)a = 1 b = a,b也被賦值為1, a = 3,那么a將變?yōu)?,但是b仍然是1,值類型是不可變的,如果變量發(fā)生了改變,將會(huì)賦值為一個(gè)新的值類型.引用類型則不同,當(dāng)引用類型改變的時(shí)候,a和b將同時(shí)發(fā)生變化.

a = 'hello'
id(a)    //55299200 內(nèi)存地址
a = a + 'python'
id(a)    //5536696 新的內(nèi)存地址
'python'[0] = 'a'    //報(bào)錯(cuò),字符串是不可改變的類型

列表的可變與元組的不可變

>>> a = (1,2,3)
>>> a[0]
1
>>> a[0] = 22
Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    a[0] = 22
TypeError: 'tuple' object does not support item assignment
>>> b = [1,2,3]
>>> b[0] = 444
>>> b
[444, 2, 3]
>>> 

運(yùn)算符

image.png

image.png

算術(shù)運(yùn)算符

+ - * / // % **

賦值運(yùn)算符

= += *= /= **= //=

比較(關(guān)系)運(yùn)算符

== != > < >= <=

b = 1
b+=b>=1    //2

分析

b = b + b>=1
b = b + True
b = b + 1
b += 1
不只是數(shù)字才能作比較運(yùn)算
'a' > 'b'    //False    97 > 98
'abc' < 'abd'   //True

邏輯運(yùn)算符

and or not 主要用來操作bool類型

>>> False and True
False
>>> False or True
True
>>> not False
True
>>> not not True
True
>>> 1 and 1
1
>>> 'a' and 'b'
'b'
>>> 'a' or 'b'
'a'
>>> not 'a'
False

0被認(rèn)為是False, 非0表示True

not 0.1    //False

在字符串中空字符串False,其他為True

not ''    //True

在列表中空列表[]為False,其他為True.tuple set dict都遵循此原則

not []    //True

and 和 or 如何返回出來結(jié)果,要看能否把這個(gè)邏輯運(yùn)算的結(jié)果計(jì)算出來

1 and 0    //0
0 and 1    //0
1 and 2    //2
0 or 1    //1
1 or 0    //1

成員運(yùn)算符

in 和 not in 判斷一個(gè)元素是否在一個(gè)組里,返回的是bool

a = 1
a in [1,2,3,4,5]    //True    
b = 6
b not in [1,2,3,4,5]    //True
b not in (1,2,3,4,5)    //True
b not in {1,2,3,4,5}    //True

在字典中的成員關(guān)系是key

b = 'a'
b in {'c' : 1}    //False
b = 1
b in {'c' : 1}    //False
b = 'c'
b in {'c' : 1}    //True

身份運(yùn)算符

is 和 is not 同樣是返回bool

如果兩個(gè)變量取值相等,則is返回True

a = 1
b = 2
a is b    //False
a = 1
b = 1
a is b    //True
a = 1
b = 1.0
a == b    //True
a is b    //False

值是否相等is不是比較值相等,is比較的是兩個(gè)變量的身份是否相等

is 是比較這個(gè)內(nèi)存地址是否相等,而==比較的是否值是否相等

例:

a = {1,2,3}
b = {2,1,3}
a == b    //集合是無序 True
a is b    //比較的是內(nèi)存地址 False
c = (1,2,3)
d = (2,1,3)
c == d    //元組是序列有序的,不可變 False
c is d    //False
判斷類型
a = 'hello'
isinstance(a,str)    //True
isinstance(a,(str,int,float))    //True

位運(yùn)算符

& 按位與 | 按位或 ^ 按位異或 ~ 按位取反 << 左移動(dòng) >> 右移動(dòng)

把數(shù)字當(dāng)做二進(jìn)制數(shù)進(jìn)行運(yùn)算

按位與
a = 2
b = 3
a & b    //2   

都為1時(shí)返回1
1 0
1 1
1 0

按位或
a = 2
b = 3
a | b    //3

1 0
1 1
1 1
只有有1就返回1

表達(dá)式

乘除優(yōu)先級(jí)大于加減 not > and > or

image.png

開發(fā)環(huán)境和插件安裝

VSCode 插件

Python Terminal View In Browser Vim vscode-icons

條件控制語句

if

mood = False
if mood:
    print('go to left')
else:
    print('go to right')

elif

a = input()
if a == 1:
    print('one')
elif a == 2:
    print('two')
elif a == 3:
    print('three')
elif a == 4:
    print('four')
else:
    print('other')

while

counter = 1
while counter <= 10:
    counter += 1
    print(counter)
else:
    print('EOF')

for與for-else

a = ['apple','orange','banana','grape']

for x in a:
    print(x)

else在循環(huán)遍歷完成之后執(zhí)行

a = ['apple','orange','banana','grape']

for x in a:
    print(x)
else:
    print('fruit is gone')

break跳出循環(huán)

b = [1, 2, 3]

for x in b:
    if x == 2:
        break
    print(x)
else:
    print('EOF')

如果break跳出也不會(huì)執(zhí)行else
遍歷次數(shù)

for x in range(0, 10):
    print(x)    //0,1,2,3,4,5,6,7,8,9

如果希望遍歷的是2,4,6,8...

for x in range(0, 10, 2):
    print(x, end=' | ')

遞減

for x in range(10, 0, -2):
    print(x, end=' | ')

奇數(shù)輸出列表

a = [1, 2, 3, 4, 5, 6, 7, 8]

for i in range(0, len(a), 2):
    print(a[i], end=' | ')

更好的方式

a = [1, 2, 3, 4, 5, 6, 7, 8]

b = a[0:len(a):2]
print(b)

包,模塊,類

如果想將一個(gè)普通的文件夾變成一個(gè)包,那么需要在這個(gè)文件夾內(nèi)有
__init__.py

包的導(dǎo)入
import t.c7
print(t.c7.a)

改名

import t.c7 as m
導(dǎo)入具體的變量
from t.c7 import a

全部導(dǎo)入

from t.c7 import *

在c7中:

__all__ = ['a','b']    //全部導(dǎo)入時(shí)只導(dǎo)入a,b兩個(gè)變量

引入多個(gè)變量

from c9 import a, b, c

換行問題

from c9 import a, b,\
c 

或者

from c9 import (a, b, 
c)

避免循環(huán)導(dǎo)入和閉環(huán)導(dǎo)入模塊

__init__.py的用法

當(dāng)一個(gè)包含__init__.py的模塊被導(dǎo)入的時(shí)候,__init__.py將會(huì)自動(dòng)執(zhí)行
控制包中模塊的引入

__all__ = ['c7']

模塊內(nèi)置變量

dir()

返回模塊中所有的變量

a = 2
b = 3

infos = dir()
print(infos)

其他內(nèi)置變量

'''
    hello
'''
print('name:' + __name__)
print('package:' + __package__)
print('doc' + __doc__)
print('file:' + __file__)
wangyukundeMacBook-Air:python wangyukun$ python3 a1.py
name:c.c4
package:c
doc
    hello

file:/Users/wangyukun/Desktop/python/c/c4.py

__name__的經(jīng)典應(yīng)用

if __name__ == '__main__':
    print('this is app')
print('this is a module')

黨作為模塊的時(shí)候只會(huì)輸出this is a module,而作為入口文件將都會(huì)輸出

相對導(dǎo)入和絕對導(dǎo)入

頂級(jí)包和入口文件是同級(jí)的,而絕對路徑一定是從頂級(jí)包開始的.
在入口文件是不可以使用相對路徑的

絕對路徑導(dǎo)入
// main.py  
import package2/package4.m2
相對路徑導(dǎo)入
// m2.py
from .m3 import m

函數(shù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末悼做,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子城丧,更是在濱河造成了極大的恐慌理郑,老刑警劉巖温圆,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贷祈,死亡現(xiàn)場離奇詭異,居然都是意外死亡娘赴,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進(jìn)店門询兴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來乃沙,“玉大人,你說我怎么就攤上這事诗舰【澹” “怎么了?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵始衅,是天一觀的道長冷蚂。 經(jīng)常有香客問我,道長汛闸,這世上最難降的妖魔是什么蝙茶? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮诸老,結(jié)果婚禮上隆夯,老公的妹妹穿的比我還像新娘。我一直安慰自己别伏,他們只是感情好蹄衷,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著厘肮,像睡著了一般愧口。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上类茂,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天耍属,我揣著相機(jī)與錄音,去河邊找鬼巩检。 笑死厚骗,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的兢哭。 我是一名探鬼主播领舰,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼迟螺!你這毒婦竟也來了冲秽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤煮仇,失蹤者是張志新(化名)和其女友劉穎劳跃,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體浙垫,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了夹姥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片杉武。...
    茶點(diǎn)故事閱讀 39,919評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖辙售,靈堂內(nèi)的尸體忽然破棺而出轻抱,到底是詐尸還是另有隱情,我是刑警寧澤旦部,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布祈搜,位于F島的核電站,受9級(jí)特大地震影響士八,放射性物質(zhì)發(fā)生泄漏容燕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一婚度、第九天 我趴在偏房一處隱蔽的房頂上張望蘸秘。 院中可真熱鬧,春花似錦蝗茁、人聲如沸醋虏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽颈嚼。三九已至,卻和暖如春饭寺,著一層夾襖步出監(jiān)牢的瞬間阻课,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工佩研, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留柑肴,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓旬薯,卻偏偏與公主長得像晰骑,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子绊序,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 〇硕舆、前言 本文共108張圖,流量黨請慎重骤公! 歷時(shí)1個(gè)半月抚官,我把自己學(xué)習(xí)Python基礎(chǔ)知識(shí)的框架詳細(xì)梳理了一遍。 ...
    Raxxie閱讀 18,954評論 17 410
  • 一阶捆、Java 簡介 Java是由Sun Microsystems公司于1995年5月推出的Java面向?qū)ο蟪绦蛟O(shè)計(jì)...
    子非魚_t_閱讀 4,186評論 1 44
  • 第六章:數(shù)字 第七章:序列凌节,列表钦听,元組 1.序列 序列類型有著相同的訪問模式:它的每一個(gè)元素可以通過指定一個(gè)偏移量...
    m風(fēng)滿樓閱讀 892評論 0 2
  • 沿途中漫山遍野的油菜花 一片片閃過火車的尾巴 這個(gè)季節(jié)油菜都開花了 而我還是一個(gè)人…… 看著沿途的風(fēng)景…… ...
    蘇欠閱讀 173評論 0 1
  • 為什么天天這么晚都睡不著,是想的太多倍奢,還是白天睡多了朴上,一直想改都改不了熬夜的習(xí)慣
    笑笑香心閱讀 109評論 0 0