PYTHONPATH是python moudle的搜索路徑.即import xxx會從$PYTHONPATH尋找xxx.html
#coding=utf-8python
import a_module
print(a_module.__file__)shell
參數
function -- 函數
iterable -- 一個或多個序列安全
返回值
Python 2.x 返回列表。
Python 3.x 返回迭代器。dom
>>>def square(x) : # 計算平方數 ... return x ** 2 ... >>> map(square, [1,2,3,4,5]) # 計算列表各個元素的平方 [1, 4, 9, 16, 25] >>> map(lambda x: x ** 2, [1, 2, 3, 4, 5]) # 使用 lambda 匿名函數 [1, 4, 9, 16, 25] # 提供了兩個列表,對相同位置的列表數據進行相加 >>> map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10]) [3, 7, 11, 15, 19]
It returns every item on a position that is a multiple of 3. Since 3*0=0, it returns also the item on position 0. For instance: range(10)[::3] outputs [0, 3, 6, 9]工具
每隔xxx個元素作切片ui
好比img是h*w*c維(h是第0維,w是第1維,c是第2維)的矩陣. 在通過transpose((2,0,1))後變爲c*h*w的矩陣編碼
>>>seasons = ['Spring', 'Summer', 'Fall', 'Winter'] >>> list(enumerate(seasons)) [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')] >>> list(enumerate(seasons, start=1)) # 下標從 1 開始 [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
>>>range(10) # 從 0 開始到 10 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> range(1, 11) # 從 1 開始到 11 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> range(0, 30, 5) # 步長爲 5 [0, 5, 10, 15, 20, 25] >>> range(0, 10, 3) # 步長爲 3 [0, 3, 6, 9] >>> range(0, -10, -1) # 負數 [0, -1, -2, -3, -4, -5, -6, -7, -8, -9] >>> range(0) [] >>> range(1, 0) []
詳細地看:http://www.runoob.com/python/python-func-super.html
命令行
簡單地說就是爲了安全地繼承.記住怎麼用的就好了.不必深究.
#!/usr/bin/python # -*- coding: UTF-8 -*- class A(object): # Python2.x 記得繼承 object def add(self, x): y = x+1 print(y) class B(A): def add(self, x): super(B, self).add(x) b = B() b.add(2) # 3
print('name: "%s"' % props['name'],fp) //把字符串寫入文件fp
random.choice(sequence)
https://pynative.com/python-random-choice/
import random path = "/home/train/disk/data/yulan_park_expand" random.choices([x for x in os.listdir(path) if os.path.isfile(os.path.join(path, x))],k=2000)
from shutil import copyfile copyfile(src, dst)
import argparse parser = argparse.ArgumentParser() parser.add_argument('num1',type=int,help="img numbers to random") parser.add_argument('num2',type=int,help="img numbers to random") args = parser.parse_args()
命令行參數不帶'-'開頭的,就是相似於佔位符,按順序賦值. 好比python xxx.py 1 2則args.num1=1,args.num2=2. python xxx.py 2 1則args.num1=2,args.num2=1.
def arg_parse(): parser = argparse.ArgumentParser() parser.add_argument('-d','--dir',type=str,default='./data',required='True',help='dir store images/label file') parser.add_argument('-o','--output',type=str,default='./outdata.tfrecord',required='True',help='output tfrecord file name') args = parser.parse_args() return args
以前在pytorch和keras中常常發現一個類model被直接調用,發現頗有意思。因而就去看了看pytorch中nn.Module的源碼,發現是定義了__call__(self)函數再去調用forward()函數。舉個例子以下:
import math class Pow(object): def __init__(self,n=2): self.n=n super(Pow,self).__init__() def forward(self,x): return math.pow(x,self.n) def __call__(self,x): return self.forward(x) l=Pow(2) y=l(10) print(y) #輸出結果是100 l=Pow(3) y=l(10) print(y) #輸出結果是1000
os.walk
#!/usr/bin/python # -*- coding: UTF-8 -*- import os for root, dirs, files in os.walk(".", topdown=False): for name in files: print(os.path.join(root, name)) for name in dirs: print(os.path.join(root, name))
腳本語言的第一行,目的就是指出,你想要你的這個文件中的代碼用什麼可執行程序去運行它,就這麼簡單
import random a = ['a', 'b', 'c'] b = [1, 2, 3] c = list(zip(a, b)) random.shuffle(c) a, b = zip(*c) print a print b [OUTPUT] ['a', 'c', 'b'] [1, 3, 2]
yield在函數中的功能相似於return,不一樣的是yield每次返回結果以後函數並無退出,而是每次遇到yield關鍵字後返回相應結果,並保留函數當前的運行狀態,等待下一次的調用。若是一個函數須要屢次循環執行一個動做,而且每次執行的結果都是須要的,這種場景很適合使用yield實現。
包含yield的函數成爲一個生成器,生成器同時也是一個迭代器,支持經過next獲取下一個值。
yield基本使用:
def func(): for i in range(0,3): yield i f = func() print(next(f)) for i in f: print(i)
輸出
0 1 2