Python-Day9

1. 知識回顧

  isinstance(object, class)   ---->   判斷該對象是不是該類的實例

s = 'cnskcsk'

ret = isinstance(s, str)

print(ret)

#>>>>>>>>>>>>>>>
True

  

  傳入 列表 字典 集合 時,默認傳入的是實參的引用地址,便可以修改實參

def app(args):
    args.append('333')
    return args

li = [11,22]
ret = app(li)
print(li)

#>>>>>>>>>>>
[11, 22, '333']

  一旦對形參進行賦值操做,就新開闢一塊內存使args指向這塊新開闢的,而實參不變python

def app(args):
    args = 'qweqweqwe'
    return args

li = [11,22]
ret = app(li)
print(li)

#>>>>>>>>>>>
[11, 22]

  

處理字典 列表等有兩種方式:1改變自身  *2返回新建的變量*

# def qu2(args):
#     r = {}
#     for key, value in args.items():
#         if len(value) > 2:
#             r[key] = value[0:2]
#         else:
#             r[key] = value
#     return r
#
# l = {'k1': 'xascaasdx', 'k2': 'cf', 'k3': [11,22,33]}
# print(qu2(l))

>>>>>>>>>>>>>>>>>>>>>>>>>>兩種方法

def qu2(args):
    for key, value in args.items():
        if len(value) > 2:
            args[key] = value[0:2]
        else:
            args[key] = value

l = {'k1': 'xascaasdx', 'k2': 'cf', 'k3': [11,22,33]}
qu2(l)
print(l)

  

2. lambda表達式

  簡易的表示函數數組

def f1(a1, a2):
    return a1 + a2

f2 = lambda a1, a2: a1 + a2

r1 = f1(1, 2)
r2 = f2(1, 2)

print(r1)
print(r2)

#>>>>>>>>>
3
3

 

3. 內置函數

 

  0 None "" [] () {} 爲False , 其餘爲True

  abs() 取絕對值app

  all()   循環參數,若每一個元素都爲True, 返回真dom

  any() 循環參數,只要有一個True, 返回True函數

  ascii()  去參數對象的類中尋找 __repr__() 方法, 執行獲取返回值ui

  bin()  二進制spa

  oct() 八進制code

  int() 十進制      ret = int('0b1010', base=2)   ---->    將二進制轉爲十進制對象

  hex()  十六進制blog

  bool() 判斷真假,即將參數轉爲布爾值

  bytes()        字節

  bytearray()  字節數組,每個元素爲字節, 相似 字符串跟列表的關係

  chr()  接收一個十進制數,返回對應ASCII碼的字符

  ord()  與 chr() 相反,接收一個字符,返回ASCII對應十進制數

  小例子:生成隨機驗證碼

import random

temp = ''
for i in range(4):
    num = random.randrange(65, 91) #65~90 A~Z
    ch = chr(num)
    temp += ch

print(temp)   #隨機生成四位驗證碼

  改進爲 既包含數字 又包含字母的

import random

temp = ''
for i in range(6):
    rd = random.randrange(0, 4)
    if rd == 1 or rd == 3:
        num1 = random.randrange(0, 10)
        temp += str(num1)
    else:
        num = random.randrange(65, 91)  # 65~90 A~Z
        ch = chr(num)
        temp += ch

print(temp)   #隨機生成6位驗證碼

  

  callable()   檢測參數是不是可執行的

  compile()   把字符串編譯成可執行代碼,能夠與exec()結合使用

  dir() 返回對象所在類裏的全部方法

  help() 輸出類的全部詳細信息

  divmod()   divmod(a, b)   返回a/b的 商 和 餘數 組成的元組,能夠用在 分頁 中

  eval()  執行一個字符串格式的表達式

ret = eval('1 + 3 * 2')

print(ret)

#>>>>>>>>>>>

7

  後面能夠帶字典指定字符串中的變量值

ret = eval('a + 10', {'a':23})
#後面帶字典,指定變量的值
print(ret)

#>>>>>>>>>>>
33

  exec()  執行字符串形式的代碼,沒有返回值  

exec('for i in range(10): print(i)')

#>>>>>>>>>
0
1
2
3
4
5
6
7
8
9

  filter()      filter(函數名, 可迭代的對象)  循環取後者的元素,做爲函數的參數,執行。若返回True, 保存該元素

        即 過濾出符合條件的元素

def f1(args):
    if args > 22:
        return True
    else:
        return False

ret = filter(f1, [11, 22, 33, 44])

print(ret)

for i in ret:
    print(i)

#經過lambda表達式
ret = filter(lambda x: x > 22, [11, 22, 33, 44])

print(ret)

for i in ret:
    print(i)

#>>>>>>>>>>>

<filter object at 0x00000238C7A7CE48>
33
44
<filter object at 0x00000238C7A7CE80>
33
44

  map()   跟filter() 相似,不一樣在於 對每一個元素作統一的處理

def f1(args):
    return args + 100

ret = map(f1, [11, 22, 33, 44])

print(ret)

for i in ret:
    print(i)

#經過lambda表達式
ret = map(lambda x: x + 100, [11, 22, 33, 44])

print(ret)

for i in ret:
    print(i)

#>>>>>>>>>>>
<map object at 0x000001BF2210CE48>
111
122
133
144
<map object at 0x000001BF2210CE80>
111
122
133
144

  

def f1(args):
    if args % 2 == 0:
        return args + 100
    else:
        return args

ret = map(f1, [11, 22, 33, 44])

print(ret)

for i in ret:
    print(i)

#經過lambda表達式
ret = map(lambda x: x + 100 if x % 2 == 0 else x, [11, 22, 33, 44])

print(ret)

for i in ret:
    print(i)

#>>>>>>>>>>>

<map object at 0x000001FF537FCE48>
11
122
33
144
<map object at 0x000001FF537FCE80>
11
122
33
144

  locals()  獲取全部局部變量

  globals()   獲取全部全局變量

def f1():
    n1 = 123
    print(locals())
    print(globals())

l = [11,22,33]

f1()

#>>>>>>>>>>>>>>>>>>>>>

{'n1': 123}
{'__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000001F7B1AEAA58>, 'f1': <function f1 at 0x000001F7B1BB10D0>, '__spec__': None, 'l': [11, 22, 33], '__file__': 'C:/Users/LiuKai/PycharmProjects/Fighting/main/src.py', '__package__': None, '__builtins__': <module 'builtins' (built-in)>, '__doc__': None, '__name__': '__main__', '__cached__': None}

  id() 內存地址

  hash() 返回其哈希值

  iter() 轉爲可迭代的對象,使用next()取值,每執行一次next()取下一個值

  max() min() 取最大值 最小值 sum() 求和

  pow() 指數運算 pow(2, 10) = 1024

  repr() 相似 ascii() , 不過 ascii() 遇到中文會轉義

  reversed() 反轉 須要在迭代(for循環)中取出元素

  round() 四捨五入

  zip() 把對應的元素組成一個元組做爲一個元素

l = [11, 22, 33, 44, 55]
m = ['qq', 'ss', 'dd', 'dd']
n = ['@@', '##', '$$', '%%']

r = zip(l, m, n)

for i in r:
    print(i)

#>>>>>>>>>
(11, 'qq', '@@')
(22, 'ss', '##')
(33, 'dd', '$$')
(44, 'dd', '%%')

  __import__() 也是導入模塊,r = __import__(random), 以後再用到時使用 r.randomrange() 至關於起了一個別名

 

  sorted() 排序順序

  對數字來講,從小到大

  對字符串來講, 先數字,後字母字符,最後漢字

  

l = [ '你好','11', 'yadlan', '1324', '23', '546', 'rruhvd', 'Ancskdna', 'Av s,', '好啊']

r = sorted(l)

print(r)
for i in r:
    print(bytes(i, encoding = 'utf-8'))
    
#>>>>>>>>>>>>
['11', '1324', '23', '546', 'Ancskdna', 'Av s,', 'rruhvd', 'yadlan', '你好', '好啊']
b'11'
b'1324'
b'23'
b'546'
b'Ancskdna'
b'Av s,'
b'rruhvd'
b'yadlan'
b'\xe4\xbd\xa0\xe5\xa5\xbd'
b'\xe5\xa5\xbd\xe5\x95\x8a'

    

文件操做

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息