python 小记2

来源:互联网 发布:java项目经验案例2017 编辑:程序博客网 时间:2024/06/15 20:20



#!/usr/bin/env python3
# -*- coding: utf-8 -*-


# 切片  
# L[开始索引(0可以省略): 结束索引(不包括此索引的值,-1可以省略): 每几个取一个]
# list, tuple, str 都可以使用切片,返回值为同类型
L = ['a', 'b', 'c']
L[0:2] # --> ['a', 'b']
range(100)[0:20:2]#取0>20,每两个去一个


# 迭代   for in
# list tuple str dict 都可以用for in 迭代
d = {"a":1,"b":2}
for key in d:
 pass
for value in d.values():
 pass
for key, value in d.items():
 pass

isinstance('abc', Iterable)  # 检查'abc'是否是迭代类型

for x in ['a', 'b', 'c']:
 pass

# enumerate函数可以把一个list变成 索引-元素 对
for i, value in enumerate(['a', 'b', 'c']):
 print(i, value)


# 高阶函数(一个函数可以接收另一个函数作为参数,变量可以指向函数,这种函数就称之为高阶函数)

#map() reduce()
#map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。
list(map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9]))

#reduce把一个函数作用在一个序列[x1, x2, x3, ...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是:
reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)

#filter()
#filter()也接收一个函数和一个序列。和map()不同的时,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。

#sorted()
#sorted()函数就可以对list进行排序:
sorted([36, 5, -12, 9, -21], key=abs)

#闭包函数会保存相关参数和变量

#匿名函数 关键字lambda表示匿名函数,冒号前面的x表示函数参数
#只能有一个表达式,不用写return,返回值就是该表达式的结果
lambda x: x * x


#模块Module(管理模块的称之为包Package)
#每一个包目录下面都会有一个__init__.py文件,这个文件是必须存在的,否则,Python就把这个目录当成普通目录
#__init__.py可以是空文件,也可以有Python代码,因为__init__.py本身就是一个模块
#不能和Python自带的模块名称冲突

#模块中可能会有下面两行代码
if __name__=='__main__':
    test()
#当在命令行运行此模块时,python解释器会把__name__变量置为__main__,而在其他地方导入
#此模块时if判断将失败

#作用域
#一般函数和变量都是public的,__xxx__类型的变量时特殊变量,自己定义是应避免使用此类型变量
#_xxx, __xxx 类型的变量时private的,不应该被直接引用(不是强制的)
def _xxx():
 pass
def __xxx():
 pass

#python 拥有丰富的底三方模块,安装第三方模块时通过匹配完成的,window可以直接运行模块的exe文件安装


#类Class(同样支持继承,多态)
#类定义
Class Student(object):#object 是父类,最终都会继承object
 self.staticAttr = "aa"#类属性
 def __init__(self, name, sore):
  self.name = name
  self.__sore = sore#__sore表示此变量是私有的外部不可以访问
 def print_sore(self):
  print('%s: %s' % (self.name, self.__sore))

xiaoming = Student('xiaoming', 100)
xiaoming.print_sore()

#__xxx双下划线开头的变量python解释器对外改成了_Student__name,所以仍可以通过_Student__name访问__name变量
#但不要这么做


# 获取对象信息
#获取对象类型
if type(123) == int:
 pass

def fun():
 pass
if type(fun) == types.FunctionType:
 pass

if (lambda x: x) == types.LambdaType:
 pass

#dir()获得一个对象的所有属性和方法

#getattr()、setattr()、hasattr() 获取,设置,判断一个对象的属性
getattr(obj, "x")# 有属性'x'吗?



0 0
原创粉丝点击