最近通过廖雪峰老师的 站学习python,顺便做一下自己的学习记录。
1.函数
(1)函数简介:
python定义和调用函数都很简单,以例为证:
def my_power(x):
return x * x
>>>print(my_power(9))
81
函数返回值可以是tuple或者list
def my_power2(x,n):
i = 1
sum = x
while i
sum *= x
i+=1
return(sum,n)
print(my_power2(5,3))
对于python的函数来说,其参数主要有3大类:默认参数,可变参数,和关键字参数
def my_power(a,x=5,*list,**kw):
如上述函数所示,a为固定参数;
x为默认参数,可不输入,使x取默认值5;
list为传入的list或者tuple,长度不固定;
kw为传入的dict,可理解为将变量名一切传入,如:
my_power(1,2,*list,name=’hehe’,score=90)
(2)函数高级特性
python中函数储存在内存中,函数名只是指向函数的变量。因此可以将函数名赋值给另外的变量
>>>abs(10)
10
>>>a = abs
>>>a(-10)
10
因此,可以将函数作为参数或者返回值,形成了高阶函数的概念
def f():
print(‘hehe’)
def f1(func):
print(func())
a = f
f1(a)
下面介绍几个高阶函数:
map
map(f,list)
map第一个参数为一个函数,是对list中每个元素的操作,第二个参数为list,如:
>>>map(power,[1,2,3])
[1,4,9]
2. reduce
同map形式一样,第一个为对迭代操作函数,第二个参数为list,如:
>>>reduce(add,[1,2,3])
6
3. filter
形式用法一样,第一个参数为返回布尔值得函数,返回的list将过滤掉返回值为false的list元素
4. sorted
sorted(list,cmp)
第一个为将要进行排序的list,第二个参数为比较函数,list中相邻两个元素的排列将按cmp函数的返回布尔值进行排序
2.模块
python中,可以将每个文件作为一个模块,当模块间的命名冲突时,需要用到包。
同一包中,需要一个__init__.py文件来标志包,就可以将包与包分开
使用模块用到import,如
import sys
print(sys.args)
在引用时可以重命名,如
import cStringIO as StringIO
使用pip下载模块、使用模块这里不做总结
3.类
1.类的基础
类的概念与java相同,python同一有万物皆对象的观念,即所以类需继承object类:
class Student(object):
def __init__(self,name):
self.name = name
def print_name(self):
print(‘my name is %s ‘ % self.name)
>>>s = Student(‘hehe’)
>>>s.print_name()
my name is hehe
Student后为该类所继承的类,可以继承多个类;
所有成员函数必须有self参数,类似与*this
__init__函数参数是实例创建的时候必须传入的初始化参数
在python中,成员变量访问限制通过在变量前增加“__”来实现,虽然编译器只是给限制变量更改名字来实现限制访问,并不能完全避免访问,但是一定程度上也保障了变量的安全性
…
self.__name=name
…
获取类信息的方法有三种:type()、isinstance()、dir()函数
>>>type(abs)
>>>isinstance(123,int)
>>>dir(int)
type用以返回参数的类型;isinstance返回布尔值,判断参数与类型是否对应;dir获取参数类的所有方法与变量
2.类的高级特性
python作为一种动态语言,可以在执行中为类添加方法
s = Student()
from types import MethodType
s.f = MethodType(function,s,Student)
#将函数添加给实例
Student.f = MethodType(function,None,Student)
#给类添加函数
通过__slots__可以限制为类添加的变量
…
__slots__ = (‘name’,’score’)
#只能给类添加name与score变量
…
成员函数的装饰器:
为了使成员变量变为属性(通过get/set访问变量),可以使用@property
class Student(object):
@property
def age(self):
return selt._age
#一定要加上‘_’
@age.setter
def age(self,age):
self._age = age
这一样就能直接通过age来赋值和取值
>>>s.age = 20
>>>print(s.age)
关于廖老师讲的定制类与元类,只做简单的总结
类的定制类讲了一些,如
__str__(输出类信息);
__iter__(类的迭代访问,如 for i in s);
___getitem__(类的随机访问函数,如s[0]);
__call__(用实例名为名字的函数,如s())
这次的学习笔记就到这里,比较简陋,供个人复习用
文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树高级教程函数212694 人正在系统学习中 相关资源:经典刻录软件尼禄Nero6.6.1.4中文安装版及序列 -其它工具类资源…
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!