参考教程:菜鸟教程
;分隔同行两句代码
类型是属于对象的,变量无类型,不需要提前创建
查询类型:
type()不会认为子类是一种父类类型。
isinstance()会认为子类是一种父类类型。
Number(数字)、String(字符串)、Tuple(元组)
stringname.endswith(strtocheck,start,end)
List(列表)、Dictionary(字典)、Set(集合)
数组从0开始,[0:5]表示从第一个到第5个,[0,-1]表示从第一个到倒数第二个,-1为倒数第一个
元素可以修改
list1 = ['Google', 'Runoob', 1997, 2000];
pushback:list.append(x)
添加多个值:list.extend(seq)
从列表的指定位置移除元素,并将其返回list.pop([i])
,a.pop()
最后一个
删除一系列del a[2:4]
嵌套列表
元素不能修改
tup1 = ('Google', 'Runoob', 1997, 2000)
或者不加括号
单个:tup1 = (50,)
空:tup1 = ()
key要是不可变类型
dict2 = { 'abc': 123, 98.6: 37 }
调用:dict['Name']
空:dict={}
dataiter = iter(trainloader)
images, labels = dataiter.next()
一个无序的不重复元素序列
parame = {value01,value02,...}
set(value)
空:a=set()
判断x在集合c内:x in c
it = iter(list)
next(it)
__iter__(类)
__next__(类)
def area(width, height):
return width * height #只有return的时候返回None
传递可变类型会对原本的值有影响,不可变的不会
函数参数的使用不需要使用指定顺序
可设置默认参数def printinfo( name, age = 35 ):
def printinfo( arg1, *vartuple ): #*以元组形式传入
def functionname([formal_args,] **var_args_dict ):#**以字典形式传入
def f(a,b,*,c):#* 后的参数必须用关键字传入 c=3
sum = lambda arg1, arg2: arg1 + arg2
sum( 10, 20 )
import sys
sys.argv是命令行传入参数
xxx.py argv1 argv2 ···
import xxx可调用xxx内的函数 xxx.func
或from xxx import func ,可调用func
每个模块都有一个__name__属性,当其值是’main’时,表明该模块自身在运行,否则是被引入
dir(fibo)
找到模块内定义的所有名称
目录包含一个叫做 __init__.py 的文件才会被认作是一个包
import sound.effects.echo 调用sound.effects.echo.echofilter()
from sound.effects import echo 可调用echo.echofilter()
#还可以用%*.*s来表示精度,两个*的值分别在后面小括号的前两位数值指定
print "string=%*.*s" % (7,2,string)
str="sdf"
str.join( seq );
print("{} {}".format("hello", "world")) # 不设置指定位置,按默认顺序
print("{1} {0} {1}".format("hello", "world") ) # 设置指定位置
print("网站名:{name}, 地址 {url}".format(name="菜鸟教程",url="www.runoob.com"))
# 通过字典设置参数
site = {"name": "菜鸟教程", "url": "www.runoob.com"}
print("网站名:{name}, 地址 {url}".format(**site))
# 通过列表索引设置参数
my_list = ['菜鸟教程', 'www.runoob.com']
print("网站名:{0[0]}, 地址 {0[1]}".format(my_list)) # "0" 是必须的
#类
print('value 为: {0.value}'.format(my_value)) #my_value是class
类构造:def __init__(self): self.data = []
class JustCounter:
__secretCount = 0 # 私有变量
publicCount = 0 # 公开变量
def __xxx(self): # 私有方法
在类的内部,使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数 self,self是该类
类的专有方法:
__init__ : 构造函数,在生成对象时调用
__del__ : 析构函数,释放对象时使用
__repr__ : 打印,转换
__setitem__ : 按照索引赋值
__getitem__: 按照索引获取值
__len__: 获得长度
__cmp__: 比较运算
__call__: 函数调用
__add__: 加运算
__sub__: 减运算
__mul__: 乘运算
__truediv__: 除运算
__mod__: 求余运算
__pow__: 乘方
运算符重载
def __add__(self,other):
子类初始化
class sun(father):
def __init__(self,name,age):
self.age=age
super().__init__(name)#name是父类变量
super(Class[, self])
可以使用直接使用 super().xxx 代替 super(Class, self).xxx
静态方法
@staticmethod #静态方法 类或实例均可调用 不传入self 或 cls不能访问类属性
def function(
for iterating_var in sequence:#iter为seq里的元素的值 遍历
statements(s)
try:
## 有错就匹配except
except A:
## 发生错A
except:
## 其他错
else:
## 没错
finally:
##总是执行
with ... as ...
block
同时列出数据下标和数据
enumerate(sequence, [start=0])
进度条模块
pbar = tqdm(enumerate(test_loader))#pbar只是给tqdm()内的东西加上进度条