您的位置:首页 > 编程语言 > Python开发

python 小记2

2016-04-13 16:57 357 查看


#!/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'吗?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python