Python

Python筆記

1. 文件類型

.py

  • 最常見(jiàn)的類型

.pyc

  • 該類型是.py文件編譯后的二進(jìn)制文件,運(yùn)行效率當(dāng)然比.py文件快啦

  • 編譯的命令行如下:

      python -O-m py_compile hello.py
    

.pyo

  • 經(jīng)過(guò)優(yōu)化編譯的原文件,這個(gè)比.pyc效率更高

2. 變量

命名規(guī)則:

  • 變量可以是數(shù)字,字母,下劃線組合,不能以數(shù)字開頭

簡(jiǎn)單理解:

  • Python中的變量類似是一個(gè)標(biāo)簽,貼向內(nèi)存地址中的值,變量的重新賦值類似于標(biāo)簽移動(dòng)

3. 運(yùn)算符和表達(dá)式

賦值運(yùn)算符

    = 等于,賦值
    += 加等
    -= 減等
    *= 乘等
    /= 除等
    % 求余等

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

    + 加
    - 減
    * 乘
    / 除
    // 整除法
    % 求余數(shù)
    /** 冪  例如:  3**2 表示3的2平方為9

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

    <
    >
    <=
    >=
    !=
    ==

邏輯運(yùn)算符

    and 邏輯與
    or 邏輯或
    not 邏輯非

表達(dá)式概念

  • 將不同的數(shù)據(jù)(包括變量,函數(shù))用運(yùn)算符用一定的規(guī)則連接起來(lái)的一種式子

4. 數(shù)據(jù)類型 (大部分計(jì)算機(jī)編程語(yǔ)言都有的定義,用一個(gè)盒子或者說(shuō)空間把數(shù)據(jù)裝起來(lái))

整型 int

    a = 123
    # type() 調(diào)用該函數(shù)可得到變量的數(shù)據(jù)類型
    print(type(a))

    輸出:
    <type 'int'>

長(zhǎng)整型 long

    b = 999999999999999999999
    print(type(b))
    c = 99L
    print(type(c))
    輸出:
    <type 'long'>
    <type 'long'>

浮點(diǎn)型 float

    d = 13.0
    print(type(d))
    e = 5.0 / 2
    print(type(e))

    輸出:
    <type 'float'>
    <type 'float'>

復(fù)數(shù)類型 complex

    f = 3.14j
    print(type(f))

    輸出
    <type 'complex'>

字符串 str (序列類型數(shù)據(jù))

    # ----單引號(hào) ''
    str1 = 'hello world'

    # ----雙引號(hào) ""
    str2 = "hello world"

    # ----注意嵌套使用,轉(zhuǎn)義字符
    str3 = "hello i'm hebw"
    str4 = "hello i'm \"hebw\""

    # ----三引號(hào) """""" 可用于保存文字的格式,如下str5等同于str6
    str5 = """Tom:
    i'm hebw,nice to see you
    ok , see you again."""
    str6 = "Tom:\n\ti'm hebw,nice to see you\n\tok , see you again."

    # 占位符的使用
    def p(x, y):
        print("%s : %s" % (x, y))
    p(1, 2)
    p(*t)

    輸出:
    1 : 2

元組 tuple (序列類型數(shù)據(jù))

  • 定義:
    通過(guò)圓括號(hào),中間用逗號(hào)分隔元素定義,元組和字符串一樣是不可變的

     # ----定義空元組
     t0 = ()
    
     # ----定義單元素元組
     t1 = (1,)
    
     # ----元組的值無(wú)法改變,以下代碼將報(bào)錯(cuò)!!!
     t[1] = 31 報(bào)錯(cuò)!
    
  • 概念:
    發(fā)展出元組類型是有原因的,利用采用字符串儲(chǔ)存userinfo = "milo 30 male",通過(guò)這個(gè)字符串可以存儲(chǔ)一個(gè)人的信息,但是不太好操作,取出信息不能當(dāng)做一個(gè)整體,而是通過(guò)索引來(lái)進(jìn)行切片操作,因此誕生元組t = ('milo', 30, 'male')

列表 list (序列類型數(shù)據(jù))

  • 定義:通過(guò)中括號(hào),中間用逗號(hào)分隔元素定義,列表中的值是可變的

      # ----定義一個(gè)空列表
      list2 = []
    
      # ----定義一個(gè)元素的列表
      list3 = [1]
    
  • 添加元素:

      list = [1, 2, 3]
      list.append(4)
      print(list) 
    
      輸出:
      [1, 2, 3, 4]
    
  • 刪除元素:

      # 按照元素刪除,刪除第一個(gè)出現(xiàn)的元素,其他元素不會(huì)刪除
      list3 = [1, 2, 3, 4, 1]
      list3.remove(1)
      print(list3)    
    
      輸出:
      [2, 3, 4, 1]
    
      # 按照索引刪除
      list3 = [1, 2, 3, 4, 1]
      del (list3[0])
      print(list3)
      
      輸出:
      [2, 3, 4, 1]
    
  • 修改元素:

      list3 = [1, 2, 3, 4, 1]
      list3[0] = 123456
      print(list3)
    
      輸出:
      [123456, 2, 3, 4, 1]
    

字典 dict

  • 定義:通過(guò)花括號(hào),中間用逗號(hào)分隔元素定義.字典是Python中唯一的映射類型,無(wú)序性.

     # 通過(guò){}創(chuàng)建
     dic = {0: 0, 1: 1, 2: 2}
    
     # 通過(guò)工廠方法dict()生成字典
     fdict = dict(['x', 1], ['y', 2])
    
     # fromkeys(),字典中的元素具有相同的值,默認(rèn)為None,主要用于值一致的情況下
     ddict = {}.fromkeys(('x', 'y'), -1)
     ddict2 = {}.fromkeys(('x', 'y'))
     print(ddict)
     print(ddict2)
    
     輸出:
     {'y': -1, 'x': -1}
     {'y': None, 'x': None}
    
  • 循環(huán)遍歷字典 (注意無(wú)序性!)

     dic5 = {'name': 'hebw', 'age': 13, 'gender': 'male'}
    
     # 遍歷key
     for key in dic5:
         print(key)
    
     # 遍歷value
     for key in dic5:
         print(dic1[key])
    
     輸出:
     gender
     age
     name
     male
     13
     hebw
     
     # 同時(shí)遍歷key和value
     dict2 = {'a': 1, 'b': 2, 'c': 3}
     big = dict2.items()
     for k, v in big:
         print(k)
         print(v)
     
     輸出:
     a
     1
     c
     3
     b
     2
    
  • 添加鍵值對(duì)

     dic5 = {'name': 'hebw', 'age': 13, 'gender': 'male'}
     dic5['tel'] = '13100000000'
     print(dic5)
    
     輸出:
     {'gender': 'male', 'age': 13, 'tel': '13100000000', 'name': 'hebw'}
    
  • 刪除鍵值對(duì)

      # del()刪除key對(duì)應(yīng)的鍵值對(duì)
      dic5 = {'gender': 'male', 'age': 13, 'tel': '13100000000', 'name': 'hebw'}
      del (dic5['tel'])
    
      # pop()刪除key對(duì)應(yīng)的鍵值對(duì),并且返回該值
      dic5 = {'gender': 'male', 'age': 13, 'tel': '13100000000', 'name': 'hebw'}
      tel = dic5.pop("tel")
      print(dic5)
      print(tel)
    
  • 修改值

      dic5 = {'name': 'hebw', 'age': 13, 'gender': 'male'}
      dic5['name'] = 'HEBW'
      print(dic5)
      輸出:
      dic5 = {'name': 'hebw', 'age': 13, 'gender': 'male'}
    
  • 清空字典

      dic5 = {'name': 'hebw', 'age': 13, 'gender': 'male'}
      dic5.clear()
    
  • 判空

      dic5 = {'name': 'hebw', 'age': 13, 'gender': 'male'}
      print("HEBW" in dic5)
      print("age" in dic5)
    
      輸出:
      False
      True
    
  • 刪除整個(gè)字典

      dic5 = {'name': 'hebw', 'age': 13, 'gender': 'male'}
      del (dic5)
      print(dic5)
    
      輸出:
      會(huì)報(bào)錯(cuò),提示dic5未定義
    
  • 根據(jù)key獲取value

      # 如果存在則返回,不存在返回指定的值或none
      dic = {0: 0, 1: 1, 2: 2}    
      print(dic.get(13))
      print(dic.get(1, "error"))
      
      輸出:
      None
      1
    
  • 獲取字典中鍵(key)的列表

      dic = {0: 0, 1: 1, 2: 2}            
      print(dic.keys())
    
      輸出:
      [0, 1, 2]
    
  • 獲取字典中值(value)的列表

      dic = {0: 0, 1: 1, 2: 2}    
      print(dic.values())
    
      輸出:
      [0, 1, 2]
    
  • 獲取鍵值對(duì)元組的列表

      dic = {0: 0, 1: 1, 2: 2}
      print(dic.items())
    
      輸出:
      [(0, 0), (1, 1), (2, 2)]
    

序列類型基本操作

索引:

序列類型容器里的元素存在索引,第一個(gè)是從0開始往后遞增,
索引分正負(fù),如下:
s = abcde
 a b c d e
 0 1 2 3 4
-5-4-3-2-1

print(s[0] + s[1])
print(s[-1] + s[-2])
輸出:
ab
ed

切片:

顧名思義,截取序列數(shù)據(jù)中的一部分內(nèi)容


# ----切片 [開始:結(jié)束:間隔默認(rèn)為1,有調(diào)整切片方向的作用] 默認(rèn)從左向右切片
# ----切片 正索引
print(s[0:1])
print(s[:4])
print(s[2:])
print(s[2::2])

輸出:
a
abcd
cde
ce

# ----切片 負(fù)索引
print(s[-1])
print(s[-1:])
print(s[-1::-1])
print(s[-4:-1])
print(s[-1:-4:-1])
print(s[-2:-5:-1])

輸出:
e
e
edcba
bcd
edc
dcb

長(zhǎng)度:

str = 'abcde'
print(len(str))

輸出:
5

連接:

str = 'abcde'
str2 = '12345'
print(str + str2)

輸出:
abcde12345

重復(fù):

str2 = '12345'
print(str2 * 5)

輸出:
1234512345123451234512345

存在判斷:

str2 = '12345'
print('1' in str2)

輸出:
True

最大值:

str = 'abcde'
str2 = '12345'
print(max(str))
print(max(str2))

輸出:
e
5

最小值:

str = 'abcde'
str2 = '12345'
print(min(str))
print(min(str2))

輸出:
a
1

比較: 這個(gè)有點(diǎn)不懂?

str = 'abcde'
str2 = '12345'  
print(cmp(str, str2))
print(cmp(str, str))

輸出:
1
0

遍歷

list = [1, 2, 3, 4, 5, 6, 7]
str = 'hello'

# 取出序列的值
for x in list:
    print(x)
for x in str:
    print(x)

輸出:
1
2
3
4
5
6
7
h
e
l
l
o

# 取出序列的索引
list = [1, 2, 3, 4, 5, 6, 7]
for x in range(len(list)):
    print(x)

輸出:
0
1
2
3
4
5
6

流程控制語(yǔ)句

基本使用

# 兩種結(jié)果
a = 15
if a > 124:
    print('a > 124')
    print('True')
else:
    print('a < 124')
    print('False')

輸出:
a < 124
False

# 三種結(jié)果
a = 15
if a > 124:
    print('a > 124')
    print('ok')
elif a == 124:
    print("a == 124")
else:
    print('a < 124')
    print('false')

邏輯值

True 表示非空的量
False 表示0 NONE 空的量等

循環(huán)控制語(yǔ)句

else

# 循環(huán)正常結(jié)束后調(diào)用 
s = 'hello'
for k in s:
    print(k)
else:
    print("ending")

輸出:
h
e
l
l
o
ending

break

# 打斷此層的循環(huán)
for k in s:
    print(k)
    if k == 'l':
        break;
else:
    print("ending")

輸出:
h
e
l

continue

# 跳過(guò)循環(huán)的后續(xù)代碼塊
for k in s:
    if k == 'l':
        continue;
    print(k)
else:
    print("ending")

輸出:
h
e
o
ending

return

# 跳出循環(huán)結(jié)束函數(shù)返回?cái)?shù)值
def ret():
    for x in 'hello':
        print(x)
        if x == 'e':
            return 1
        print('666')
    else:
        print('-----ending')


a = ret()
print(a)

輸出:
e
1

while循環(huán)

# 基本使用
x = ''
while x != 'q':
    print(True)
    x = input('請(qǐng)輸入q結(jié)束循環(huán):')
    if not x:
        break;
    if x == 'c':
        print('one more time~~c')
else:
    print('ending')

函數(shù)

設(shè)置默認(rèn)參數(shù)

def fa(name="hebw", age=0):
    print('name:%s' % name + '  age:%s' % age)
fa()

輸出:
name:hebw  age:0

直接向函數(shù)傳入元組

# 類似這樣的函數(shù),形式參數(shù)類似一個(gè)元組
def f(x, y):
    print x, y  
# 這里有一個(gè)元組,如何把元組直接傳入方法內(nèi).分別當(dāng)做x,y
t = (1, 2)
# 這里使用這個(gè)方法來(lái)直接傳入一個(gè)元組 利用一個(gè)*號(hào)
f(*t)

直接向函數(shù)傳入字典

def fa(name="hebw", age=0):
    print('name:%s' % name + '  age:%s' % age)
fa(**{'age': 123, 'name': 'hbwwww'})

輸出:
name:hbwwww  age:123

冗余參數(shù)的接收

# 使用元組接收冗余參數(shù)

def f2(x, *args):
    print(x)
    print(args)
f2(2, 1)

輸出:
2
(1,)

# 使用字典接收冗余參數(shù)

def f3(x, **args):
    print(x)
    print(args)
f3(1)
f3(1, y=1)

輸出:
1
{}
1
{'y': 1}

lambda匿名函數(shù)

# 普通函數(shù)
def lam(x, y):
    return x + y
a = lam(x=1, y=2)
b = lam(*(3, 7))
print(a)
print(b)

輸出:
3
10

# lambda函數(shù)
def l(x, y):
    return x * y
g = lambda x, y: x * y

print(type(g))
print(id(g))
print(g)
print(g(2, 2))

輸出:
<type 'function'>
39222184
<function <lambda> at 0x0000000002567BA8>
4

# lambda用法舉例
l = range(1, 6)
def fa(x, y):
    return x * y
a = reduce(fa, l)
c = reduce(lambda x, y: x * y, l)
print(a)
print(c)

輸出:
120
120

switch場(chǎng)景,python不存在switch關(guān)鍵字,可以使用字典替代

# 舉例 設(shè)計(jì)一個(gè)計(jì)算器

# 計(jì)算器
def add(x, y):
    return x + y


def jian(x, y):
    return x - y


def cheng(x, y):
    return x * y


def chu(x, y):
    return x / y

# 用if 和 else 寫的代碼
def operator(x, o, y):
    if o == "+":
        return add(x, y)
    elif o == '-':
        return jian(x, y)
    elif o == '*':
        return cheng(x, y)
    elif o == '/':
        return chu(x, y)
    else:
        pass


print(operator(6, '+', 6))

輸出:
12

# 用字典的方法
oper = {"+": lambda x, y: x + y, "-": lambda x, y: x - y, "*": lambda x, y: x * y,
    '/': lambda x, y: x / y}

def fc(x, o, y):
    print(oper.get(o)(x, y))

fc(12, '/', 2)

輸出:
6

# 總結(jié):
# {}.get('o')('1', '2')
# 前面的{}代表字典,利用get方法,獲取字典對(duì)應(yīng)的value,value可以是一個(gè)lambda方法,同時(shí)可以直接在后傳入方法的參數(shù)

內(nèi)置函數(shù)

abs() 返回?cái)?shù)字的絕對(duì)值

a = abs(-10111111)
print(a)
print(type(a))

輸出:
10111111
<type 'int'>

max()最大 min()最小

l = [1, 23, 4, 5, 6, 7, 8, 9, 0, 1, 3, 23, 2, 2, 31, 5, 7, 89, 34, 23, 'sd']
print(max(l))
print(min(l))

輸出:
sd
0

divmod() 返回包含兩個(gè)數(shù)字的商和余的元組

print(divmod(2, 5))

輸出:
(0,2)

pow(x, y[, z]) 函數(shù)是計(jì)算x的y次方臀叙,如果z在存在成翩,則再對(duì)結(jié)果進(jìn)行取模否淤,其結(jié)果等效于pow(x,y) %z

print(pow(2, 3, 4))

輸出:
0

round() 四舍五入

print(round(12.4))

輸出:
12.0

callable() 檢測(cè)函數(shù)是否可以被調(diào)用

print(callable(round))

輸出:
True

isinstance() 判斷對(duì)象是否屬于某類型

l2 = {1: 1, 2: 2}
print(isinstance(l2, tuple))

輸出:
False

cmp() 判斷兩個(gè)字符串是否一樣

print(cmp('1', '1'))
print(cmp('1', '2'))
print(cmp('2', '1'))

輸出:
0
-1
1

xrange()相比range(),就說(shuō)是效率高一點(diǎn),具體用處不明啊

類型轉(zhuǎn)換

print(type(int(123)))
print(type(long(123)))
print(type(float(123)))
print(type(tuple([1, 2])))
print(type(list((1,))))
print(type(str(1)))

輸出:
<type 'int'>
<type 'long'>
<type 'float'>
<type 'tuple'>
<type 'list'>
<type 'str'>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末金矛,一起剝皮案震驚了整個(gè)濱河市摩渺,隨后出現(xiàn)的幾起案子潦牛,更是在濱河造成了極大的恐慌漩符,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件沾谜,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡胀莹,警方通過(guò)查閱死者的電腦和手機(jī)基跑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)描焰,“玉大人媳否,你說(shuō)我怎么就攤上這事【G兀” “怎么了篱竭?”我有些...
    開封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)步绸。 經(jīng)常有香客問(wèn)我掺逼,道長(zhǎng),這世上最難降的妖魔是什么瓤介? 我笑而不...
    開封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任吕喘,我火速辦了婚禮,結(jié)果婚禮上惑朦,老公的妹妹穿的比我還像新娘兽泄。我一直安慰自己,他們只是感情好漾月,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開白布病梢。 她就那樣靜靜地躺著,像睡著了一般梁肿。 火紅的嫁衣襯著肌膚如雪蜓陌。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天吩蔑,我揣著相機(jī)與錄音钮热,去河邊找鬼。 笑死烛芬,一個(gè)胖子當(dāng)著我的面吹牛隧期,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播赘娄,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼仆潮,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了遣臼?” 一聲冷哼從身側(cè)響起性置,我...
    開封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎揍堰,沒(méi)想到半個(gè)月后鹏浅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嗅义,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年隐砸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了之碗。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡凰萨,死狀恐怖继控,靈堂內(nèi)的尸體忽然破棺而出械馆,到底是詐尸還是另有隱情胖眷,我是刑警寧澤,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布霹崎,位于F島的核電站珊搀,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏尾菇。R本人自食惡果不足惜境析,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望派诬。 院中可真熱鬧劳淆,春花似錦、人聲如沸默赂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)缆八。三九已至曲掰,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間奈辰,已是汗流浹背栏妖。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留奖恰,地道東北人吊趾。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像瑟啃,于是被迫代替她去往敵國(guó)和親论泛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

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

  • Python簡(jiǎn)介 Python歷史 Python 是由 Guido van Rossum 在八十年代末和九十年代初...
    莫名其妙的一生閱讀 1,044評(píng)論 0 2
  • 本節(jié)內(nèi)容 Python介紹 發(fā)展史 Python 2 or 3? 安裝 Hello World程序 變量 用戶輸入...
    小小不懂11閱讀 3,411評(píng)論 2 30
  • Python是一種什么語(yǔ)言呢了袁? 首先朗恳,我們先了解一下編程語(yǔ)言的基本知識(shí):用任何編程語(yǔ)言來(lái)開發(fā)程序都是讓計(jì)算機(jī)為我們...
    turbotx閱讀 1,697評(píng)論 0 4
  • 對(duì)于instance_eval和class_eval,在看ruby元編程時(shí)以為搞清楚了载绿,但最近發(fā)現(xiàn)一種情況粥诫,卻又讓...
    SecondRocker閱讀 972評(píng)論 0 5
  • 脊柱各部位特征 脊柱前凸與骨盆前傾 區(qū)分脊柱的骨骼前凸和該部位的外部形狀,前者實(shí)際是由椎骨排成弓形而形成崭庸,后者并不...
    厚_德_載_物閱讀 400評(píng)論 0 0