python笔记
输出小技巧
print("网站名:{name}, 地址 {url}".format(name="菜鸟教程", url="www.runoob.com"))
print("大家好,我叫%s"%name)
获取当前路径
import os
print os.getcwd()#获得当前工作目录
print os.path.abspath('.')#获得当前工作目录
print os.path.abspath('..')#获得当前工作目录的父目录
print os.path.abspath(os.curdir)#获得当前工作目录
遍历文件夹下的文件
import os
# 遍历文件夹
def walkFile(file):
for root, dirs, files in os.walk(file):
# root 表示当前正在访问的文件夹路径
# dirs 表示该文件夹下的子目录名list
# files 表示该文件夹下的文件list
# 遍历文件
for f in files:
print(os.path.join(root, f))
# 遍历所有的文件夹
for d in dirs:
print(os.path.join(root, d))
def main():
walkFile("f:/ostest/")
if __name__ == '__main__':
main()
迭代对象和迭代器
总结:
凡是可作用于for循环的对象都是Iterable类型;
凡是可用作next()函数的对象都是Iterator类型,它表示一个惰性计算的序列。
集合数据类型如list,dict,str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。
pytorch之dataloader
总结
DataLoader本质上就是一个iterable(跟python的内置类型list等一样),并利用多进程来加速batch data的处理,使用yield来使用有限的内存
迭代的返回值由collate_fn决定
类中self与cls的区别
python中cls代表的是类的本身,相对应的self则是类的一个实例对象。
class Person(object):
def __init__(self, name, age):
self.name = name
self.age = age
print('self:', self)
# 定义一个build方法,返回一个person实例对象,这个方法等价于Person()。
@classmethod
def build(cls):
# cls()等于Person()
p = cls("Tom", 18)
print('cls:', cls)
return p
if __name__ == '__main__':
person = Person.build()
print(person, person.name, person.age)
函数装饰器@
#python中@别是函数装饰器,它能够实现函数的快速嵌套
#funA 作为装饰器函数
def funA(fn):
#...
fn() # 执行传入的fn参数
#...
return '...'
@funA
def funB():
#...
#上面的函数等价与
def funA(fn):
#...
fn() # 执行传入的fn参数
#...
return '...'
def funB():
#...
funB = funA(funB)
遍历文件夹中的文件
import os
for root, dirs, files in os.walk(r"campus", topdown=False):
for name in files:
print(os.path.join(root, name))
#返回值root是输入的文件夹的路径,dirs是root文件下的子文件夹,files是root下的子文件
eval()
eval() 函数用来执行一个字符串表达式,并返回表达式的值。
>>>x = 7
>>> eval( '3 * x' )
21
>>> eval('pow(2,2)')
4
>>> eval('2 + 2')
4
>>> n=81
>>> eval("n + 4")
85