python内蔵モジュールの詳細

7295 ワード

一.randomモジュールランダム
random()ランダム小数uninform(a,b)ランダム小数randint(a,b)ランダム整数choice()ランダム選択1つのsample()ランダム選択複数のshuffle()乱れ

 import random
 from random import randint
 
 print(randint(10, 20))
 # print(random.randint(10, 20))/
 print(random.random())
 print(random.uniform(10, 20)) # 10-20     
 
 lst = ['  ', '  ', '  ', '  ']
 random.shuffle(lst) #       
 print(lst) 
 
 #           
 print(random.choice(["   ", "   ", "   ", "  ", "  "]))
 print(random.sample(["   ", "   ", "   ", "  ", "  "],3)) #          


二.Counterカウント

 from collections import Counter
 
 print(Counter('           ')) #   
 
 lst = ['jay', 'jay', 'jay', '  ', '  ', '   ', '    ']
 c = Counter(lst)
 print(c.get('  '))


三.辞書
1.デフォルト辞書

 from collections import defaultdict
 
 dd = defaultdict(lambda: '   ') # callable     ,      
 
 print(dd['   ']) #         .      . key:callable()
 print(dd['  ']) #    []  get()       
 print(dd)


2.整理辞書

 from collections import OrderedDict
 
 dic = OrderedDict() #     
 dic['a'] = '  '
 dic['b'] = '  '
 print(dic)
 print(dic.get('a'))
 print(dic.values())
 print(dic['a'])


四.スタックとキュー
1.スタック
特徴:先進後出

 class StackFullException(Exception):
   pass
 
 class StackEmptyException(Exception):
   pass
 class Stack:
 
   def __init__(self,size):
     self.size = size          
     self.lst = [] #        
     self.top = 0 #     
 
   #   
   def push(self, el):
     if self.top >= self.size:
       raise StackFullException('your stack is full!!')
     self.lst.insert(self.top, el) #    
     self.top += 1 #            
 
   #   
 
   def pop(self):
     if self.top == 0:
       raise StackEmptyException('your stack is empty!!!')
     self.top -= 1
     el = self.lst[self.top]
     return el
 
 s = Stack(6)
 s.push('  ')
 s.push('  ')
 s.push('  ')
 
 print(s.pop())
 print(s.pop())
 print(s.pop())


2.単一キュー
特徴:先進先出

 import queue
 q = queue.Queue()
 q.put('   1')
 q.put('   2')
 q.put('   3')
 q.put('   4')
 q.put('   5')
 
 print(q.get())
 print(q.get())
 print(q.get())
 print(q.get())
 print(q.get())


3.双方向キュー
特徴:単項同様

 from collections import deque
 
 d =deque() #       
 d.append('  ') #      
 d.append('no')
 d.append('way')
 d.append('  ')
 d.appendleft('   ') #      
 d.appendleft('   ')
 d.appendleft('   ')
 
 print(d.pop()) #       
 print(d.pop()) #       
 print(d.pop()) #       
 print(d.pop()) #       
 print(d.popleft()) #       
 print(d.popleft()) #       
 print(d.popleft()) #       


五.timeモジュール
#タイムスタンプ:1970-01-01 00:00:00から計算を開始します.将来のストレージ時にタイムスタンプprint(time.time()を使用
#フォーマット時間print(time.strftime('%Y-%m-%d%H:%M:%S')#表示用
#構造化時間(pythonの時間)t=time.localtime()  print(t.tm_year)  print(t.tm_mon)  print(t.tm_mday)
データベースに数字を格納します.フォーマット時間a=847772281.0に復元し、まずこのタイムスタンプをpythonの構造化時間t=timeに変換します.localtime(a)#構造化時間括弧に秒timeを記入する.localtime(秒)#ローカライズされた東八区の時間#t=time.gmtime(a)#グリニッジ時間s=time.strftime('%Y-%m-%d %H:%M:%S', t)  # time.strftime(フォーマット、構造化変換が入力された時間t)print(s)
ユーザに時間を入力させる.そしてタイムスタンプstrt=input('時間を入力してください:')#文字列を構造化時間t=timeに変換します.strptime(strt,'%Y-%m-%d%H:%M:%S')#タイムスタンプprint(time.mktime(t))#847772281.0#ローカライズされた東八区の時間
六.functools
1.wraps

from functools import wraps #            ,   ....


def wrapper(fn):
  @wraps(fn) #  inner         func
  def inner(*args, **kwargs):
    print(' ')
    ret = fn(*args,**kwargs)
    print(' ')
    return ret
  return inner

@wrapper # func = wrapper(func)
def func():
  print('   ')

print(func.__name__) # func


2.reduce

 def func(a, b):
   return a + b # 0 + 1
 
 #            func   ,                 
 
 ret = reduce(func, [1, 4, 7, 8, 6, 9],0)
 print(ret)
 print(reduce(lambda x, y: x+y, [i for i in range(101)]))


3.partial

 from functools import partial
 
 def chi(zhushi, fushi):
   print(zhushi, fushi)
 
 chi2 = partial(chi, fushi = "   ")
 chi2('   ')
 chi2('   ')
 chi2('   ')


七.名前付きメタグループnamedtuple

 p = namedtuple('Point', ["x", "y"])
 
 p1 = p(10, 20)
 print(p1)
 print(p1.x)
 print(p1.y)


八.OSモジュールシステム操作
1.os

#      .    
os.makedirs('baby/   /   ') #            

os.mkdir('baby/   /   /bb') #          

os.removedirs('baby/   /   /bb') #      ,      #                      

#            
os.rmdir('baby/   /   ') #        

os.system('dir')
print(os.popen('dir').read()) #   shell    cmd  

print(os.getcwd()) #            D:\python_workspace_s18\day 23     02

os.chdir('baby') 

 # os.path         
 print(os.path.abspath('baby')) #            
 print(os.path.split(r'D:\python_workspace\    \baby\1.txt')) #          
 
 print(os.path.dirname(r'D:\python_workspace\    \baby\1.txt')) 
 #     
 print(os.path.basename(r'D:\python_workspace\    \baby\1.txt')) 
 #   
 
 print(os.path.existsr'D:\python_workspace\    \baby\1.txt')) 
 #         
 print(os.path.abspath('1.txt'))


2.sysモジュール

 import sys
 
 print(sys.path) #      .      .        
 sys.path.append(r'D:\python_workspace\      ')
 print(sys.path)


九.モジュールとパッケージのカスタマイズ
import   
from xxx import xxxx   
式->文->文ブロック->関数->クラス->モジュール->パッケージ->プロジェクト
パッケージは私たちのフォルダで、パッケージには多くのモジュールを書くことができます.
検索パスはsysです.path,随動.起動ファイルの場所が変わるにつれて
絶対インポートの使用にかかわらず.やはり相対的に導入する.起動ファイルは必ず一番外にあります
 1.モジュール
書いたpyファイルをモジュールと呼ぶことができます
2.パッケージ
フォルダにモジュールがたくさん入っているのがパッケージです